Một lỗ hổng bảo mật mới được công bố trong ModSecurity, một giải pháp tường lửa ứng dụng web (WAF) mã nguồn mở được sử dụng rộng rãi, đã phơi bày các máy chủ trước các cuộc tấn công từ chối dịch vụ (DoS). Lỗ hổng này khai thác một sai sót trong cách phần mềm phân tích cú pháp các phần tử XML rỗng.
Lỗ hổng từ chối dịch vụ (DoS) trong ModSecurity (CVE-2025-52891)
Lỗ hổng này, được định danh là CVE-2025-52891, ảnh hưởng đến các phiên bản ModSecurity từ 2.9.8 đến trước 2.9.11. Nó được đánh giá với điểm cơ bản CVSS v3 là 6.5, thuộc mức độ nghiêm trọng trung bình (moderate severity).
Vấn đề phát sinh khi tính năng SecParseXmlIntoArgs được bật (đặt thành “On” hoặc “OnlyArgs”). Nếu một yêu cầu HTTP đến có Content-Type là application/xml và chứa ít nhất một thẻ XML rỗng (ví dụ: ), ModSecurity sẽ cố gắng phân tích cú pháp nút XML này.
Cơ chế khai thác và nguyên nhân gốc rễ
Lỗ hổng được kích hoạt do phần mềm sử dụng hàm strlen() để xác định độ dài giá trị của nút XML. Khi nút XML rỗng, hàm strlen() sẽ được gọi trên một giá trị null hoặc con trỏ không hợp lệ, dẫn đến lỗi phân đoạn (segmentation fault) và làm treo tiến trình WAF.
Lỗi phân đoạn (segmentation fault) là một loại lỗi thời gian chạy xảy ra khi một chương trình cố gắng truy cập một vị trí bộ nhớ mà nó không được phép truy cập, hoặc cố gắng truy cập bộ nhớ theo cách không hợp lệ (ví dụ: ghi vào một vùng bộ nhớ chỉ đọc). Trong trường hợp này, việc gọi strlen() trên một giá trị rỗng/null, thay vì một chuỗi hợp lệ (ngay cả một chuỗi rỗng hợp lệ như ""), gây ra sự cố này.
Kẻ tấn công có thể lợi dụng sự cố này bằng cách liên tục gửi các payload XML được tạo đặc biệt, làm gián đoạn hoạt động của WAF. Việc làm treo WAF không chỉ gây ra tình trạng từ chối dịch vụ mà còn có khả năng phơi bày ứng dụng web được bảo vệ trước các cuộc tấn công khác, do ModSecurity không còn hoạt động để lọc và bảo vệ lưu lượng truy cập.
Điều quan trọng cần lưu ý là lỗ hổng này chỉ ảnh hưởng đến thư viện mod_security2 và không tác động đến thư viện libmodsecurity3 mới hơn. Thư viện libmodsecurity3 được viết bằng C++ và không dựa vào cùng logic phân tích cú pháp gây ra lỗ hổng này, do đó không bị ảnh hưởng.
Tác động tiềm tàng
Tác động chính của lỗ hổng này là khả năng gây ra các cuộc tấn công DoS chống lại máy chủ đang chạy ModSecurity. Khi một kẻ tấn công gửi một yêu cầu HTTP được tạo lỗi, tiến trình WAF sẽ bị treo. Nếu cuộc tấn công được lặp lại, nó có thể duy trì trạng thái DoS, khiến WAF không thể thực hiện chức năng bảo vệ của mình.
Hậu quả của việc WAF bị treo bao gồm:
- Gián đoạn dịch vụ: Ứng dụng web có thể trở nên không khả dụng hoặc hoạt động không ổn định do không có lớp bảo vệ WAF.
- Tăng rủi ro tấn công: Trong khi WAF không hoạt động, ứng dụng web có thể bị phơi bày trước các cuộc tấn công khai thác khác mà bình thường WAF sẽ ngăn chặn (ví dụ: SQL Injection, Cross-Site Scripting).
Theo mặc định, chỉ thị SecParseXmlIntoArgs được đặt thành “Off”. Do đó, chỉ các cài đặt ModSecurity đã bật tính năng này mới có nguy cơ bị ảnh hưởng bởi lỗ hổng CVE-2025-52891.
Biện pháp giảm thiểu và khuyến nghị
Để giảm thiểu rủi ro từ lỗ hổng này, các quản trị viên được khuyến nghị thực hiện các hành động sau:
- Vô hiệu hóa
SecParseXmlIntoArgs: Quản trị viên nên ngay lập tức vô hiệu hóa chỉ thịSecParseXmlIntoArgstrong cấu hình ModSecurity của mình nếu tính năng này không được sử dụng. - Nâng cấp lên phiên bản vá lỗi: Nâng cấp lên phiên bản 2.9.11 đã được vá lỗi của ModSecurity ngay khi phiên bản này có sẵn. Đây là biện pháp khắc phục triệt để nhất.
Các quản trị viên sử dụng ModSecurity được khuyến nghị kiểm tra lại cấu hình hiện tại của họ để xác định liệu SecParseXmlIntoArgs có được bật hay không. Việc áp dụng các biện pháp giảm thiểu hoặc cập nhật kịp thời là rất quan trọng để bảo vệ hạ tầng web và duy trì tính khả dụng của các ứng dụng.
Lỗ hổng này được báo cáo bởi Andrew Howe (@RedXanadu), với sự cảm ơn đặc biệt đến các cộng tác viên đã hỗ trợ trong việc xác định và vá lỗi.










