Apache mod_proxy Pattern Matching Bug Lets Remote Users Access Internal Servers
SecurityTracker Alert ID: 1026144|
SecurityTracker URL: http://securitytracker.com/id/1026144
(Links to External Site)
Date: Oct 5 2011
Host/resource access via network|
Fix Available: Yes Vendor Confirmed: Yes Exploit Included: Yes |
Version(s): 1.3.x, 2.2.21 and prior versions|
A vulnerability was reported in Apache mod_proxy. A remote user can access internal servers.|
When this system is configured in reverse proxy mode and uses the RewriteRule or ProxyPassMatch directives with a pattern match, a remote user can send a specially crafted request to access internal servers.
Context Information Security Ltd reported this vulnerability.
A remote user can access internal servers.|
The vendor has issued a patch for version 2.2.21, available at:|
Vendor URL: httpd.apache.org/ (Links to External Site)
Access control error, Input validation error|
|Underlying OS: Linux (Any), UNIX (Any), Windows (Any)|
This archive entry has one or more follow-up message(s) listed below.|
Source Message Contents
Subject: [Full-disclosure] Apache HTTP Server: mod_proxy reverse proxy exposure (CVE-2011-3368)|
-----BEGIN PGP SIGNED MESSAGE-----
Apache HTTP Server Security Advisory
Title: mod_proxy reverse proxy exposure
Product: Apache HTTP Server
Versions: httpd 1.3 all versions, httpd 2.x all versions
An exposure was reported affecting the use of Apache HTTP Server in
reverse proxy mode. We would like to thank Context Information
Security Ltd for reporting this issue to us.
When using the RewriteRule or ProxyPassMatch directives to configure a
reverse proxy using a pattern match, it is possible to inadvertently
expose internal servers to remote users who send carefully crafted
requests. The server did not validate that the input to the pattern
match was a valid path string, so a pattern could expand to an
unintended target URL.
For future releases of the Apache HTTP Server, the software will
validate the request URI, correcting this specific vulnerability. The
documentation has been updated to reflect the more general risks with
pattern matching in a reverse proxy configuration.
A configuration like one of the following examples:
RewriteRule (.*)\.(jpg|gif|png) http://images.example.com$1.$2 [P]
ProxyPassMatch (.*)\.(jpg|gif|png) http://images.example.com$1.$2
could result in an exposure of internal servers. A request of the form:
GET @other.example.com/something.png HTTP/1.1
would get translated to a target of:
This will cause the proxy to connect to the hostname
"other.example.com", as the "images.example.com@" segment would be
treated as user credentials when parsing the URL. This would allow a
remote attacker the ability to proxy to hosts other than those
expected, which could be a security exposure in some circumstances.
The request-URI string in this example,
"@other.example.com/something.png", is not valid according to the HTTP
specification, since it neither an absolute URI
("http://example.com/path") nor an absolute path ("/path"). For
future releases, the server has been patched to reject such requests,
instead returning a "400 Bad Request" error.
Apache HTTPD users should examine their configuration files to determine
if they have used an insecure configuration for reverse proxying.
Affected users can update their configuration, or apply the patch from:
For example, the above RewriteRule could be changed to:
RewriteRule /(.*)\.(jpg|gif|png) http://images.example.com/$1.$2 [P]
to ensure the pattern only matches against paths with a leading "/".
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
-----END PGP SIGNATURE-----
Full-Disclosure - We believe in it.
Hosted and sponsored by Secunia - http://secunia.com/