Node.js vá 10 lỗ hổng, có lỗi chạy mã từ xa qua bộ giải nén Brotli
Bản 22.23.4, 24.22.1 và 26.12.1 phát hành ngày 21/10 vá 10 lỗi, nặng nhất là lỗi ghi tràn bộ nhớ trong bộ giải nén Brotli và mấy lỗi bỏ qua kiểm tra tên miền của chứng chỉ TLS.
Tối 21/10, Node.js phát hành bản vá cho cả ba nhánh đang được hỗ trợ: 22.23.4, 24.22.1 và 26.12.1. Đợt này sửa 10 lỗ hổng, trong đó 4 lỗi mức cao.
Hầu như mọi app JavaScript chạy phía server đều chạy trên Node.js, từ Next.js, Express cho tới các bot và tool do AI viết giúp. Vì vậy bản vá này liên quan đến gần như tất cả.
Bốn lỗi mức cao
Brotli ghi tràn bộ nhớ (CVE-2026-111497). Brotli là định dạng nén mà trình duyệt và server dùng rất nhiều. Bộ giải nén Brotli của Node.js có lỗi ghi ra ngoài vùng nhớ được cấp, và Node.js xác nhận lỗi này có thể dẫn tới chạy mã từ xa. Thông báo chính thức không nói rõ API nào bị ảnh hưởng. Nếu app của bạn giải nén dữ liệu Brotli do người khác gửi tới, hãy coi như mình bị ảnh hưởng.
Ba lỗi về DNS và kiểm tra chứng chỉ TLS:
dns.resolve cắt cụt tên miền chứa ký tự NUL (CVE-2026-105482)
Bỏ qua được bước kiểm tra tên miền của chứng chỉ khi địa chỉ IP viết bằng chữ số toàn khổ, kiểu 127.0.0.1 (CVE-2026-105483, nhánh 24 và 26)
Bỏ qua được bước kiểm tra tên miền khi tên máy phân giải lỏng lẻo ra một IP (CVE-2026-106069)
Kiểm tra tên miền là thứ bảo đảm app của bạn đang nói chuyện đúng với server thật chứ không phải kẻ đứng giữa. Ba lỗi này làm yếu đi đúng lớp bảo vệ đó.
Các lỗi còn lại đáng chú ý
Số ngẫu nhiên bị lặp lại (CVE-2026-106074, mức trung bình). Với app đóng gói dạng Single Executable Application hay dùng startup snapshot, crypto.randomUUID() và randomInt() có thể sinh cùng một dãy giá trị ở mọi lần chạy. Nếu bạn dùng chúng để tạo token hay ID phiên thì đây là chuyện lớn. Sau khi nâng cấp, nhớ đóng gói lại các app này.
Ngoài ra còn hai lỗi nhỏ ở Permission Model, một lỗi ở socket keep-alive, một lỗi khi xác thực địa chỉ IP qua chứng chỉ, và một lỗi đọc file zip. Bản vá cũng cập nhật OpenSSL, c-ares, Undici, và bỏ tin cậy một chứng chỉ trung gian của eMudhra đã bị lộ.
Nên làm gì
Kiểm tra phiên bản bằng node -v, rồi nâng lên bản vá của nhánh bạn đang dùng:
Nhánh
Bản an toàn
22.x
22.23.4
24.x
24.22.1
26.x
26.12.1
Build lại image Docker. Đổi tag node:22, node:24 thành bản mới rồi build lại. Image cũ vẫn giữ Node.js cũ.
Còn chạy Node.js 20? Nhánh này đã hết hỗ trợ và không có bản vá. Node.js nói rõ các bản hết hạn “luôn bị ảnh hưởng”, nên hãy lên 22 hoặc 24.
Hiện Node.js chưa thông báo lỗi nào bị khai thác thực tế.
Node.jslỗ hổngmáy chủ/anh/web/nodejs-brotli-480.webpNode.js · lỗ hổng · máy chủ
Node.js va 10 lo hong, co loi chay ma tu xa qua bo giai nen Brotli Ban 22.23.4, 24.22.1 va 26.12.1 phat hanh ngay 21/10 va 10 loi, nang nhat la loi ghi tran bo nho trong bo giai nen Brotli va may loi bo qua kiem tra ten mien cua chung chi TLS. Node.js lo hong may chu Toi 21/10, Node.js phat hanh ban va cho ca ba nhanh dang duoc ho tro: **22.23.4, 24.22.1 va 26.12.1**. Dot nay sua **10 lo hong**, trong do 4 loi muc cao.
Hau nhu moi app JavaScript chay phia server deu chay tren Node.js, tu Next.js, Express cho toi cac bot va tool do AI viet giup. Vi vay ban va nay lien quan den gan nhu tat ca.

