Một lỗ hổng mới mang tên ‘MadeYouReset’ vừa được phát hiện trong giao thức HTTP/2, mở đường cho những cuộc tấn công từ chối dịch vụ (DoS) với quy mô lớn chưa từng thấy. Lỗ hổng này giống như một cánh cửa bí mật, cho phép kẻ tấn công vượt qua những biện pháp phòng thủ thông thường, vốn được thiết kế để ngăn chặn các cuộc tấn công DoS.
Các nhà nghiên cứu Gal Bar Nahum, Anat Bremler-Barr và Yaniv Harel đã ví von rằng: ‘MadeYouReset’ giống như một chìa khóa vạn năng, mở toang giới hạn 100 yêu cầu đồng thời trên mỗi kết nối TCP, vốn là rào cản để bảo vệ máy chủ khỏi bị ‘ngợp’ bởi quá nhiều truy cập. Thay vì chỉ gửi được tối đa 100 yêu cầu, kẻ xấu có thể ‘ném’ hàng ngàn yêu cầu một lúc, khiến máy chủ trở nên quá tải, không thể phục vụ người dùng thật và thậm chí dẫn đến sập hệ thống trong một số trường hợp.
Lỗ hổng này được định danh là CVE-2025-8671, ảnh hưởng đến nhiều sản phẩm khác nhau như Apache Tomcat (CVE-2025-48989), F5 BIG-IP (CVE-2025-54500) và Netty (CVE-2025-55163).
‘MadeYouReset’ là một thành viên mới trong ‘gia đình’ các lỗ hổng nguy hiểm của HTTP/2, sau Rapid Reset (CVE-2023-44487) và HTTP/2 CONTINUATION Flood. Cả ba đều có khả năng bị lợi dụng để gây ra các cuộc tấn công DoS trên diện rộng.
Tương tự như cách Rapid Reset và CONTINUATION Flood khai thác các khung RST_STREAM và CONTINUATION trong giao thức HTTP/2, ‘MadeYouReset’ tận dụng những điểm yếu trong cách giảm thiểu Rapid Reset. Thay vì gửi trực tiếp khung RST_STREAM để hủy yêu cầu, kẻ tấn công tạo ra các khung dữ liệu đặc biệt, ‘ép’ máy chủ phải tự mình gửi RST_STREAM đểreset kết nối.
Để ‘MadeYouReset’ phát huy tác dụng, kẻ tấn công sẽ bắt đầu bằng một yêu cầu hợp lệ. Sau đó, chúng sẽ gửi các khung dữ liệu sai lệch vào thời điểm quan trọng, khiến máy chủ vi phạm giao thức và buộc phải reset kết nối bằng RST_STREAM. Điều này giống như việc ‘lách luật’, khiến máy chủ tự ‘bắn vào chân mình’.
Sáu ‘chiêu thức’ mà kẻ tấn công có thể sử dụng để khiến máy chủ gửi khung RST_STREAM bao gồm:
- Gửi khung WINDOW_UPDATE với giá trị tăng bằng 0.
- Gửi khung PRIORITY có độ dài không phải là 5 (độ dài hợp lệ duy nhất).
- Gửi khung PRIORITY khiến một luồng phụ thuộc vào chính nó.
- Gửi khung WINDOW_UPDATE với giá trị tăng vượt quá 2^31 – 1 (kích thước cửa sổ tối đa cho phép).
- Gửi khung HEADERS sau khi máy khách đã đóng luồng (thông qua cờ END_STREAM).
- Gửi khung DATA sau khi máy khách đã đóng luồng (thông qua cờ END_STREAM).
Điểm đáng chú ý của cuộc tấn công này là nó không cần kẻ tấn công gửi khung RST_STREAM, do đó hoàn toàn ‘vô hiệu hóa’ các biện pháp phòng ngừa Rapid Reset. Mục tiêu cuối cùng vẫn là gây ra tình trạng từ chối dịch vụ.
Trung tâm Điều phối CERT (CERT/CC) cảnh báo rằng ‘MadeYouReset’ khai thác sự không thống nhất giữa các quy định của HTTP/2 và kiến trúc bên trong của nhiều máy chủ web. Điều này dẫn đến tình trạng cạn kiệt tài nguyên, tạo cơ hội cho kẻ tấn công thực hiện các cuộc tấn công DoS.
Công ty bảo mật ứng dụng Imperva nhấn mạnh rằng việc phát hiện ra các lỗ hổng Rapid Reset do máy chủ kích hoạt cho thấy sự phức tạp ngày càng tăng của các cuộc tấn công lợi dụng giao thức. Do HTTP/2 vẫn là nền tảng của cơ sở hạ tầng web, việc bảo vệ nó khỏi các cuộc tấn công tinh vi như ‘MadeYouReset’ trở nên quan trọng hơn bao giờ hết.
HTTP/1.1 Cần Phải ‘Tuyệt Chủng’
Trong bối cảnh ‘MadeYouReset’ vừa được công bố, công ty bảo mật ứng dụng PortSwigger cũng đã tiết lộ các cuộc tấn công desync (hay còn gọi là tấn công buôn lậu yêu cầu HTTP) mới lạ trên HTTP/1.1, bao gồm một biến thể của CL.0 gọi là 0.CL. Điều này khiến hàng triệu trang web có nguy cơ bị chiếm đoạt. Akamai (CVE-2025-32094) và Cloudflare (CVE-2025-4366) đã giải quyết các vấn đề này.
Tấn công buôn lậu yêu cầu HTTP là một lỗ hổng bảo mật ảnh hưởng đến giao thức lớp ứng dụng. Nó lợi dụng sự không nhất quán trong việc phân tích các yêu cầu HTTP không tuân thủ RFC của máy chủ front-end và back-end, cho phép kẻ tấn công ‘buôn lậu’ một yêu cầu và vượt qua các biện pháp bảo mật.
James Kettle của PortSwigger cho biết: ‘HTTP/1.1 có một lỗ hổng chết người: Kẻ tấn công có thể tạo ra sự mơ hồ cực độ về nơi một yêu cầu kết thúc và yêu cầu tiếp theo bắt đầu. HTTP/2+ loại bỏ sự mơ hồ này, khiến các cuộc tấn công desync gần như không thể xảy ra. Tuy nhiên, chỉ kích hoạt HTTP/2 trên máy chủ biên của bạn là không đủ – nó phải được sử dụng cho kết nối ngược dòng giữa proxy ngược và máy chủ gốc của bạn’.
Giải thích thuật ngữ:
- HTTP/2: Một phiên bản mới của giao thức HTTP (Hypertext Transfer Protocol), được sử dụng để truyền tải dữ liệu trên web một cách nhanh chóng và hiệu quả hơn so với HTTP/1.1.
- DoS (Denial of Service): Một loại tấn công mạng, trong đó kẻ tấn công cố gắng làm cho một dịch vụ hoặc tài nguyên mạng trở nên không khả dụng đối với người dùng hợp pháp.
- RST_STREAM: Một khung (frame) trong giao thức HTTP/2, được sử dụng để báo hiệu việc hủy bỏ một luồng (stream) dữ liệu.
- Khung (Frame): Đơn vị dữ liệu cơ bản trong giao thức HTTP/2.
- TCP (Transmission Control Protocol): Một giao thức truyền thông đáng tin cậy, được sử dụng để truyền dữ liệu giữa các ứng dụng trên mạng Internet.