HTTP/2 Bomb: Lỗ hổng nghiêm trọng đe dọa máy chủ web

HTTP/2 Bomb: Lỗ hổng nghiêm trọng đe dọa máy chủ web

Một khai thác từ chối dịch vụ từ xa mới được công bố, có tên gọi là HTTP/2 Bomb, đang nhắm mục tiêu vào các cấu hình HTTP/2 mặc định của các máy chủ web phổ biến nhất thế giới. Các máy chủ bị ảnh hưởng bao gồm nginx, Apache httpd, Microsoft IIS, Envoy, và Cloudflare Pingora. Khai thác này cho phép một kẻ tấn công duy nhất, chỉ với kết nối internet gia đình, làm cạn kiệt hàng chục gigabyte bộ nhớ máy chủ chỉ trong vài giây, gây ra một cuộc tấn công mạng nghiêm trọng.

Lỗ hổng HTTP/2 Bomb này được phát hiện bởi nhà nghiên cứu Quang Luong. Anh đã sử dụng công cụ Codex và kết hợp hai kỹ thuật vốn đã được biết đến trong cộng đồng bảo mật gần một thập kỷ: một HPACK compression bomb và một kiểu giữ kết nối Slowloris.

Cơ chế khai thác HTTP/2 Bomb

Điểm mới lạ của biến thể này không nằm ở các nguyên thủy khai thác riêng lẻ mà ở cách chúng được kết hợp một cách chính xác. Quan trọng hơn, sự khuếch đại tác động lại bắt nguồn từ các điểm khác biệt trong cách triển khai giao thức.

Tấn công nén HPACK (HPACK Compression Bomb)

HPACK (RFC 7541) là một lược đồ nén tiêu đề có trạng thái của HTTP/2. Mỗi bên duy trì một bảng động gồm các tiêu đề đã thấy gần đây. Người gửi có thể chèn một tiêu đề một lần và sau đó tham chiếu nó bằng một chỉ mục một byte duy nhất.

Tuy nhiên, bên nhận phải vật chất hóa một bản sao đầy đủ của tiêu đề đó trong mỗi lần tham chiếu. Theo Jun Rong và Duc Phan, lỗ hổng HTTP/2 Bomb này hoạt động bằng cách đưa một tiêu đề vào bảng động, sau đó phát ra hàng nghìn tham chiếu chỉ mục 1 byte trong một yêu cầu duy nhất.

Điều này chỉ tốn của kẻ tấn công một byte dây nhưng buộc máy chủ phải cấp phát từ ~70 byte (nginx, IIS, Pingora) đến ~4.000 byte (Apache httpd, Envoy) cho mỗi tham chiếu. Quá trình này tạo ra một tỷ lệ khuếch đại bộ nhớ đáng kể.

Để tìm hiểu thêm về đặc tả HPACK, bạn có thể tham khảo RFC 7541.

Giữ kết nối kiểu Slowloris và Điều khiển luồng (Flow Control)

Thành phần thứ hai của HTTP/2 Bomb khai thác cơ chế điều khiển luồng trên mỗi luồng của HTTP/2 (RFC 9113). Klien quảng cáo một cửa sổ điều khiển luồng không byte, ngăn máy chủ hoàn thành phản hồi của mình.

Một dòng liên tục các khung WINDOW_UPDATE 1 byte liên tục đặt lại thời gian chờ gửi. Điều này giữ nguyên mọi cấp phát bộ nhớ miễn là kẻ tấn công mong muốn, biến sự khuếch đại tạm thời thành một trạng thái chiếm giữ bộ nhớ vĩnh viễn.

Cơ chế này kết hợp hiệu quả việc khuếch đại bộ nhớ từ HPACK với việc duy trì trạng thái của các kết nối, dẫn đến tình trạng cạn kiệt tài nguyên máy chủ. Tham khảo RFC 9113 để biết thêm chi tiết về điều khiển luồng HTTP/2.

Tác động và phạm vi của lỗ hổng HTTP/2 Bomb

Một phân tích sử dụng Shodan đã xác định được hơn 880.000 trang web công cộng hỗ trợ HTTP/2 và đang chạy một trong các máy chủ bị ảnh hưởng. Mặc dù nhiều trang web trong số này được đặt phía trước bởi các CDN giúp giảm phơi nhiễm trực tiếp, nhưng rủi ro vẫn tồn tại.

Nhà nghiên cứu Quang Luong đã nhấn mạnh rằng ngay cả khi có CDN, nguy cơ từ HTTP/2 Bomb vẫn là một mối đe dọa đáng kể. Khả năng một kẻ tấn công duy nhất làm cạn kiệt hàng chục gigabyte bộ nhớ trong giây là cực kỳ nghiêm trọng đối với bất kỳ hệ thống nào.

Việc hệ thống bị tấn công DoS có thể dẫn đến gián đoạn dịch vụ nghiêm trọng, mất mát doanh thu và tổn hại danh tiếng. Đây là một nguy cơ bảo mật cần được các tổ chức hết sức quan tâm.

