Chuyển đến nội dung chính

Lỗ hổng Brotli (HTTP2Shell) tháng 10/2026: kiểm tra và vá

  • Ngày đăng
  • 9 phút đọc
Ảnh minh họa: 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ảngTrạng tháiBản cần lênGhi chú
Node.js 22 · 24 · 26Cần cập nhật22.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ướcKhô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 · 10Cần cập nhật8.0.33 / 9.0.22 / 10.0.14 trở lênBả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 FrameworkKhông ảnh hưởng—Theo Microsoft
Python (brotli)Cần cập nhậtbrotli 1.2.1 / brotlicffi 1.2.1.0 trở lênrequests, 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ốiGói đã vá của từng bản phân phốiUbuntu 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ý

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

  2. 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ùng dotnet --list-runtimes, gói Python dùng pip show brotli.

  3. Đố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.

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

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

Bài viết liên quan