Lỗ hổng HTTP/2 mới khiến máy chủ web dễ bị tấn công DoS

Tommy_Nguyen

Moderator
Thành viên BQT
06/04/2022
23
41 bài viết
Lỗ hổng HTTP/2 mới khiến máy chủ web dễ bị tấn công DoS
Nghiên cứu mới đã phát hiện ra rằng khung CONTINUATION trong giao thức HTTP/2 có thể bị khai thác để tiến hành các cuộc tấn công từ chối dịch vụ (DoS).

1712303109814.png

Kỹ thuật này đã được chuyên gia an ninh mạng Bartek Nowotarski đặt tên là HTTP/2 CONTINUATION Flood. Vấn đề này đã được báo cáo với Trung tâm điều phối CERT (CERT/CC) vào ngày 25 tháng 1 năm 2024.

CERT/CC cho biết trong một bài đăng vào ngày 3 tháng 4 năm 2024: “Có rất nhiều các gói tin HTTP/2 được gửi đến trong một luồng duy nhất nhưng không được giới hạn đúng cách về số lượng khung CONTINUATION”.

Kẻ tấn công có thể lợi dụng điều này để gửi các gói tin đặc biệt đến máy chủ mục tiêu:
  • Gói tin có thể chứa một luồng khung CONTINUATION nhưng không được thêm vào danh sách tiêu đề trong bộ nhớ. Máy chủ vẫn sẽ xử lý và giải mã các khung này, dẫn đến tiêu thụ CPU và bộ nhớ cao bất thường.
  • Gói tin có thể chứa một luồng khung CONTINUATION làm đầy danh sách tiêu đề, dẫn đến lỗi tràn bộ nhớ (OOM). Lỗi này có thể khiến máy chủ ngừng hoạt động hoặc bị sập.
Giống như HTTP/1, HTTP/2 sử dụng các trường tiêu đề trong các yêu cầu và phản hồi. Các trường tiêu đề này sẽ bao gồm các danh sách tiêu đề, lần lượt được tuần tự hóa và chia thành các khối tiêu đề . Các khối tiêu đề sau đó được chia thành các đoạn khối và được truyền đi, khi đó những đoạn khối này được gọi là khung CONTINUATION.

"Khung CONTINUATION (loại = 0x9) được sử dụng để truyền tiếp một chuỗi các đoạn khối tiêu đề", theo tài liệu dành cho RFC 7540.

"Có thể gửi bất kỳ số lượng khung CONTINUATION nào, miễn là khung trước đó nằm trên cùng một luồng và là khung HEADERS , PUSH_PROMISE hoặc CONTINUATION và không có cờ END_HEADERS."

Khung cuối cùng chứa các tiêu đề sẽ có cờ END_HEADERS, báo hiệu cho người nhận rằng đó là kết thúc của khối tiêu đề.

Theo Nowotarski, CONTINUATION Flood gây ra mối đe dọa nghiêm trọng hơn so với cuộc tấn công Rapid Reset xuất hiện vào tháng 10 năm 2023.

Chuyên gia cho biết : “Một máy đơn lẻ (và trong một số trường hợp nhất định, chỉ có một kết nối TCP hoặc một số khung) có khả năng làm gián đoạn tính khả dụng của máy chủ, gây ra các hậu quả nghiêm trọng và từ đó dẫn đến suy giảm hiệu suất đáng kể” . “Đáng chú ý là các yêu cầu cấu thành một cuộc tấn công không hề hiển thị trong nhật ký truy cập HTTP.”

Về cốt lõi, lỗ hổng này liên quan đến việc xử lý không chính xác các HEADERS và không giới hạn số lượng các khung CONTINUATION, từ đó mở đường cho tình trạng DoS.

Nói cách khác, kẻ tấn công có thể bắt đầu luồng HTTP/2 mới tới máy chủ mục tiêu bằng cách triển khai các khung HEADERS và CONTINUATION mà không có cờ END_HEADERS, tạo ra luồng tiêu đề không bao giờ kết thúc, dẫn đến tình trạng máy chủ HTTP/2 cần tiêu thụ nhiều bộ nhớ và CPU để phân tích và lưu trữ.

1712302624900.png

Mặc dù kết quả có thể khác nhau tùy thuộc vào cách triển khai, nhưng các tác động từ kỹ thuật tấn công này là rất nghiêm trọng: nhẹ thì có thể tạo ra các sự cố tức thì, nặng thì dẫn đến tình trạng hết bộ nhớ và cạn kiệt CPU, từ đó ảnh hưởng đến tính khả dụng của máy chủ.

"RFC 9113 […] đề cập đến nhiều vấn đề bảo mật có thể phát sinh nếu các khung CONTINUATION không được xử lý chính xác. Tuy nhiên, tài liệu không đề cập đến trường hợp cụ thể trong đó các khung CONTINUATION được gửi mà không có cờ END_HEADERS cuối cùng có thể gây ra hậu quả như thế nào trên các máy chủ." Nowotarski cho biết.

Sự cố này ảnh hưởng đến một số dự án như amphp/http (CVE-2024-2653), Apache HTTP Server (CVE-2024-27316), Apache Tomcat (CVE-2024-24549), Apache Traffic Server (CVE-2024-31309), Envoy proxy (CVE-2024-27919 and CVE-2024-30255), Golang (CVE-2023-45288), h2 Rust crate, nghttp2 (CVE-2024-28182), Node.js (CVE-2024-27983), và Tempesta FW (CVE-2024-2758).

Người dùng nên nâng cấp phần mềm bị ảnh hưởng lên phiên bản mới nhất để giảm thiểu tối đa các mối đe dọa tiềm ẩn. Trong trường hợp không có cách khắc phục, bạn nên cân nhắc việc tắt tạm thời HTTP/2 trên máy chủ.

Nguồn: The Hacker News
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
làm sao để check website mình có bị vulnerability này, website mình lập trình java và chạy trên linux
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
1 Comment
Tommy_Nguyen
Chào bạn, lỗ hổng này là lỗ hổng về giao thức chứ không phải lỗ hổng trong code. Vậy nên bạn có thể tắt http/2 trên máy chủ của bạn, hoặc chờ đến khi nào có bản vá chính thức cho http/2 thì bạn cập nhật lên nhé
 
Thẻ
dos http headers http/2
Bên trên