Lỗ hổng Brotli (HTTP2Shell) tháng 10/2026: kiểm tra và vá
Mục lục9
Ngày 26/10/2026, JPCERT/CC (Nhật Bản) phát cảnh báo về lỗ hổng CVE-2026-111497 trong Brotli, công nghệ nén dữ liệu phổ biến trên web. Ngày hôm sau, CISA (Hoa Kỳ) đưa lỗ hổng này vào danh sách "đã bị khai thác trong thực tế". Một số nơi gọi nó là "HTTP2Shell" hoặc "Node2Shell".
Brotli nằm sẵn bên trong Node.js, .NET, Python, Linux và nhiều nền tảng khác. Bài viết này giúp bạn xác định hệ thống của mình có bị ảnh hưởng không và cần làm gì, theo từng bước.
Tóm tắt nhanh
- Dù bạn chưa từng cài Brotli, nó vẫn có thể nằm trong Node.js, .NET, Python hay Linux. Cần kiểm tra phiên bản của từng nền tảng đó, không phải phiên bản Brotli.
- Node.js → lên 22.23.4 / 24.22.1 / 26.12.1 trở lên. .NET → 8.0.33 / 9.0.22 / 10.0.14 trở lên. Python → brotli 1.2.1 trở lên.
- Nguy hiểm khi hệ thống giải nén dữ liệu nén nhận từ bên ngoài. Nếu website chỉ nén nội dung trước khi gửi đi thì được cho là không bị ảnh hưởng.
- Sau khi cập nhật, phải khởi động lại chương trình và build lại container.
9.2
Điểm CVSS 4.0 (Critical)
Đã bị khai thác
CISA xác nhận ngày 27/10
Không có cách né
Phải cập nhật bản vá (JPCERT/CC)
Giải thích thuật ngữ
Brotli = công nghệ nén dữ liệu do Google phát triển, thường dùng để website tải nhanh hơn. Trong giao tiếp mạng nó xuất hiện dưới tên "br".
Giải nén = đưa dữ liệu đã nén về kích thước ban đầu. Lỗ hổng lần này nằm ở khâu giải nén.
Lỗ hổng = điểm yếu của hệ thống mà kẻ xấu có thể lợi dụng để tấn công.
Lỗ hổng này là gì, nguy hiểm ra sao?
Theo JVN (cơ sở dữ liệu lỗ hổng của Nhật Bản), bộ giải nén của Brotli có lỗi ghi dữ liệu ra ngoài vùng nhớ cho phép. Khi xử lý một khối dữ liệu nén được chế tác đặc biệt, có thể xảy ra:
Bị chạy lệnh tùy ý
Kẻ tấn công có thể thực thi lệnh của họ trên máy chủ.
Lộ thông tin
Nội dung trong bộ nhớ của chương trình có thể bị lộ ra ngoài.
Dịch vụ ngừng hoạt động
Chương trình bị sập, website hoặc hệ thống không dùng được.
Tấn công đã bắt đầu
Ngày 27/10, CISA đưa lỗ hổng vào danh sách "đã bị khai thác". Một công ty bảo mật cho biết đã ghi nhận nỗ lực tấn công nhắm vào Node.js chưa vá (24.22.0) ngày 26/10. JPCERT/CC khuyến cáo: không có cách né tạm thời, hãy cập nhật bản vá.
Khi nào thì nguy hiểm? Mấu chốt là "bên giải nén"
Lỗi chỉ nằm ở khâu giải nén, không nằm ở khâu nén. Vì vậy mức độ rủi ro phụ thuộc vào việc hệ thống của bạn có giải nén dữ liệu nhận từ bên ngoài hay không.
Giải nén dữ liệu nhận được Cần chú ý
Máy chủ tự động giải nén dữ liệu nén (br) do người dùng hoặc đối tác gửi lên. Ví dụ: Express 5, Koa của Node.js, hoặc ASP.NET Core có bật giải nén request.
Đi lấy dữ liệu từ máy chủ khác Cần chú ý
Các chức năng lấy thông tin từ website hoặc API bên ngoài. Máy chủ bên kia có thể trả về dữ liệu nén độc hại. Ví dụ: webhook, chức năng nhập URL để đọc nội dung.
Chỉ nén trang web trước khi gửi đi Rủi ro thấp
Chỉ nén, không giải nén nên được cho là không chạm tới lỗi. Tuy vậy, chương trình khác trên cùng máy chủ có thể vẫn giải nén, nên vẫn nên cập nhật.
※ Rất khó nhìn từ bên ngoài để biết chức năng nào nhận dữ liệu từ đâu. Nếu không chắc, cập nhật tất cả nền tảng đang dùng là cách an toàn nhất.
Nền tảng bị ảnh hưởng và bản cần lên
Bản vá của chính Brotli là 1.0.10 / 1.1.1 / 1.2.1 (phát hành 21/10). Nhưng phần lớn Brotli nằm bên trong nền tảng khác, nên hãy đối chiếu phiên bản nền tảng bạn dùng với bảng sau.
| Nền tảng | Trạng thái | Bản cần lên | Ghi chú |
|---|---|---|---|
| Node.js 22 · 24 · 26 | Cần cập nhật | 22.23.4 / 24.22.1 / 26.12.1 trở lên | Đã vá trong đợt cập nhật 21/10 |
| Node.js 20 trở về trước | Không có bản vá | Nâng cấp lên bản còn hỗ trợ | Đã hết hỗ trợ nên không được vá |
| .NET 8 · 9 · 10 | Cần cập nhật | 8.0.33 / 9.0.22 / 10.0.14 trở lên | Bản cập nhật ngoài lịch ngày 25/10. .NET 8, 9 hết hỗ trợ ngày 10/11 |
| .NET Framework | Không ảnh hưởng | — | Theo Microsoft |
| Python (brotli) | Cần cập nhật | brotli 1.2.1 / brotlicffi 1.2.1.0 trở lên | requests, httpx, aiohttp có thể tự dùng nếu gói này được cài |
| Linux (Ubuntu, Debian…) | Tùy bản phân phối | Gói đã vá của từng bản phân phối | Ubuntu 22.04 / 24.04, Debian 12 / 13 đã có bản vá |
Ngoài ra Bun, Envoy, Istio và thư viện Brotli cho Go cũng đã có bản vá. Toàn bộ đợt cập nhật Node.js lần này được tổng hợp trong bài "Lỗ hổng Node.js tháng 10/2026".
Không thể chỉ dựa vào số phiên bản Brotli
Ví dụ với Node.js, phiên bản Brotli hiển thị bên trong vẫn là "1.2.0" cả trước và sau khi vá. Khi kiểm tra, hãy xem phiên bản của chính Node.js hoặc .NET.
Diễn biến
- Google phát hành bản vá Brotli. Cùng ngày Node.js cũng phát hành bản vá
- Mã CVE được công bố. Bản vá cho Python (brotli 1.2.1) ra mắt
- Microsoft phát hành bản cập nhật .NET ngoài lịch
- JVN và JPCERT/CC phát cảnh báo. Ghi nhận nỗ lực tấn công ở nước ngoài
- CISA đưa vào danh sách lỗ hổng đã bị khai thác (hạn xử lý cho cơ quan liên bang Mỹ: 10/11)
5 bước kiểm tra và xử lý
- Liệt kê nền tảng đang dùng
Website và hệ thống nghiệp vụ của bạn chạy trên Node.js, .NET hay Python? Nếu không rõ, hỏi bên phát triển hoặc bảo trì là nhanh nhất.
- Xem phiên bản từng nền tảng
Nếu đăng nhập được máy chủ: Node.js dùng
node -v, .NET dùngdotnet --list-runtimes, gói Python dùngpip show brotli. - Đối chiếu bảng và cập nhật
Cập nhật luôn cả các gói của hệ điều hành (Linux). Nên thử trước trên môi trường kiểm thử để chắc nghiệp vụ vẫn chạy bình thường.
- Khởi động lại và build lại
Chỉ cài bản mới thì chương trình đang chạy vẫn là bản cũ. Hãy khởi động lại chương trình, build lại container (Docker…) và các ứng dụng đóng gói sẵn rồi triển khai lại.
- Kiểm tra log bất thường
Xem chương trình có bị dừng đột ngột hay khởi động lại liên tục không. Nếu có dấu hiệu khả nghi, hãy nhờ đơn vị chuyên môn điều tra.
Chưa cập nhật ngay được thì làm gì trước?
Tại máy chủ đầu vào (reverse proxy, load balancer), từ chối các request nén dạng "br" gửi từ bên ngoài để giảm rủi ro phía nhận (theo hướng dẫn của Red Hat). Cách này không bảo vệ được phía đi lấy dữ liệu từ máy chủ khác, nên chỉ dùng tạm cho tới khi cập nhật.
Để nguyên hay xử lý ngay?
Nếu để nguyên
- Lỗ hổng đang bị khai thác vẫn còn đó
- Chỉ một khối dữ liệu độc hại cũng có thể làm sập dịch vụ
- Tệ nhất là máy chủ bị chiếm quyền
Nếu cập nhật và triển khai lại
- Lỗ hổng lần này được vá
- Nhận luôn các bản sửa khác của Node.js, .NET
- Có thể trả lời đối tác rằng "đã xử lý xong"
Nên hỏi bên phát triển, bảo trì những gì?
- Hệ thống của chúng tôi dùng Node.js, .NET hay Python, phiên bản nào?
- Khi nào có thể cập nhật bản vá cho CVE-2026-111497 (Brotli)?
- Hệ thống có chức năng giải nén dữ liệu nhận từ ngoài, hoặc đi lấy dữ liệu từ máy chủ khác không?
- Sau khi cập nhật, anh chị có khởi động lại và build lại container không?
- Hệ thống có đang dùng bản sắp hoặc đã hết hỗ trợ như Node.js 20, .NET 8, 9 không?
Nếu đang dùng phiên bản đã hoặc sắp hết hỗ trợ như Node.js 20, .NET 8, 9, hãy xem thêm bài "Bảo mật hệ thống cũ: bắt đầu từ đâu?".
Digi Dinos có thể giúp gì?
Digi Dinos là công ty phần mềm có văn phòng tại Việt Nam và Nhật Bản. Trong 8 năm, chúng tôi đã thực hiện hơn 150 dự án, với đội ngũ làm việc được bằng tiếng Nhật.
- Tiếp nhận bảo trì hệ thống có sẵn trên mọi nền tảng phổ biến: Node.js, .NET, Python, Java, PHP, Ruby…
- Xử lý lỗ hổng mới công bố: đánh giá ảnh hưởng, áp dụng bản vá và triển khai lại.
- Nâng cấp toàn diện: ngôn ngữ, framework, máy chủ và hệ điều hành.
- Không có tài liệu cũng không sao: kể cả khi nhà cung cấp cũ đã không còn và không ai hiểu hệ thống, chúng tôi tự đọc mã nguồn, dựng lại tài liệu và đề xuất kế hoạch hoàn chỉnh.
- Bảo hành vĩnh viễn: nếu phát hiện lỗi ở phần chúng tôi đã sửa, chúng tôi chịu trách nhiệm sửa, không giới hạn thời gian chừng nào hợp đồng bảo trì còn tiếp tục.
Không biết hệ thống có dùng Brotli không? Tư vấn miễn phí.
Từ xác định nền tảng, cập nhật bản vá đến triển khai lại, kể cả với hệ thống không có tài liệu.
Câu hỏi thường gặp
Tôi chưa từng cài Brotli. Có liên quan không?
Có thể có. Brotli thường nằm sẵn trong Node.js, .NET, Python, Linux mà người dùng không để ý. Trước hết hãy xác định hệ thống của bạn chạy trên nền tảng nào.
Website WordPress thông thường có bị ảnh hưởng không?
Nếu chỉ nén trang trước khi gửi đi thì được cho là không chạm tới lỗi. Tuy nhiên các gói của hệ điều hành do nhà cung cấp hosting quản lý có thể thuộc diện ảnh hưởng, nên hãy xem thông báo từ nhà cung cấp hosting.
Trình duyệt trên máy tính có sao không?
Red Hat liệt kê cả Firefox và Thunderbird trên Linux. Hãy bật tự động cập nhật cho trình duyệt và phần mềm email, luôn dùng bản mới nhất.
Chi phí khoảng bao nhiêu?
Tùy số lượng nền tảng và mức độ cũ của hệ thống. Chúng tôi khảo sát hiện trạng trước rồi báo giá, kèm kế hoạch tổng thể dễ hiểu.
Nguồn tham khảo
- JPCERT/CC: 「BrotliのC言語実装における境界外書き込みの脆弱性(CVE-2026-111497)に関する注意喚起」
- JVN: JVNVU#97400824
- CISA: "CISA Adds Two Known Exploited Vulnerabilities to Catalog" (27/10/2026)
- Node.js: "Security Releases: Wednesday, October 21, 2026"
- Microsoft .NET: "Microsoft Security Advisory CVE-2026-111497"
- GitHub Advisory Database: GHSA-9v8h-qqgm-4m35 (Python brotli)
- Ubuntu: CVE-2026-111497
- Red Hat: CVE-2026-111497