Thủ thuật Ngày 22/10/2026 7 lượt xem

Cảnh Báo Bảo Mật Node.js: Vá 10 Lỗ Hổng, Lỗi Brotli Có Thể Gây RCE — Nâng Cấp Ngay Lên 26.12.1, 24.22.1, 22.23.4

Cảnh báo cho anh em dùng stack Node.js: ngày 21/10/2026, Node.js phát hành đợt vá bảo mật tháng 10 vá 10 lỗ hổng, gồm 4 lỗ hổng…

Lê Anh ĐôngFlatsome trên Google News

Sau PHP, đến lượt cộng đồng Node.js phải nâng cấp khẩn: ngày 21/10/2026, dự án Node.js đã phát hành đợt vá bảo mật tháng 10 cho cả ba dòng phiên bản đang được hỗ trợ — Node.js 26.12.1, 24.22.1 và 22.23.4 — vá tổng cộng 10 lỗ hổng, trong đó có 4 lỗ hổng mức High. Nguy hiểm nhất là lỗi ở bộ giải nén Brotli có thể dẫn tới thực thi mã từ xa (RCE). Nếu bạn đang chạy server, API hay công cụ build bằng Node.js, hãy kiểm tra phiên bản ngay sau khi đọc bài này.

Minh họa lỗ hổng bảo mật trong bộ giải nén Brotli của Node.js có thể dẫn tới thực thi mã từ xa

Đợt vá bảo mật tháng 10/2026 gồm những gì?

Đây là đợt phát hành bảo mật theo lịch của Node.js, áp dụng cho ba dòng 26.x (Current), 24.x (LTS) và 22.x (LTS). Mức nghiêm trọng cao nhất trong đợt này là High ở cả ba dòng. Ngoài 10 lỗ hổng trong chính Node.js, bản vá còn cập nhật hàng loạt thư viện đi kèm để xử lý các lỗ hổng công khai: c-ares (cả 3 dòng), OpenSSL (24.x, 22.x), SQLite (22.x), Undici (cả 3 dòng), và cập nhật kho chứng chỉ CA để thu hồi niềm tin với chứng chỉ trung gian eMudhra đã bị xâm phạm — vụ việc mà Mozilla, Google và Apple đã lần lượt chặn từ 17–19/10. Sau khi nâng cấp, ứng dụng Node.js của bạn sẽ không còn chấp nhận chứng chỉ ký bởi các khóa eMudhra bị lộ.

Bốn lỗ hổng mức High cần chú ý nhất

CVE-2026-111497 — Lỗi ghi tràn bộ nhớ ở bộ giải nén Brotli, có thể dẫn tới RCE

Đây là lỗ hổng đáng lo nhất của đợt này: bộ giải mã Brotli trong Node.js tồn tại lỗi ghi dữ liệu ra ngoài vùng nhớ cho phép (out-of-bounds write). Dữ liệu nén Brotli được chế tác khéo có thể khiến tiến trình Node.js ghi đè bộ nhớ và thực thi mã tùy ý. Mọi ứng dụng nhận và giải nén dữ liệu Brotli từ nguồn không tin cậy — ví dụ API xử lý nội dung do client gửi lên — cần được vá càng sớm càng tốt. Lỗ hổng ảnh hưởng cả ba dòng 22.x, 24.x và 26.x. Tính đến thời điểm công bố, bản tin của Node.js chưa ghi nhận bằng chứng khai thác rộng rãi ngoài thực tế, nhưng “có thể RCE” là quá đủ lý do để vá ngay trong tuần này.

CVE-2026-106069 và CVE-2026-105483 — Lách kiểm tra hostname của chứng chỉ TLS

Hai lỗ hổng cùng đánh vào khâu kiểm tra hostname khi xác thực chứng chỉ TLS — lớp bảo vệ giúp ứng dụng chắc chắn mình đang nói chuyện đúng máy chủ chứ không phải kẻ giả mạo. CVE-2026-106069 cho phép lách kiểm tra khi hostname “gần như” phân giải thành một địa chỉ IP, ảnh hưởng cả ba dòng. CVE-2026-105483 lách kiểm tra khi IP được viết bằng chữ số full-width (ký tự toàn chiều rộng), ảnh hưởng dòng 26.x và 24.x. Các dịch vụ Node.js thường xuyên gọi ra API bên ngoài qua HTTPS là nhóm cần đặc biệt lưu ý hai lỗi này.

