2 lỗ hổng DoS đã được xác định trong nhiều triển khai khác nhau của giao thức HTTP/8

Các nhà nghiên cứu từ Netflix và Google tiết lộ Có tám lỗ hổng trong các triển khai khác nhau của giao thức HTTP/2 có thể gây ra sự từ chối dịch vụ bằng cách gửi một luồng yêu cầu mạng theo một cách nhất định. Các sự cố này ảnh hưởng đến hầu hết các máy chủ HTTP có hỗ trợ HTTP/2 ở một mức độ nào đó và khiến quy trình chạy hết bộ nhớ hoặc tạo ra quá nhiều tải CPU. Các bản cập nhật loại bỏ lỗ hổng đã được trình bày trong nginx 1.16.1/1.17.3 и H2O 2.2.6, nhưng bây giờ không có sẵn cho Apache httpd và sản phẩm khác.

Các vấn đề xảy ra do sự phức tạp được đưa vào giao thức HTTP/2 liên quan đến việc sử dụng cấu trúc nhị phân, hệ thống hạn chế luồng dữ liệu trong các kết nối, cơ chế ưu tiên luồng và sự hiện diện của các thông báo điều khiển giống ICMP hoạt động tại kết nối HTTP/2. cấp độ (ví dụ: cài đặt ping, đặt lại và luồng). Nhiều cách triển khai đã không giới hạn đúng luồng thông báo điều khiển, không quản lý hiệu quả hàng đợi ưu tiên khi xử lý yêu cầu hoặc sử dụng cách triển khai thuật toán điều khiển luồng dưới mức tối ưu.

Hầu hết các phương thức tấn công đã xác định đều bắt nguồn từ việc gửi một số yêu cầu nhất định đến máy chủ, dẫn đến việc tạo ra một số lượng lớn phản hồi. Nếu máy khách không đọc dữ liệu từ ổ cắm và không đóng kết nối, hàng đợi đệm phản hồi ở phía máy chủ sẽ liên tục đầy. Hành vi này tạo ra tải cho hệ thống quản lý hàng đợi để xử lý các kết nối mạng và tùy thuộc vào các tính năng triển khai, dẫn đến cạn kiệt tài nguyên bộ nhớ hoặc CPU hiện có.

Các lỗ hổng được xác định:

  • CVE-2019-9511 (Dribble dữ liệu) - kẻ tấn công yêu cầu một lượng lớn dữ liệu vào nhiều luồng bằng cách thao túng kích thước cửa sổ trượt và mức độ ưu tiên của luồng, buộc máy chủ phải xếp hàng dữ liệu theo khối 1 byte;
  • CVE-2019-9512 (Ping Flood) - kẻ tấn công liên tục đầu độc các tin nhắn ping qua kết nối HTTP/2, khiến hàng đợi nội bộ chứa các phản hồi đã gửi tràn ngập ở phía bên kia;
  • CVE-2019-9513 (Resource Loop) - kẻ tấn công tạo nhiều luồng yêu cầu và liên tục thay đổi mức độ ưu tiên của các luồng, khiến cây ưu tiên bị xáo trộn;
  • CVE-2019-9514 (Reset Flood) - kẻ tấn công tạo nhiều luồng
    và gửi một yêu cầu không hợp lệ qua từng luồng, khiến máy chủ gửi các khung RST_STREAM nhưng không chấp nhận chúng để lấp đầy hàng đợi phản hồi;

  • CVE-2019-9515 (Lũ cài đặt) - kẻ tấn công gửi một luồng khung “CÀI ĐẶT” trống, để phản hồi lại, máy chủ phải xác nhận đã nhận từng yêu cầu;
  • CVE-2019-9516 (Rò rỉ tiêu đề có độ dài 0) – kẻ tấn công gửi một luồng tiêu đề có tên null và giá trị null, đồng thời máy chủ phân bổ bộ đệm trong bộ nhớ để lưu trữ từng tiêu đề và không giải phóng nó cho đến khi phiên kết thúc ;
  • CVE-2019-9517 (Bộ đệm dữ liệu nội bộ) - kẻ tấn công mở
    Cửa sổ trượt HTTP/2 để máy chủ gửi dữ liệu mà không bị hạn chế, nhưng vẫn đóng cửa sổ TCP, ngăn không cho dữ liệu thực sự được ghi vào ổ cắm. Tiếp theo, kẻ tấn công gửi yêu cầu yêu cầu phản hồi lớn;

  • CVE-2019-9518 (Lũ khung trống) - Kẻ tấn công gửi một luồng khung thuộc loại DATA, HEADERS, CONTINUATION hoặc PUSH_PROMISE nhưng với tải trọng trống và không có cờ chấm dứt luồng. Máy chủ dành thời gian xử lý từng khung hình, không tương xứng với băng thông mà kẻ tấn công tiêu thụ.

Nguồn: opennet.ru

Thêm một lời nhận xét