3 phút đọc

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ả.

Mô phỏng lỗi: dữ liệu nén Brotli chế sẵn làm bộ giải nén ghi tràn ra ngoài vùng nhớ

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ế.


Server của bạn đang chạy Node.js bản nào? Kể trong cộng đồng Vibe Code & Bảo Mật nhé.

Nguồn

Chia sẻ lên Facebook

Bình luận

Đang tải bình luận…