Chi tiết hơn về phát hiện này có thể được tìm thấy trên blog của nhà nghiên cứu: Codex Discovered A Hidden HTTP/2 Bomb.

Bỏ qua giới hạn trường tiêu đề với Cookie Header

Đối với các máy chủ giới hạn số lượng trường tiêu đề thay vì kích thước đã giải mã (như Apache và Envoy), khai thác này sử dụng cách bỏ qua qua tiêu đề Cookie. RFC 9113 §8.2.3 cho phép rõ ràng việc chia một tiêu đề Cookie thành một trường cho mỗi “crumb” (mảnh).

Cả Apache lẫn Envoy đều không tính các “crumb” này vào giới hạn trường. Điều này cho phép kẻ tấn công tạo ra một lượng lớn các mục trong bảng động HPACK mà không vi phạm các giới hạn được đặt ra.

Cụ thể, Envoy nối thêm mỗi “crumb” vào một bộ đệm. Một giá trị cookie 4 KB được tham chiếu 32.768 lần tạo ra tỷ lệ logic ~3.600:1, với tỷ lệ RSS đo được đạt ~5.700:1 trên một luồng khi chi phí cấp phát tích lũy.

Apache httpd xây dựng lại toàn bộ chuỗi cookie đã hợp nhất trên mỗi “crumb”, giữ các bản sao cũ tồn tại cho đến khi luồng được dọn dẹp, mang lại tỷ lệ ~4.000:1 ngay cả đối với một cookie rỗng. Cơ chế này đặc biệt hiệu quả trong việc gây ra tình trạng cạn kiệt bộ nhớ.

Các mã định danh CVE liên quan và cập nhật bản vá

Biến thể của HTTP/2 Bomb ảnh hưởng đến Apache httpd đã được gán mã CVE-2026-49975. Việc gán mã này diễn ra sau khi được tiết lộ có trách nhiệm vào ngày 27 tháng 5 năm 2026, với bản sửa lỗi được Stefan Eissing cam kết cùng ngày.

Bản sửa lỗi cho nginx đã được phát hành trong phiên bản 1.29.8. Bản cập nhật này đã nhập chỉ thị max_headers với giới hạn mặc định là 1.000 tiêu đề. Việc cập nhật bản vá này là rất quan trọng để giảm thiểu lỗ hổng CVE này.

Các lỗ hổng CVE liên quan trước đây bao gồm:

  • CVE-2016-6581 (HPACK Bomb gốc, do Cory Benfield đặt tên).
  • CVE-2025-53020 (Apache httpd khuếch đại ~4.000:1, do Gal Bar Nahum phát hiện).
  • CVE-2016-8740.
  • CVE-2016-1546.

Các tổ chức cần ưu tiên bản vá bảo mật cho các máy chủ của mình để tránh trở thành nạn nhân của tấn công mạng.

Bản chất của lỗ hổng và khuyến nghị kỹ thuật

Nhóm nghiên cứu kết luận rằng lớp lỗ hổng HTTP/2 Bomb này phản ánh một lỗi trong đặc tả của RFC 7541. Mục 7.3 của RFC này chỉ xem xét rủi ro bộ nhớ dưới dạng tỷ lệ khuếch đại và coi SETTINGS_HEADER_TABLE_SIZE là một giới hạn đủ.

Tuy nhiên, đặc tả này không tính đến chi phí quản lý trên mỗi mục. Sự khuếch đại trong khai thác này đến hoàn toàn từ siêu dữ liệu cấp phát xung quanh các tiêu đề gần như trống rỗng, bỏ qua mọi giới hạn kích thước đã giải mã.

Thực tế là năm triển khai độc lập đã đọc cùng một phần và đều mắc cùng một lỗi đã minh họa rõ ràng nhược điểm này trong đặc tả. Điều này cho thấy tầm quan trọng của việc xem xét các chi phí ẩn trong quá trình cấp phát tài nguyên.

Để bảo vệ hệ thống khỏi lỗ hổng HTTP/2 Bomb và các tấn công mạng tương tự, việc cập nhật các máy chủ web lên phiên bản mới nhất với các bản vá bảo mật là điều cần thiết. Ngoài ra, việc triển khai các giải pháp bảo mật lớp ứng dụng (WAF/WAAP) có thể giúp phát hiện và ngăn chặn các cuộc tấn công khai thác HTTP/2 Bomb.

Nguồn lực và tài liệu tham khảo

Các script Proof-of-Concept (PoC), phòng thí nghiệm Docker và các bài viết chuyên sâu cho từng máy chủ đều có sẵn tại kho lưu trữ GitHub của Codex:

https://github.com/califio/publications/tree/main/MADBugs/http2-bomb

Nhà nghiên cứu Quang Luong sẽ trình bày các kỹ thuật này tại hội nghị Real World AI Security ở Stanford vào tháng 6 năm 2026, cung cấp thêm thông tin chi tiết về lỗ hổng CVE và các biện pháp giảm thiểu.