CVE-2016-2569
High · 7.5CVSS
7.5
EPSS
31.2%
Published
Feb 27, 2016
CISA due date
—
Cloudanix analysis
A flaw in the proxy software lets a malicious website send specially crafted web responses that crash the proxy, interrupting service for everyone using it until it is restarted or updated.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Network Service
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Improper handling of string append operations in Squid's internal String objects allows a remote HTTP server to supply an excessively long Vary header that triggers an assertion failure and immediate daemon termination.
Why it matters to the business
An attacker-controlled origin server can repeatedly crash the proxy, causing widespread outage for any clients or services that rely on it for web traffic and forcing manual restarts until the instance is updated.
How an attack unfolds
An attacker positions a malicious or compromised web server that returns HTTP responses containing an extremely long Vary header. When Squid forwards a request to that server and processes the response, the malformed header triggers the string-append flaw, causing the daemon to assert and exit.
How to fix it
Upgrade Squid 3.x installations to version 3.5.15 or later and Squid 4.x installations to version 4.0.7 or later. If immediate upgrade is not possible, restrict forwarding of the Vary header or apply vendor-supplied patches that correct the string-append logic.
How to confirm the fix worked
Confirm the running Squid binary reports version 3.5.15 (or newer 3.x) or 4.0.7 (or newer 4.x). Reproduce a request to a test origin that returns a Vary header exceeding prior limits and verify the daemon no longer exits with an assertion failure.
Typical attack path
- Attacker controls or compromises an origin server reachable by the Squid instance
- Origin returns crafted HTTP response with oversized Vary header on requests proxied through Squid
- Squid attempts to append the header value to an internal String object
- Assertion fails and the Squid daemon terminates, denying service to clients
How to detect it
Search proxy and system logs for repeated Squid daemon restarts or assertion-failure messages around the time of suspected incidents; correlate with upstream HTTP responses containing unusually large Vary headers.
What your security team should do
- Prioritize upgrade of all Squid instances to the fixed releases within the next maintenance window
- Add version checks to configuration-management and container-image scanning pipelines
- Monitor proxy availability metrics and set alerts on unexpected daemon restarts
- Review and tighten origin-server trust boundaries where possible
The record
Squid 3.x before 3.5.15 and 4.x before 4.0.7 does not properly append data to String objects, which allows remote servers to cause a denial of service (assertion failure and daemon exit) via a long string, as demonstrated by a crafted HTTP Vary header.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Mageia:5 | squid | 0 | 3.4.13-1.4.mga5 |
| Red Hat:enterprise_linux:7::server | squid | 0 | 7:3.5.20-2.el7 |
| Red Hat:enterprise_linux:7::server | squid-debuginfo | 0 | 7:3.5.20-2.el7 |
| Red Hat:enterprise_linux:7::server | squid-migration-script | 0 | 7:3.5.20-2.el7 |
| Red Hat:enterprise_linux:7::server | squid-sysvinit | 0 | 7:3.5.20-2.el7 |
| Red Hat:enterprise_linux:7::workstation | squid | 0 | 7:3.5.20-2.el7 |
| Red Hat:enterprise_linux:7::workstation | squid-debuginfo | 0 | 7:3.5.20-2.el7 |
| Red Hat:enterprise_linux:7::workstation | squid-migration-script | 0 | 7:3.5.20-2.el7 |
| Red Hat:enterprise_linux:7::workstation | squid-sysvinit | 0 | 7:3.5.20-2.el7 |
| SUSE:Linux Enterprise Server 11 SP4 | squid3 | 0 | 3.1.23-8.16.30.1 |
| SUSE:Linux Enterprise Server 12 SP1 | squid | 0 | 3.3.14-20.2 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | squid3 | 0 | 3.1.23-8.16.30.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | squid | 0 | 3.3.14-20.2 |
| Ubuntu:14.04:LTS | squid3 | 0 | 3.3.8-1ubuntu6.11 |
| Ubuntu:16.04:LTS | squid3 | 0 | 3.5.12-1ubuntu7.5 |
| openSUSE:Tumbleweed | squid | 0 | 4.16-1.5 |
Related vulnerabilities
- CVE-2016-10002 Incorrect processing of responses to If-None-Modified HTTP conditional requests in Squid… 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-4553 client_side.cc in Squid before 3.5.18 and 4.x before 4.0.10 does not properly ignore the… 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-3948 Squid 3.x before 3.5.16 and 4.x before 4.0.8 improperly perform bounds checking, which… Also affects squid
- CVE-2016-3947 Heap-based buffer overflow in the Icmp6::Recv function in icmp/Icmp6.cc in the pinger… Also affects squid
- CVE-2015-5400 Squid before 3.5.6 does not properly handle CONNECT method peer responses when configured… Also affects squid
- CVE-2016-4556 Double free vulnerability in Esi.cc in Squid 3.x before 3.5.18 and 4.x before 4.0.10… Also affects squid