Squid is a caching proxy for the Web. Prior to version 7.5, due to heap Use-After-Free, Squid is vulnerable to Denial of Service when handling ICP traffic. This problem allows a remote attacker to perform a reliable and repeatable Denial of Service attack against the Squid service using ICP protocol. This attack is limited to Squid deployments that explicitly enable ICP support (i.e. configure non-zero `icp_port`). This problem _cannot_ be mitigated by denying ICP queries using `icp_access` rules. Version 7.5 contains a patch.
The vulnerability results from a memory management error (CWE-416: Use-After-Free, CWE-826) in the ICP protocol handling module. When processing ICP packets, Squid references a heap memory area that has already been previously freed, leading to process instability and crash. An attacker can repeatedly send specially crafted ICP requests, triggering the same effect each time. It is important to note that applying access control rules `icp_access` does not protect against exploitation of this vulnerability — the error occurs at an earlier processing stage.
A remote, unauthenticated attacker can cause permanent and reproducible unavailability of the Squid service (Denial of Service), resulting in the inability for users and dependent systems to use the proxy server.
Squid should be updated to version 7.5, which contains the appropriate patch. If updating is not immediately possible, risk can be reduced by disabling ICP support (setting `icp_port 0` in the configuration) — however, it should be remembered that `icp_access` rules alone do not provide effective protection.
Squid versions prior to 7.5, with the vulnerability affecting only deployments where ICP protocol support has been explicitly enabled by setting a non-zero value for the `icp_port` parameter.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XSquid Cache Squid
APPSquid-Cache< 7.5
Related vulnerabilities
Squid: ujawnienie danych uwierzytelniających HTTP przez błędy obsługi
Heap buffer overflow w Squid podczas przetwarzania URN – możliwy RCE
Squid: HTTP request smuggling przez zbyt liberalny dekoder chunked
Request Smuggling i cache poisoning w Squid przez nieprawidłowy Content-Length
Squid: przepełnienie licznika nonce w Digest Authentication umożliwia RCE