CVE-2019-12527 | Cảnh báo khai thác mã từ xa trên Squid proxy
Tổng quan
Lỗ hổng xảy ra trên Squid Proxy khi xử lý HTTP request header có trường xác thực với độ dài quá lớn có thể xảy ra lỗi tràn bộ đệm Heap. Kẻ tấn có thể khai thác lỗ hổng này bằng cách gửi một Request có cấu trúc đặc biệt đến Squid Proxy. Nếu khai thác thành công có thể dẫn đến thực thi mã tùy ý trên máy cài đặt Squid.
Mô tả chi tiết
Kẻ tấn công gửi 1 request có cấu trúc đặc biệt đến Squid proxy là khai thác thành công, không cần tương tác người dùng.
Trường Authorization trong HTTP Head có định dạng:
Authorization:
Squid proxy sử dụng hàm HttpHeader::getAuth() để parse và xử lý trường Authorization có là "Basic"
Trong hàm getAuth(), hàm base64_decode_update() sẽ được gọi để decode giá trị
trong , kết quả sẽ lưu ra 1 buffer có size max là 8192 byte. Nếu có độ dài lớn hơn nhiều 8192 byte, kết quả sau khi decode có thể gây tràn buffer 8192 byte (khai thác lỗ hổng Heap Buffer Overflow). Kẻ tấn công có thể điều chỉnh dữ liệu ghi đè lên các vùng nhớ thích hợp, nếu thành công thì có thể dẫn đến khai thác mã từ xa trên máy cài Squid, không thành công cũng có thể khiến Squid bị crash, gây ra DoS.
Lưu ý:
Squid Proxy là phần mềm proxy cực kì phổ biến trong môi trường mạng doanh nghiệp. Đây là lỗ hổng ảnh hưởng mức độ nghiêm trọng, đã có PoC khai thác, cần thực hiện cập nhật lên bản vá mới nhất.
Điều kiện khai thác
Kẻ tấn công có thể gửi request đến Squid proxy phiên bản bị ảnh hưởng.
Dấu hiệu nhận biết/Cách khắc phục
Cập nhật lên phiên bản Squid mới nhất.