__________________________________________________________________ Squid Proxy Cache Security Update Advisory SQUID-2005:4 __________________________________________________________________ Advisory ID: SQUID-2005:4 Date: April 23, 2005 Summary: HTTP Request Smuggling Vulnerabilities Affected versions: Squid 2.5.STABLE7 and earlier __________________________________________________________________ http://www.squid-cache.org/Advisories/SQUID-2005_4.txt __________________________________________________________________ Problem Description: Squid is susceptible to a class of attacks known as "HTTP Request Smuggling." These attacks involve sending malformed HTTP requests that cause Squid and an upstream HTTP agent (origin server or another proxy) to disagree on the boundary between HTTP requests on a persistent connection. For example, if a PUT or POST request contains two Content-Length headers, one agent may use the first value, while the other agent uses the second value. If the PUT/POST body contains data that looks like another HTTP request, the two agents become out-of-sync. This may lead to cache poisoning. Other attack vectors include whitespace in HTTP header names and extra CR characters at the end of header lines. __________________________________________________________________ Severity: This problem is serious because it allows an attacker to poison Squid's cache. However, the major aspects of this problem is easily fixed by disabling (at least temporarily) HTTP persistent connections. Some of these issues is usually minor in nature and Squid will only warn when encountering them, but if you are in a complex hierarchy of proxy servers the situation may be worse allowing bypass of certain access controls or the like. If you want Squid to be strict about this class of protocol violations and reject any such requests or responses then set the new relaxed_header_parser directive to off. __________________________________________________________________ Collateral Damage: After closing these vulnerabilities, Squid rejects certain malformed HTTP requests and responses. Your users may see failures (error messages) for sites that used to work because the protocol error was unnoticed by earlier versions of Squid, and warning messages will be seen in cache.log for even more sites where Squid can recover unambiguously. When encountering such sites it is important you work with the site owner to make their servers comply with the HTTP specifications. Most of these problems with servers not complying to the HTTP specifications can not be worked around in a safe manner. __________________________________________________________________ Updated Packages: This bug is fixed by Squid version 2.5.STABLE8. In addition, an individual patch for this issues can be found in our patch archive for version Squid-2.5.STABLE7: http://www.squid-cache.org/Versions/v2/2.5/bugs/#squid-2.5.STABLE7-header_parsing If you are using a prepackaged version of Squid then please refer to the package vendor for availability information on updated packages. __________________________________________________________________ Determining if your version is vulnerable: Squid versions up to, and including, 2.5.STABLE7 are vulnerable. __________________________________________________________________ Workarounds: The simplest workaround is to disable HTTP persistent connections. Add these lines to your squid.conf: client_persistent_connections off server_persistent_connections off This closes most issues relating to Squid and the cache, but not all forms of the attack in general. __________________________________________________________________ Contact details for the Squid project: For installation / upgrade support: Your first point of contact should be your binary package vendor. If your install is built from the original Squid sources, then the squid-users@squid-cache.org mailing list is your primary support point. (see for subscription details). For bug reporting, particularly security related bugs the squid-bugs@squid-cache.org mailing list is the appropriate forum. It's a closed list (though anyone can post) and security related bug reports are treated in confidence until the impact has been established. For non security related bugs, the squid bugzilla database should be used . __________________________________________________________________ Credits: The vulnerability was reported by Steve Orrin at Watchfire Their paper on the subject can be found from http://www.watchfire.com/resources/HTTP-Request-Smuggling.pdf __________________________________________________________________ Revision history: 2005-04-23 07:15 GMT Initial version 2005-08-03 15:46 GMT Added reference to the published paper from Watchfire 2010-09-16 07:05 GMT Reference link updates __________________________________________________________________ END