## Bon loi muc cao
**Brotli ghi tran bo nho (CVE-2026-111497).** Brotli la dinh dang nen ma trinh duyet va server dung rat nhieu. Bo giai nen Brotli cua Node.js co loi ghi ra ngoai vung nho duoc cap, va Node.js xac nhan loi nay **co the dan toi chay ma tu xa**. Thong bao chinh thuc khong noi ro API nao bi anh huong. Neu app cua ban giai nen du lieu Brotli do nguoi khac gui toi, hay coi nhu minh bi anh huong.
**Ba loi ve DNS va kiem tra chung chi TLS:**
- `dns.resolve` cat cut ten mien chua ky tu NUL (CVE-2026-105482)
- Bo qua duoc buoc kiem tra ten mien cua chung chi khi dia chi IP viet bang chu so toan kho, kieu `127.0.0.1` (CVE-2026-105483, nhanh 24 va 26)
- Bo qua duoc buoc kiem tra ten mien khi ten may phan giai long leo ra mot IP (CVE-2026-106069)
Kiem tra ten mien la thu bao dam app cua ban dang noi chuyen dung voi server that chu khong phai ke dung giua. Ba loi nay lam yeu di dung lop bao ve do.
## Cac loi con lai dang chu y
**So ngau nhien bi lap lai (CVE-2026-106074, muc trung binh).** Voi app dong goi dang Single Executable Application hay dung startup snapshot, `crypto.randomUUID()` va `randomInt()` co the sinh **cung mot day gia tri o moi lan chay**. Neu ban dung chung de tao token hay ID phien thi day la chuyen lon. Sau khi nang cap, nho dong goi lai cac app nay.
Ngoai ra con hai loi nho o Permission Model, mot loi o socket keep-alive, mot loi khi xac thuc dia chi IP qua chung chi, va mot loi doc file zip. Ban va cung cap nhat OpenSSL, c-ares, Undici, va bo tin cay mot chung chi trung gian cua eMudhra da bi lo.
## Nen lam gi
**Kiem tra phien ban** bang `node -v`, roi nang len ban va cua nhanh ban dang dung:
| Nhanh | Ban an toan |
|---|---|
| 22.x | 22.23.4 |
| 24.x | 24.22.1 |
| 26.x | 26.12.1 |
**Build lai image Docker.** Doi tag `node:22`, `node:24` thanh ban moi roi build lai. Image cu van giu Node.js cu.
**Con chay Node.js 20?** Nhanh nay da het ho tro va khong co ban va. Node.js noi ro cac ban het han "luon bi anh huong", nen hay len 22 hoac 24.
Hien Node.js chua thong bao loi nao bi khai thac thuc te.
---
Server cua ban dang chay Node.js ban nao? Ke trong [cong dong Vibe Code & Bao Mat](https://www.facebook.com/groups/1867387324580254) nhe.
## Nguon
- [Wednesday, October 21, 2026 Security Releases](https://nodejs.org/en/blog/vulnerability/october-2026-security-releases), blog chinh thuc cua Node.js
- [Node.js Previous Releases](https://nodejs.org/en/about/previous-releases), lich ho tro cac nhanh Node.js
- [Node.js Fixes 10 Flaws, Including Brotli RCE and TLS Hostname Bypasses](https://securityonline.info/nodejs-security-release-october-2026/), SecurityOnline