CVE-2024-25111
High · 8.6CVSS
8.6
EPSS
65.3%
Published
Mar 6, 2024
CISA due date
—
Cloudanix analysis
A remote attacker can crash vulnerable Squid proxy servers with a specially crafted web request, disrupting web access or services that depend on them.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Network Service
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Squid versions starting with 3.5.27 and before 6.8 contain an uncontrolled recursion flaw in the HTTP chunked transfer decoder. A remote, unauthenticated client can send a specially crafted chunked-encoded HTTP message through or to the proxy that drives the decoder into excessive recursive processing, exhausting stack or process resources and causing the Squid worker/process to crash or become unavailable. The impact is availability only: it does not directly provide code execution, data theft, or privilege escalation, but it can disrupt proxying, caching, and dependent outbound or inbound web traffic. The issue is network-exploitable, low-complexity, requires no credentials or user interaction, and affects deployments that accept attacker-controlled HTTP traffic using chunked transfer encoding.
Why it matters to the business
Successful exploitation can interrupt web proxy service, blocking users, applications, or downstream services that rely on Squid for internet access, reverse proxying, caching, filtering, or egress control. In organizations where Squid is part of a critical traffic path, a crash can cause broad browsing failures, application outages, monitoring noise, and failover/load-balancer instability. Although it is not listed in CISA KEV and no mature public exploit is indicated in the supplied data, the high CVSS score and elevated EPSS probability mean exposed or internet-reachable Squid instances should be prioritized because exploitation requires only a crafted HTTP request and can be repeated to sustain denial of service.
How an attack unfolds
An attacker first identifies a Squid proxy or service path that will parse HTTP requests or responses using chunked transfer encoding. The attacker then sends a malformed or deeply structured chunked-encoded HTTP message designed to trigger uncontrolled recursion in Squid's chunk decoder. Because the flaw is reachable before authentication in affected configurations that process such traffic, the attacker does not need valid credentials or user interaction. When the vulnerable parser processes the crafted message, recursion consumes process resources or stack depth until Squid crashes, aborts, or stops handling traffic. The attacker can repeat the request, potentially from one or many sources, to keep the proxy unavailable even if a supervisor or service manager restarts it.
How to fix it
Upgrade Squid to version 6.8 or later. For source-based deployments, apply the upstream fix identified as commit 8de6aae86ad83e1684bc0647eb6fd406e34c3176 or the appropriate stable-release patch from the Squid patch archives. There is no vendor-supported workaround for the underlying parser bug. Where immediate patching is not possible, reduce exposure by restricting access to Squid listener ports to trusted networks, placing the proxy behind access controls or load balancers that can drop malformed HTTP traffic, disabling unnecessary public reachability, rate-limiting suspicious clients, and ensuring service supervision/failover is configured; these measures reduce risk but should not be treated as a fix.
How to confirm the fix worked
Confirm the installed Squid version is 6.8 or later, or verify that the upstream patch/commit 8de6aae86ad83e1684bc0647eb6fd406e34c3176 is present in the deployed build. Validate package status using the operating system package manager, container image inventory, or source build metadata, and compare against all running instances rather than only repository versions. Restart Squid after patching and verify the running binary reports the expected version with commands such as `squid -v` or equivalent service inventory tooling. Confirm that externally reachable proxy ports are limited to intended networks. Review recent service uptime and crash logs to ensure no continued instability after remediation.
Typical attack path
- Discover an exposed Squid proxy, reverse proxy, or network path where Squid processes HTTP traffic.
- Confirm the service accepts HTTP messages that use Transfer-Encoding: chunked.
- Send a crafted chunked-encoded HTTP message that triggers excessive recursive processing in Squid's HTTP chunked decoder.
- Cause the Squid process or worker to crash, abort, or become unresponsive.
- Repeat the crafted requests to sustain service disruption, especially where automatic restart restores the process after each crash.
How to detect it
To assess possible prior exploitation, correlate Squid service crashes or restarts with inbound or proxied HTTP requests using chunked transfer encoding. Review Squid `cache.log` for fatal errors, assertions, segmentation faults, abnormal termination messages, worker exits, or repeated service startup banners. Review Squid `access.log`, reverse proxy logs, load balancer logs, packet captures, and WAF logs for bursts of HTTP requests containing `Transfer-Encoding: chunked`, malformed chunk sizes, unusual chunk extensions, incomplete chunk terminators, or connections that terminate immediately before a crash. Review host telemetry such as systemd journal, syslog, container runtime logs, kernel logs, and core dump records for `squid` crashes, stack exhaustion, segmentation violations, or rapid restart loops. Because the vulnerability causes denial of service rather than persistent compromise, durable host IOCs may be limited; the strongest signal is timing correlation between crafted chunked HTTP traffic and Squid process failure.
- Transfer-Encoding: chunked
- transfer-encoding: chunked
- /var/log/squid/cache.log
- /var/log/squid/access.log
- /var/spool/squid
- FATAL: Received Segment Violation
- Squid Cache (Version
- squid.service: Main process exited
- squid.service: Failed with result
- segfault at
- traps: squid
- core dumped
- assertion failed
- kid1|
- kid2|
What your security team should do
- Prioritize patching internet-facing, partner-facing, or untrusted-client-facing Squid deployments to version 6.8 or a vendor backport containing commit 8de6aae86ad83e1684bc0647eb6fd406e34c3176.
- Inventory all Squid instances, including containers, appliances, reverse proxy tiers, egress proxies, development environments, and embedded downstream packages.
- Restrict Squid listener access to trusted networks and authenticated paths wherever operationally possible, especially until patching is complete.
- Add monitoring for Squid process crashes, rapid restarts, abnormal 5xx/connection failure spikes, and bursts of malformed chunked HTTP traffic.
- Review historical Squid access logs, cache logs, systemd/syslog entries, and load balancer/WAF logs for signs of unexplained crashes correlated with chunked transfer requests.
- Do not rely on the absence of CISA KEV status as a reason to defer remediation; the vulnerability is remotely reachable, low-complexity, and has a high availability impact.
The record
Squid is a web proxy cache. Starting in version 3.5.27 and prior to version 6.8, Squid may be vulnerable to a Denial of Service attack against HTTP Chunked decoder due to an uncontrolled recursion bug. This problem allows a remote attacker to cause Denial of Service when sending a crafted, chunked, encoded HTTP Message. This bug is fixed in Squid version 6.8. In addition, patches addressing this problem for the stable releases can be found in Squid's patch archives. There is no workaround for this issue.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | libecap | 0 | 1.0.1-2.module_el8.6.0+2741+01592ae8 |
| AlmaLinux:8 | libecap | 0 | 1.0.1-2.module_el8.6.0+3048+383bc947 |
| AlmaLinux:8 | libecap-devel | 0 | 1.0.1-2.module_el8.6.0+2741+01592ae8 |
| AlmaLinux:8 | libecap-devel | 0 | 1.0.1-2.module_el8.6.0+3048+383bc947 |
| AlmaLinux:8 | squid | 0 | 7:4.15-7.module_el8.9.0+3749+dbf371ed.10 |
| AlmaLinux:9 | squid | 0 | 7:5.5-6.el9_3.8 |
| Debian:11 | squid | 0 | No fix |
| Debian:11 | squid | 0 | 4.13-10+deb11u4 |
| Debian:12 | squid | 0 | 5.7-2+deb12u1 |
| Debian:13 | squid | 0 | 6.8-1 |
| Mageia:9 | squid | 0 | 5.9-1.2.mga9 |
| Red Hat:enterprise_linux:8::appstream | libecap | 0 | 0:1.0.1-2.module+el8.9.0+19703+a1da7223 |
| Red Hat:enterprise_linux:8::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.9.0+19703+a1da7223 |
| Red Hat:enterprise_linux:8::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.9.0+19703+a1da7223 |
| Red Hat:enterprise_linux:8::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.9.0+19703+a1da7223 |
| Red Hat:enterprise_linux:8::appstream | squid | 0 | 7:4.15-7.module+el8.9.0+21530+59b09a5b.10 |
| Red Hat:enterprise_linux:8::appstream | squid-debuginfo | 0 | 7:4.15-7.module+el8.9.0+21530+59b09a5b.10 |
| Red Hat:enterprise_linux:8::appstream | squid-debugsource | 0 | 7:4.15-7.module+el8.9.0+21530+59b09a5b.10 |
| Red Hat:enterprise_linux:9::appstream | squid | 0 | 7:5.5-6.el9_3.8 |
| Red Hat:enterprise_linux:9::appstream | squid-debuginfo | 0 | 7:5.5-6.el9_3.8 |
| Red Hat:enterprise_linux:9::appstream | squid-debugsource | 0 | 7:5.5-6.el9_3.8 |
| Red Hat:rhel_aus:8.2::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.2::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.2::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.2::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.2::appstream | squid | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_aus:8.2::appstream | squid-debuginfo | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_aus:8.2::appstream | squid-debugsource | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_aus:8.4::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.4::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.4::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.4::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_aus:8.4::appstream | squid | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_aus:8.4::appstream | squid-debuginfo | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_aus:8.4::appstream | squid-debugsource | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_e4s:8.2::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.2::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.2::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.2::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.2::appstream | squid | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_e4s:8.2::appstream | squid-debuginfo | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_e4s:8.2::appstream | squid-debugsource | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_e4s:8.4::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.4::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.4::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.4::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_e4s:8.4::appstream | squid | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_e4s:8.4::appstream | squid-debuginfo | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_e4s:8.4::appstream | squid-debugsource | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_eus:8.6::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.6::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.6::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.6::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.6::appstream | squid | 0 | 7:4.15-3.module+el8.6.0+21519+58cab4c1.6 |
| Red Hat:rhel_eus:8.6::appstream | squid-debuginfo | 0 | 7:4.15-3.module+el8.6.0+21519+58cab4c1.6 |
| Red Hat:rhel_eus:8.6::appstream | squid-debugsource | 0 | 7:4.15-3.module+el8.6.0+21519+58cab4c1.6 |
| Red Hat:rhel_eus:8.8::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.8::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.8::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.8::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_eus:8.8::appstream | squid | 0 | 7:4.15-6.module+el8.8.0+21509+962c493b.6 |
| Red Hat:rhel_eus:8.8::appstream | squid-debuginfo | 0 | 7:4.15-6.module+el8.8.0+21509+962c493b.6 |
| Red Hat:rhel_eus:8.8::appstream | squid-debugsource | 0 | 7:4.15-6.module+el8.8.0+21509+962c493b.6 |
| Red Hat:rhel_eus:9.0::appstream | squid | 0 | 7:5.2-1.el9_0.6 |
| Red Hat:rhel_eus:9.0::appstream | squid-debuginfo | 0 | 7:5.2-1.el9_0.6 |
| Red Hat:rhel_eus:9.0::appstream | squid-debugsource | 0 | 7:5.2-1.el9_0.6 |
| Red Hat:rhel_eus:9.2::appstream | squid | 0 | 7:5.5-5.el9_2.6 |
| Red Hat:rhel_eus:9.2::appstream | squid-debuginfo | 0 | 7:5.5-5.el9_2.6 |
| Red Hat:rhel_eus:9.2::appstream | squid-debugsource | 0 | 7:5.5-5.el9_2.6 |
| Red Hat:rhel_tus:8.2::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.2::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.2::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.2::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.2::appstream | squid | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_tus:8.2::appstream | squid-debuginfo | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_tus:8.2::appstream | squid-debugsource | 0 | 7:4.4-8.module+el8.2.0+21527+aa63d5ff.9 |
| Red Hat:rhel_tus:8.4::appstream | libecap | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.4::appstream | libecap-debuginfo | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.4::appstream | libecap-debugsource | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.4::appstream | libecap-devel | 0 | 0:1.0.1-2.module+el8.1.0+4044+36416a77 |
| Red Hat:rhel_tus:8.4::appstream | squid | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_tus:8.4::appstream | squid-debuginfo | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| Red Hat:rhel_tus:8.4::appstream | squid-debugsource | 0 | 7:4.11-4.module+el8.4.0+21523+3cc98f8b.8 |
| SUSE:Enterprise Storage 7.1 | squid | 0 | 4.17-150000.5.52.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | squid | 0 | 4.17-150000.5.52.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | squid | 0 | 4.17-150000.5.52.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | squid | 0 | 5.7-150400.3.26.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | squid | 0 | 5.7-150400.3.26.1 |
| SUSE:Linux Enterprise Module for Server Applications 15 SP5 | squid | 0 | 5.7-150400.3.26.1 |
| SUSE:Linux Enterprise Server 12 SP5 | squid | 0 | 4.17-4.44.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | squid | 0 | 4.17-150000.5.52.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | squid | 0 | 4.17-150000.5.52.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | squid | 0 | 5.7-150400.3.26.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | squid | 0 | 4.17-4.44.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | squid | 0 | 4.17-150000.5.52.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | squid | 0 | 4.17-150000.5.52.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | squid | 0 | 5.7-150400.3.26.1 |
| SUSE:Manager Proxy 4.3 | squid | 0 | 5.7-150400.3.26.1 |
| SUSE:Manager Server 4.3 | squid | 0 | 5.7-150400.3.26.1 |
| Ubuntu:20.04:LTS | squid | 0 | 4.10-1ubuntu1.10 |
| Ubuntu:22.04:LTS | squid | 0 | 5.7-0ubuntu0.22.04.4 |
| Ubuntu:23.10 | squid | 0 | 6.1-2ubuntu1.3 |
| Ubuntu:24.04:LTS | squid | 0 | 6.6-1ubuntu4 |
| Ubuntu:Pro:16.04:LTS | squid3 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | squid3 | 0 | No fix |
| openSUSE:Leap 15.5 | squid | 0 | 5.7-150400.3.26.1 |
| openSUSE:Tumbleweed | squid | 0 | 6.8-1.1 |
Related vulnerabilities
- CVE-2025-62168 Squid vulnerable to information disclosure via authentication credential leakage in error… Also affects libecap
- CVE-2024-45802 Squid is an open source caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. Also affects libecap
- CVE-2024-37894 Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. Also affects squid
- CVE-2025-54574 Squid is a caching proxy for the Web. Also affects squid
- CVE-2016-4554 mime_header.cc in Squid before 3.5.18 allows remote attackers to bypass intended… Also affects squid
- CVE-2016-4051 Buffer overflow in cachemgr.cgi in Squid 2.x, 3.x before 3.5.17, and 4.x before 4.0.9… Also affects squid
- CVE-2016-2390 The FwdState::connectedToPeer method in FwdState.cc in Squid before 3.5.14 and 4.0.x… Also affects squid
- CVE-2016-3948 Squid 3.x before 3.5.16 and 4.x before 4.0.8 improperly perform bounds checking, which… Also affects squid