Denial of Service nghiêm trọng: Lỗ hổng CVE 2026-49975 trên Apache

Denial of Service nghiêm trọng: Lỗ hổng CVE 2026-49975 trên Apache

Một mã khai thác proof-of-concept (PoC) đã được phát hành công khai cho một lỗ hổng Denial of Service nghiêm trọng trên Apache HTTP Server, được theo dõi là CVE-2026-49975, mang biệt danh “HTTP/2 Bomb”. Lỗ hổng này cho phép kẻ tấn công từ xa làm cạn kiệt bộ nhớ máy chủ và làm gián đoạn dịch vụ mà không cần xác thực, gây ra rủi ro đáng kể cho các tổ chức vận hành các triển khai Apache chưa được vá lỗi. Đây là một ví dụ điển hình về mối đe dọa mạng mới nổi.

Chi tiết về Lỗ hổng CVE-2026-49975

Lỗ hổng này nằm trong luồng xử lý yêu cầu HTTP/2 của Apache HTTP Server. Khi nhiều trường tiêu đề Cookie được xử lý, chúng được hợp nhất mà không được đếm đúng theo chỉ thị LimitRequestFields, do đó bỏ qua một cơ chế bảo vệ tài nguyên quan trọng.

Kẻ tấn công có thể tạo một yêu cầu HTTP/2 nhỏ, được mã hóa HPACK, có thể giải nén thành một số lượng lớn các trường tiêu đề Cookie. Trong quá trình hợp nhất tiêu đề Cookie, máy chủ buộc phải liên tục cấp phát bộ nhớ cho mỗi lần mở rộng trường.

Tiếp theo, kẻ tấn công vũ khí hóa cơ chế kiểm soát luồng của HTTP/2 bằng cách đặt kích thước cửa sổ ban đầu (initial window size) thành 0. Điều này cố tình làm trì hoãn việc truyền phản hồi và giữ cho các luồng bị ảnh hưởng mở vô thời hạn. Hành động này ngăn máy chủ giải phóng bộ nhớ đã cấp phát, tạo ra tình trạng cạn kiệt bộ nhớ kéo dài.

Các phiên bản bị ảnh hưởng

Tất cả các phiên bản Apache HTTP Server từ 2.4.17 đến 2.4.67 đều bị ảnh hưởng. Lỗ hổng đã được vá trong Apache HTTP Server 2.4.68 trở lên.

Cập nhật bản vá kịp thời là bước đầu tiên và quan trọng nhất để đối phó với lỗ hổng CVE này.

Mã khai thác và Minh họa Tấn công

Mã PoC được phát hành công khai, có sẵn trên GitHub tại EQSTLab/CVE-2026-49975, minh họa cuộc tấn công bằng một tập lệnh khai thác dựa trên Python. Cuộc tấn công có thể tái hiện trong một môi trường Docker hóa, nơi máy chủ được đóng gói với giới hạn bộ nhớ 8 GB.

Kẻ tấn công gọi tập lệnh với các tham số kiểm soát:

  • Thời gian giữ luồng (hold period).
  • Kích thước cửa sổ ban đầu (initial window size).
  • Kích thước tối đa của dữ liệu luồng (max stream data).

Trong quá trình thử nghiệm, mức sử dụng bộ nhớ quan sát được trong container Apache tăng mạnh và duy trì ở mức cao trong suốt thời gian giữ, xác nhận tình trạng cạn kiệt bộ nhớ thành công.

Ví dụ lệnh thực thi PoC:

python3 exploit.py --target HOST --port PORT --hold_period 300 --initial_window_size 0 --max_stream_data 10000000000

Cấu hình mẫu cho môi trường Docker:

version: "3.8"
services:
  apache:
    image: httpd:2.4
    ports:
      - "8080:80"
    mem_limit: 8g # Giới hạn bộ nhớ 8GB
    mem_reservation: 4g

Ảnh hưởng Hệ thống

Một cuộc tấn công thành công dẫn đến tình trạng Denial of Service từ xa, tiêu thụ bộ nhớ quá mức và trì hoãn hoặc thất bại trong việc xử lý các yêu cầu của người dùng hợp pháp. Điều này hiệu quả làm cho máy chủ ngừng hoạt động mà không cần bất kỳ quyền truy cập đặc quyền nào.

Các tổ chức cần xem xét mức độ nghiêm trọng của cuộc tấn công mạng này đối với tính sẵn sàng của dịch vụ và sự ổn định của hệ thống.

Các Chỉ số Xâm nhập (IOC)

Hiện tại, không có thông tin cụ thể về các chỉ số xâm nhập (IOC) liên quan đến các chiến dịch sử dụng lỗ hổng này. Tuy nhiên, việc theo dõi các hoạt động bất thường trên Apache HTTP Server, đặc biệt là việc tăng đột biến và kéo dài mức sử dụng bộ nhớ, có thể là dấu hiệu sớm của một cuộc tấn công.

Các chuyên gia bảo mật nên tham khảo các nguồn thông tin uy tín như CISA để cập nhật các cảnh báo và hướng dẫn mới nhất.