Lỗ hổng bảo mật nghiêm trọng của HAProxy có thể bypass các access list và nhiều hơn thế
Một lỗ hổng bảo mật quan trọng đã được tiết lộ trong HAProxy, một phần mềm cân bằng tải rất phổ biến trên máy chủ, có thể bị hacker lạm dụng để vô hiệu hóa các rule access list, truy cập trái phép vào các dữ liệu nhạy cảm, đánh cắp session của người dùng và hơn thế nữa.
Lỗ hổng bảo mật với mã định danh CVE-2021-40346, có điểm mức độ nghiêm trọng là 8,6 /10. HAProxy đã cập nhật các bản vá HAProxy ở các phiên bản như 2.0.25, 2.2.17, 2.3.14 và 2.4.4.
Hacker có thể tận dụng lỗ hổng này để:
- Bỏ qua (bypass) bất kỳ các ACL (access list control) nào đã được cài đặt trên HAProxy.
- Truy cập được đến các khu vực nhạy cảm của website (như /admin ..)
- Đánh cắp session của người dùng
- Và nhiều hơn thế
Ví dụ dễ hiểu về tấn công bypass ACL
Máy chủ HAProxy được cấu hình để chặn các truy cập vào /admin, với rule như sau:
http-request deny if { path_beg /admin/ }
Hacker thực hiện gửi một HTTP request đến Haproxy, request này chứa HTTP Header và HTTP Body "đặc biệt". Trong đó:
- HTTP Header chứa Content-Lenght sử dụng kỹ thuật integer overflow (tràn số nguyên).
- HTTP Body là dữ liệu của một HTTP Header giả mạo.
Khi HAProxy xử lý request này, thay vì chỉ truyền đến backend 1 request, nó sẽ truyền đến back-end hai request. Với request thứ hai lấy thông tin từ HTTP Body. Việc này làm bypass ACL.
HAProxy đã khắc phục lỗi này bằng cách kiểm tra độ dài Content-Length trong mỗi request HTTP. Cũng như xác định số lượng của các Content-Length xuất hiện trong mỗi request.
Demo bypass HAProxy ACL
Video thực hiện bởi Jfrog
Nếu bạn đang dùng HAproxy, hãy kiểm tra phiên bản của mình và nâng cấp lên phiên bản đã vá lỗ hổng này.