Lỗ hổng Brotli "Node2Shell" lan rộng: Microsoft, Node.js và các gói Python đồng loạt vá khẩn cấp
Một lỗi ghi ngoài biên trong thư viện nén Brotli của Google (CVE-2026-111497, biệt danh Node2Shell) đã buộc Microsoft, dự án Node.js và các nhà duy trì hai gói Python phải phát hành bản vá. Lỗ hổng có thể dẫn tới thực thi mã từ xa và được đánh giá ở mức nghiêm trọng.

Một lỗ hổng trong thư viện nén dữ liệu Brotli của Google, được theo dõi với mã CVE-2026-111497 và mang biệt danh Node2Shell, đang tạo ra làn sóng vá lỗi đồng loạt trên nhiều nền tảng phổ biến. Sau Node.js và các gói Python, đến lượt Microsoft phát hành bản cập nhật cho .NET, Visual Studio và PowerShell.
Minh họa lỗ hổng bảo mật trong thư viện nén Brotli
Lỗi ghi ngoài biên trong bộ giải mã Brotli
Brotli là lựa chọn quen thuộc để nén dữ liệu truyền qua web, và bộ giải mã của nó được nhúng vào rất nhiều ứng dụng lẫn thư viện. Lỗ hổng thuộc dạng ghi ngoài biên (out-of-bounds write), ảnh hưởng đến các phiên bản Brotli từ 1.0.3 đến 1.2.0. Google chấm điểm CVSS v4 là 9.2, xếp vào mức nghiêm trọng (critical). Các phiên bản 1.0.10, 1.1.1 và 1.2.1 đã chứa bản sửa.
Theo dự án Node.js, dữ liệu được chế tác đặc biệt có thể đẩy dữ liệu vượt quá giới hạn của bộ đệm mà bộ giải mã sử dụng. Hệ quả là hỏng bộ nhớ (memory corruption), khiến tiến trình bị treo hoặc rò rỉ nội dung bộ nhớ, thậm chí cho phép kẻ tấn công chưa xác thực chạy mã tùy ý.
Node.js ghi nhận công lao phát hiện thuộc về các thành viên nhóm OpenAI Codex Security. Theo OpenAI, vấn đề được tìm ra trong quá trình red-teaming, sau đó công ty đã thông báo cho nhóm phát triển Brotli và các dự án phụ thuộc thư viện này.
Đáng chú ý, bản sửa thực chất đã có từ trước thời điểm công bố. "Lỗi gốc này thực ra đã được sửa trong mã nguồn Brotli từ tháng 2, nhưng lúc đó chưa ai biết nó dẫn tới lỗ hổng bảo mật và cũng chưa có bản phát hành Brotli mới hơn", OpenAI cho biết.
Đã chứng minh được khả năng thực thi mã
Hãng bảo mật Imperva đã chứng minh có thể khai thác lỗi để thực thi mã trên image chính thức Node.js 24.22.0 cho nền tảng Linux arm64. Các nhà nghiên cứu gửi dữ liệu độc hại theo hai đường: trong phản hồi máy chủ mà ứng dụng mục tiêu tải về, và trong phần thân yêu cầu được xử lý bởi Express 5 hoặc body-parser 2.
"Bản chứng minh không thành công ở mọi lần thử. Kết quả của chúng tôi xác lập khả năng thực thi mã trên bản dựng Linux arm64 và các thiết lập ứng dụng đã kiểm thử, đồng thời cho thấy bản dựng đã vá xử lý cùng những dữ liệu đầu vào đó ra sao", Imperva cho hay. Hãng này chưa công bố mã khai thác.
Cuộc tấn công chỉ thành công nếu dữ liệu Brotli độc hại tiếp cận được bộ giải mã, chẳng hạn qua một thư viện giải nén nội dung thay cho ứng dụng. "Bất kỳ ứng dụng nào chuyển dữ liệu do kẻ tấn công kiểm soát tới bộ giải mã Brotli bị ảnh hưởng đều có thể gặp rủi ro. Điều này bao gồm phần thân yêu cầu HTTP đã nén, phản hồi tải về từ máy chủ không đáng tin cậy và các tệp đã nén", sáng kiến Patch the Planet của OpenAI cảnh báo.
Hiện chưa ghi nhận trường hợp khai thác ngoài thực tế. Một mã khai thác thử nghiệm công bố trên GitHub được cho là chỉ đạt thực thi mã trên bản dựng bị cố ý làm yếu, và một số nhà nghiên cứu lập luận lỗ hổng này chỉ có thể dùng cho tấn công từ chối dịch vụ (DoS).
Bảo mật ứng dụng và chuỗi cung ứng phần mềm
Microsoft và các gói Python vào cuộc
Bản cập nhật ngày 25/10 của Microsoft bao gồm .NET runtime 8.0.33, 9.0.22 và 10.0.14, cùng .NET 11 Release Candidate 3. Visual Studio 2019, 2022, 2026 và PowerShell 7.4, 7.5, 7.6 cũng đã được vá.
Microsoft phân loại CVE-2026-111497 là vấn đề nâng cao quyền hạn với điểm CVSS v3.1 là 8.1. Hãng đánh giá mức nghiêm trọng đối với .NET và Visual Studio, mức quan trọng đối với PowerShell, đồng thời nhận định khả năng bị khai thác là "Exploitation More Likely" (dễ bị khai thác hơn).
Với Python, bộ giải mã lỗi được tích hợp trong hai gói trên PyPI là Brotli và brotlicffi. Hai gói này đã được vá với các phiên bản 1.2.1 và 1.2.1.0.
Khi ngày càng nhiều phần mềm bị ảnh hưởng, giới nghiên cứu bắt đầu gọi lỗ hổng bằng các tên như HTTP2Shell và Broccoli2Shell. Một trang theo dõi công khai các phần mềm tự đóng gói bộ giải mã Brotli liệt kê nhiều dự án vẫn chưa vá, gồm DuckDB, Apache Arrow, 7-Zip-zstd, p7zip và EDK II. Nhóm duy trì trang này lưu ý danh sách chưa đầy đủ và không phải mọi cấu hình của các dự án đó đều phơi bày đoạn mã lỗi.
Lưu ý với các đội ngũ vận hành tại Việt Nam
Việc áp dụng bản vá không chỉ dừng ở cập nhật thư viện. Các tổ chức cần khởi động lại những dịch vụ bị ảnh hưởng và rebuild image container trên nền base đã vá, bởi các tiến trình đang chạy vẫn tiếp tục dùng đoạn mã lỗi.
Với các đội phát triển và DevOps tại Việt Nam đang vận hành Node.js, .NET hay Python trong môi trường container, việc rà soát phụ thuộc Brotli trong chuỗi cung ứng và lên lịch rebuild nên được ưu tiên trong tuần này.
Các nền tảng khác như Bun, Envoy và Istio cũng đã được cập nhật, cho thấy phạm vi ảnh hưởng của một thư viện nén tưởng chừng nhỏ bé có thể lan rất rộng trong hệ sinh thái phần mềm hiện đại.
Logo SecurityWeek


