Các nhà nghiên cứu an ninh mạng đã phát hiện ra một bản khai thác remote denial-of-service ảnh hưởng đến các máy chủ web lớn, bao gồm NGINX, Apache HTTPD, Microsoft IIS, Envoy và Cloudflare Pingora.
Lỗ hổng này đã được Calif đặt mã danh là HTTP/2 Bomb.
"Hành vi dễ bị tổn thương tồn tại trong cấu hình HTTP/2 mặc định của mỗi máy chủ", công ty cho biết, đồng thời bổ sung rằng nó được OpenAI Codex phát hiện bằng cách kết hợp hai kỹ thuật đã biết: một compression bomb và một cơ chế hold kiểu Slowloris.
"Cuộc tấn công nhắm vào HPACK, sơ đồ nén tiêu đề của HTTP/2: một byte trên đường truyền trở thành một phân bổ tiêu đề đầy đủ trên máy chủ, lặp lại hàng nghìn lần trong mỗi request", Calif cho biết thêm. "Cơ chế hold là một zero-byte flow-control window giúp ngăn máy chủ giải phóng bất kỳ phần bộ nhớ nào trong số đó."
HPACK là một thuật toán nén tiêu đề chuyên dụng cho HTTP/2, được sử dụng để nén metadata của request và response bằng Huffman encoding, giúp giảm trung bình 30% kích thước tiêu đề. Nó cũng được thiết kế để có khả năng chống lại các cuộc tấn công như CRIME (viết tắt của "Compression Ratio Info-leak Made Easy") vốn có thể làm rò rỉ authentication cookies từ các tiêu đề đã nén.
Mặt khác, Slowloris là một loại tấn công denial-of-service (DoS) cho phép kẻ tấn công làm quá tải máy chủ mục tiêu bằng cách mở và duy trì nhiều kết nối HTTP đồng thời giữa kẻ tấn công và mục tiêu. Đây là một cuộc tấn công lớp ứng dụng (application-layer attack).
HTTP/2 Bomb được lấy cảm hứng từ nhiều phương pháp đã biết như HPACK Bomb (còn gọi là CVE-2016-6581), được công bố lần đầu vào năm 2016, cũng như CVE-2025-53020, một lỗ hổng cạn kiệt bộ nhớ trong triển khai HTTP/2 của Apache httpd, và hai lỗi DoS trong Apache HTTP Server thông qua các CONTINUATION frames được tạo đặc biệt (CVE-2016-8740) và tình trạng worker-thread starvation (CVE-2016-1546) trong một kết nối HTTP/2.
"Điểm mới ở đây là nguồn gốc của sự khuếch đại (amplification)", Calif cho biết. "Kiểu bomb cổ điển nhồi một giá trị lớn vào bảng và tham chiếu nó liên tục, vì vậy các máy chủ đã học cách giới hạn tổng kích thước tiêu đề được giải mã. Biến thể của chúng tôi đi theo hướng ngược lại: tiêu đề gần như trống rỗng, và sự khuếch đại đến từ việc ghi chép (bookkeeping) theo từng mục mà máy chủ phân bổ xung quanh nó. Giới hạn kích thước giải mã không bao giờ được kích hoạt vì hầu như không có gì để giải mã."
Trong một kịch bản tấn công giả định, một máy tính gia đình với kết nối 100Mbps có khả năng làm cho một máy chủ bị lỗ hổng không thể truy cập được chỉ trong vài giây. Hơn nữa, một client duy nhất có thể tiêu thụ và chiếm giữ 32GB bộ nhớ máy chủ của Apache HTTPD và Envoy trong khoảng 20 giây.
Các biện pháp giảm thiểu
Để chống lại lỗ hổng này, người dùng được khuyến nghị áp dụng các biện pháp giảm thiểu sau:
- NGINX - Nâng cấp lên phiên bản 1.29.8+, bổ sung chỉ thị max_headers với giá trị mặc định là 1000. Nếu không thể nâng cấp, khuyến nghị tắt HTTP/2 bằng lệnh http2 off;.
- Apache HTTPD - Đã được khắc phục trong mod_http2 v2.0.41. Nếu không thể nâng cấp, khuyến nghị thiết lập Protocols http/1.1 để tắt HTTP/2.
- Microsoft IIS, Envoy, và Cloudflare Pingora - Hiện chưa có bản vá tại thời điểm viết bài.
"Sai lầm sâu xa hơn là đặc tả này chỉ coi rủi ro bộ nhớ đơn thuần là tỷ lệ khuếch đại, và tỷ lệ chỉ là một nửa của vấn đề," Calif nhận định. "Một bộ khuếch đại tỷ lệ 70:1 sẽ vô hại nếu bộ nhớ được giải phóng khi request hoàn tất. Nó trở thành một cuộc tấn công vì HTTP/2 cho phép client duy trì kết nối mở gần như miễn phí, giữ chặt từng byte đã được phân bổ trong bao lâu tùy thích."