Nguyên nhân thật là công nghệ nén của Google…Lỗ hổng Node.js, lan rộng khắp web thành 'HTTP2Shell'

Tuần trước, nguyên nhân thực sự của bản vá bảo mật Node.js đã gây chú ý cho các quản trị viên máy chủ trên toàn thế giới được xác nhận là công nghệ nén dữ liệu 'Brotli' do Google tạo ra. Khi lỗi tương tự lan sang Python, phần mềm chuyển tiếp giao tiếp web Envoy, môi trường thực thi JavaScript Bun và các phần mềm khác, ngành bảo mật đã đặt tên mới cho sự kiện này là 'HTTP2Shell'. Một lỗ hổng trên một thành phần nén đã lan rộng khắp web.
Brotli là công nghệ nén để giảm dung lượng trang web và dữ liệu, giúp truyền nhanh hơn, và được tích hợp như một thành phần trong nhiều phần mềm. Lỗi vấn đề (CVE-2026-111497, mức độ nguy hiểm 9.2) là do quá trình giải nén không thể lọc ra dữ liệu được thao tác, gây ra việc ghi vượt quá phạm vi bộ nhớ được phép, có thể dẫn đến máy chủ ngừng hoạt động, rò rỉ thông tin, hoặc trong những điều kiện nhất định, thực thi mã từ xa.
Đường lây lan được vẽ ra chỉ trong bốn ngày. Vào ngày 21 tuần trước, Node.js phát hành bản vá lỗi và lỗ hổng này được gọi là 'Node2Shell', ngày 22 nó cũng được phát hiện trên thư viện Brotli cho Python, và ngày 23 công ty bảo mật Aikido Security xác nhận vấn đề trên toàn bộ phần mềm giao tiếp HTTP, do đó được đặt tên lại thành 'HTTP2Shell'. Phạm vi ảnh hưởng bao gồm thư viện Brotli gốc (phiên bản sửa 1.2.1) và Node.js (22.23.4, 24.22.1, 26.12.1), Python Brotli, brotlicffi (1.2.1), Bun (1.4.4), Envoy (1.40.0 và những phiên bản khác). Ngay cả các nhà phát triển không sử dụng Brotli trực tiếp cũng có thể bị ảnh hưởng thông qua phần mềm có tích hợp thành phần này. Tuy nhiên, cấu hình mặc định của máy chủ web nginx và Apache nằm ngoài phạm vi ảnh hưởng.
Phần đau đớn hơn là lỗ hổng này đã được phát hiện cách đây 8 tháng. Nhóm bảo mật của OpenAI (Codex Security) đã phát hiện lỗi vào tháng 2 và báo cáo cho Google, Google đã sửa mã nguồn vào ngày 27 tháng 2. Tuy nhiên, do không nhận ra đó là lỗi bảo mật, họ không phát hành phiên bản sửa chữa chính thức. Trong 8 tháng tiếp theo không có một bản phát hành mới nào của Brotli, các bản sao tích hợp trong phần mềm trên toàn thế giới đã chạy với tình trạng dễ bị tấn công mặc dù có mã đã được sửa. Đó là sự khác biệt giữa sửa chữa và phân phối, lộ ra sự thiếu hụt cấu trúc của chuỗi cung ứng phần mềm mã nguồn mở.
May mắn thay, chưa có cuộc tấn công thực tế nào được quan sát. Tính đến ngày 24, không có báo cáo khai thác trong môi trường thực tế, và cũng chưa được đưa vào danh sách các lỗ hổng khai thác của Cơ quan An ninh Mạng và An toàn thông tin Hoa Kỳ (CISA). Chỉ có bằng chứng thực nghiệm từ phòng thí nghiệm công ty bảo mật. Ở điểm này, nó khác với 'PHP2Shell' của tuần trước. PHP2Shell, một lỗ hổng của chính động cơ PHP, là một sự kiện riêng biệt mà các nỗ lực tấn công thực tế đã được phát hiện trước khi công khai, điểm chung của hai sự kiện chỉ là chúng xảy ra trong cùng một tuần và tên 'X2Shell'.
Có khoảng trống trong phản ứng trong nước. Viện Thúc đẩy Phát triển Internet Hàn Quốc (KISA) đã đưa ra khuyến cáo cập nhật Node.js vào ngày 23, nhưng cho đến ngày 25 vẫn chưa có thông báo riêng về Brotli gốc và các phạm vi ảnh hưởng khác như Python và Envoy. Thay vì chờ thông báo, an toàn hơn để các nhà vận hành tự kiểm tra danh sách phần mềm họ sử dụng để xem liệu Brotli có được tích hợp hay không và kiểm tra phiên bản.
Trong một tuần, PHP, Node.js, và gốc rễ của nó là Brotli. Bài học mà 'tuần lễ bảo mật' này để lại là rõ ràng. Web được xây dựng trên một số ít thành phần chung, và một lỗ hổng trên một thành phần và một lần bỏ sót phân phối có thể làm rung chuyển toàn bộ. Bản vá đã nhanh, nhưng lỗ hổng tiếp theo có thể đang ngủ yên trong thành phần nào đó đã 8 tháng rồi.




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