
Lỗ hổng QPACK có thể làm sập máy chủ HTTP/3, tăng bộ nhớ lên 4000 lần
"Multiple HTTP/3 server implementations are vulnerable to denial-of-service (DoS) attacks due to flaws in the QPACK header compression scheme. Attackers can send small, compressed headers that expand to consume excessive memory, potentially causing server crashes. Fixes are available for quic-go, Cloudflare quiche, lsquic, and Wireshark (CVE-2025-64702, CVE-2026-12523, CVE-2025-13945), but Bun, h3, and aioquic remain unpatched."
Lỗ hổng QPACK có thể dẫn đến tấn công từ chối dịch vụ (DoS), làm sập máy chủ HTTP/3. Việc khai thác không yêu cầu xác thực, gây ra rủi ro cao.
Các dịch vụ sử dụng HTTP/3 có thể bị gián đoạn, ảnh hưởng đến trải nghiệm người dùng và doanh thu. Việc khắc phục đòi hỏi thời gian và nguồn lực để nâng cấp phần mềm.
FoxIO vừa công bố lỗ hổng trong QPACK, cơ chế nén header của HTTP/3, có thể gây sập máy chủ. Kẻ tấn công gửi header nén nhỏ, sau khi giải nén sẽ chiếm rất nhiều bộ nhớ, thậm chí khiến máy chủ ngừng hoạt động. Các bản vá đã có cho quic-go, Cloudflare quiche, lsquic và Wireshark (CVE-2025-64702, CVE-2026-12523, CVE-2025-13945). Bun, h3 và aioquic hiện chưa được vá.
FoxIO phát hiện lỗ hổng tương tự trong 7/10 triển khai HTTP/3 họ kiểm tra. Nguyên nhân chính là QPACK, cơ chế nén header để giảm dung lượng truyền. Máy chủ cần giới hạn kích thước header sau khi giải nén. Các triển khai bị ảnh hưởng chỉ giới hạn dữ liệu nén ban đầu, hoặc áp dụng giới hạn quá muộn, dẫn đến một request có thể mở rộng thành hàng trăm nghìn mục header, chiếm dụng bộ nhớ.
Các thư viện phổ biến như quic-go (nền tảng của Caddy, Traefik, cloudflared), lsquic (LiteSpeed Web Server, OpenLiteSpeed) và Bun đều bị ảnh hưởng. Kẻ tấn công không cần đăng nhập, và vì HTTP/3 chạy trên UDP, request sẽ đến máy chủ trước khi các bộ lọc thông thường hoạt động.
Bảng sau tóm tắt trạng thái vá lỗi (tính đến 22/10/2026):
| Stack | Trạng thái | Phiên bản vá | Identifier | |---------------|------------|--------------|--------------| | quic-go | Đã vá | 0.57.0 | CVE-2025-64702 | | Cloudflare quiche | Đã vá | 0.29.3 | CVE-2026-12523 | | lsquic | Đã vá | 4.9.0 | | | Wireshark | Đã vá | 4.6.2 / 4.4.12 | CVE-2025-13945 | | Bun | Chưa vá | — | | | h3 (hyperium) | Chưa vá | — | | | aioquic / mitmproxy | Chưa vá | — | |
FoxIO cho biết IIS, Envoy, ngtcp2/nghttp3 và Google's quiche không bị ảnh hưởng vì họ giới hạn header sau khi giải mã. Mức độ khuếch đại bộ nhớ khác nhau tùy stack. Ví dụ, quic-go có thể tăng từ 1MB nén lên 15MB sau khi giải nén (tỷ lệ 17:1). Bun có mức khuếch đại cao nhất, lên đến 4000 lần.
Bun đặc biệt nghiêm trọng. Server HTTP/3 của Bun sử dụng lsquic nhưng thay thế cơ chế giới hạn bộ nhớ bằng code riêng, chỉ kiểm tra từng header mà không theo dõi tổng lượng. Khi tổng kích thước vượt quá 2GB, bộ đếm tràn về 0 và server rơi vào vòng lặp vô hạn. Một stream 516KB có thể khiến CPU đạt 100% và không phục hồi.
Câu hỏi thường gặp
QPACK là gì?
QPACK là cơ chế nén header được sử dụng trong HTTP/3 để giảm dung lượng dữ liệu truyền đi. Lỗ hổng nằm ở cách các server xử lý header sau khi giải nén.
Những stack nào bị ảnh hưởng?
quic-go, Cloudflare quiche, lsquic, Bun, h3 và aioquic đều bị ảnh hưởng. Wireshark cũng có lỗ hổng, nhưng chỉ ảnh hưởng đến quá trình phân tích gói tin, không phải server.
Làm thế nào để khắc phục?
Nâng cấp lên phiên bản đã vá lỗi. Nếu không thể nâng cấp ngay, hãy xem xét các biện pháp tạm thời như tắt HTTP/3 (Bun) hoặc giới hạn kích thước header (h3).
Góc nhìn của Orange Cloud
Theo chúng tôi, các doanh nghiệp Việt Nam sử dụng các stack chưa được vá lỗi cần ưu tiên nâng cấp. Với Bun, việc tạm thời tắt HTTP/3 có thể là giải pháp trước mắt. Điều đáng chú ý là lỗ hổng này cho thấy tầm quan trọng của việc kiểm tra và giới hạn kích thước dữ liệu sau khi giải nén, đặc biệt trong các giao thức mới như HTTP/3.