CVE-2026-105482 — dns.resolve cắt ngắn tên miền chứa ký tự NUL

Hàm dns.resolve xử lý sai các tên chứa ký tự NUL: tên bị cắt ngắn tại vị trí ký tự NUL, khiến việc tra cứu DNS có thể bị điều hướng khác với ý định của lập trình viên — một mắt xích nguy hiểm nếu ứng dụng dùng kết quả DNS để kiểm soát truy cập hay định tuyến. Lỗ hổng này ảnh hưởng cả ba dòng 22.x, 24.x và 26.x.

Sáu lỗ hổng còn lại và các điểm cần biết thêm

3 lỗ hổng mức Medium và 3 mức Low còn lại liên quan tới: xử lý response trên kết nối keep-alive (có thể gây lẫn lộn response giữa các request), kiểm tra chứng chỉ IP chưa chặt, hiện tượng giá trị ngẫu nhiên bị lặp lại khi ứng dụng khôi phục từ startup snapshot, xử lý file ZIP và mô hình phân quyền (Permission Model). Đáng chú ý với lỗi snapshot: các ứng dụng đóng gói dạng Single Executable Application (SEA) cần được build lại bằng bản Node.js đã vá thì bản sửa mới có hiệu lực — chỉ nâng cấp runtime trên máy thôi là chưa đủ.

Minh họa nâng cấp Node.js lên phiên bản đã vá bảo mật cho máy chủ

Bảng phiên bản cần nâng cấp

Dòng Node.js đang dùng Nâng cấp lên Loại
Node.js 26.x 26.12.1 Current
Node.js 24.x 24.22.1 LTS
Node.js 22.x 22.23.4 LTS
Node.js 20.x, 18.x trở xuống Đã hết vòng đời (EOL) — không có bản vá, cần chuyển lên dòng được hỗ trợ EOL

Cách nâng cấp Node.js an toàn

  • Kiểm tra phiên bản hiện tại bằng lệnh node -v ngay tại nơi service chạy (server, container, CI) — đừng chỉ nhìn trên máy cá nhân.
  • Nếu dùng nvm: chạy nvm install 24.22.1 (hoặc đúng dòng bạn đang dùng) rồi nvm use và đặt lại alias mặc định.
  • Nếu cài qua package manager/NodeSource/Docker: cập nhật gói như bình thường; với Docker, pull image chính thức mới nhất, rebuild và redeploy container.
  • Bắt buộc restart tiến trình: process Node.js đang chạy vẫn dùng mã cũ trong bộ nhớ cho tới khi được khởi động lại. Nâng cấp xong mà không restart service (PM2, systemd, container) thì coi như chưa vá.
  • Ứng dụng SEA/snapshot: build lại bản phân phối bằng Node.js đã vá.
  • Sau nâng cấp, kiểm tra lại các kết nối HTTPS ra ngoài và các tính năng nén/giải nén dữ liệu của ứng dụng.
Minh họa máy chủ Node.js được bảo vệ sau khi nâng cấp bản vá bảo mật

Kết luận

Đợt vá tháng 10/2026 của Node.js không có lỗ hổng Critical, nhưng 4 lỗ hổng High — đặc biệt là lỗi Brotli có thể dẫn tới RCE và hai lỗi lách kiểm tra TLS — là quá đủ để xếp việc nâng cấp vào loại khẩn. Công thức rất đơn giản: kiểm tra node -v, nâng lên 26.12.1 / 24.22.1 / 22.23.4 theo đúng dòng đang dùng, restart toàn bộ tiến trình, và nếu còn kẹt ở dòng 18.x/20.x đã hết hỗ trợ thì đây là lúc bắt buộc phải chuyển dòng. Theo dõi thêm các cảnh báo bảo mật và thủ thuật lập trình tại FLATSOME.XYZ, và đọc lại chi tiết tại bài cảnh báo bảo mật Node.js này bất cứ lúc nào.

Nguồn tham khảo: bản tin bảo mật chính thức của Node.js (21/10/2026); tải bản vá tại trang download của Node.js. Cùng ngày 21/10, PHP cũng phát hành bản vá cho 2 lỗ hổng RCE — ai dùng cả hai stack nhớ cập nhật cả hai.

Chấm điểm bài đăng post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Các dịch vụ của FLATSOME.XYZ