Nguyễn Tiến Đạt
Intern Writer
Apache Software Foundation (ASF) đã phát hành các bản cập nhật bảo mật nhằm khắc phục nhiều lỗ hổng trong Apache HTTP Server, trong đó đáng chú ý là lỗ hổng CVE-2026-23918 với điểm CVSS 8.8.
Lỗ hổng này được mô tả là lỗi “giải phóng bộ nhớ hai lần” (double free) trong quá trình xử lý giao thức HTTP/2, có thể dẫn đến tấn công từ chối dịch vụ (DoS) và thậm chí thực thi mã từ xa (RCE). Vấn đề ảnh hưởng đến phiên bản 2.4.66 và đã được khắc phục trong phiên bản 2.4.67.
Lỗ hổng được phát hiện bởi Bartlomiej Dmitruk, đồng sáng lập Striga.ai, cùng Stanislaw Strzalkowski từ ISEC.pl.
Cả hai callback này đều gọi cùng một hàm dọn dẹp, khiến một con trỏ bộ nhớ bị đưa vào danh sách xử lý hai lần. Khi hệ thống tiếp tục giải phóng bộ nhớ, lần thứ hai sẽ truy cập vào vùng nhớ đã bị giải phóng trước đó, gây ra lỗi nghiêm trọng.
Theo các nhà nghiên cứu, tấn công DoS có thể thực hiện rất dễ dàng:
Đáng chú ý, lỗ hổng này cũng có thể bị khai thác để thực thi mã từ xa. Trong môi trường thử nghiệm, các nhà nghiên cứu đã xây dựng thành công chuỗi khai thác trên nền tảng x86_64 bằng cách:
Các chuyên gia cho biết tấn công DoS hoạt động trên hầu hết hệ thống mặc định sử dụng mod_http2 và MPM đa luồng. Trong khi đó, khả năng RCE phụ thuộc vào việc sử dụng Apache Portable Runtime (APR) với bộ cấp phát mmap, vốn là mặc định trên các hệ thống Debian và Docker chính thức.
Một điểm đáng chú ý là cấu hình prefork MPM không bị ảnh hưởng bởi lỗ hổng này. Tuy nhiên, bề mặt tấn công vẫn rất lớn do mod_http2 thường được bật mặc định và HTTP/2 được sử dụng rộng rãi.
Trước mức độ nghiêm trọng của lỗ hổng, người dùng và quản trị viên được khuyến nghị cập nhật ngay lên phiên bản mới nhất để đảm bảo an toàn hệ thống.
Lỗ hổng này được mô tả là lỗi “giải phóng bộ nhớ hai lần” (double free) trong quá trình xử lý giao thức HTTP/2, có thể dẫn đến tấn công từ chối dịch vụ (DoS) và thậm chí thực thi mã từ xa (RCE). Vấn đề ảnh hưởng đến phiên bản 2.4.66 và đã được khắc phục trong phiên bản 2.4.67.
Lỗ hổng được phát hiện bởi Bartlomiej Dmitruk, đồng sáng lập Striga.ai, cùng Stanislaw Strzalkowski từ ISEC.pl.
Cách khai thác và mức độ nguy hiểm
Lỗi xảy ra trong module mod_http2, cụ thể tại quá trình xử lý luồng trong tệp h2_mplx.c. Khi một máy khách gửi khung HTTP/2 HEADERS rồi ngay lập tức gửi RST_STREAM với mã lỗi khác 0 trên cùng luồng, hệ thống sẽ kích hoạt hai callback liên tiếp.
Cả hai callback này đều gọi cùng một hàm dọn dẹp, khiến một con trỏ bộ nhớ bị đưa vào danh sách xử lý hai lần. Khi hệ thống tiếp tục giải phóng bộ nhớ, lần thứ hai sẽ truy cập vào vùng nhớ đã bị giải phóng trước đó, gây ra lỗi nghiêm trọng.
Theo các nhà nghiên cứu, tấn công DoS có thể thực hiện rất dễ dàng:
- Chỉ cần một kết nối TCP
- Gửi hai gói dữ liệu
- Không cần xác thực hay yêu cầu đặc biệt
Đáng chú ý, lỗ hổng này cũng có thể bị khai thác để thực thi mã từ xa. Trong môi trường thử nghiệm, các nhà nghiên cứu đã xây dựng thành công chuỗi khai thác trên nền tảng x86_64 bằng cách:
- Tái sử dụng vùng nhớ đã giải phóng thông qua mmap
- Tạo cấu trúc giả h2_stream
- Trỏ hàm dọn dẹp tới hàm system()
- Sử dụng vùng nhớ scoreboard của Apache để lưu trữ dữ liệu khai thác
Các chuyên gia cho biết tấn công DoS hoạt động trên hầu hết hệ thống mặc định sử dụng mod_http2 và MPM đa luồng. Trong khi đó, khả năng RCE phụ thuộc vào việc sử dụng Apache Portable Runtime (APR) với bộ cấp phát mmap, vốn là mặc định trên các hệ thống Debian và Docker chính thức.
Một điểm đáng chú ý là cấu hình prefork MPM không bị ảnh hưởng bởi lỗ hổng này. Tuy nhiên, bề mặt tấn công vẫn rất lớn do mod_http2 thường được bật mặc định và HTTP/2 được sử dụng rộng rãi.
Trước mức độ nghiêm trọng của lỗ hổng, người dùng và quản trị viên được khuyến nghị cập nhật ngay lên phiên bản mới nhất để đảm bảo an toàn hệ thống.
Được phối hợp thực hiện bởi các chuyên gia của Bkav,
cộng đồng An ninh mạng Việt Nam WhiteHat
và cộng đồng Khoa học công nghệ VnReview