CERT/CC Vulnerability Note VU#867593 (original) (raw)
Web servers enable HTTP TRACE method by default
Vulnerability Note VU#867593
Original Release Date: 2003-01-24 | Last Revised: 2009-08-17
Overview
The HTTP TRACE method returns the contents of client HTTP requests in the entity-body of the TRACE response. Attackers could leverage this behavior to access sensitive information, such as cookies or authentication data, contained in the HTTP headers of the request.
Description
The HTTP TRACE method asks a web server to echo the contents of the request back to the client for debugging purposes. The HTTP TRACE method is described in the HTTP 1.1 standard (RFC 2616, section 9.8):
9.8 TRACE The TRACE method is used to invoke a remote, application-layer loop- back of the request message. The final recipient of the request SHOULD reflect the message received back to the client as the entity-body of a 200 (OK) response. ... If the request is valid, the response SHOULD contain the entire request message in the entity-body, with a Content-Type of "message/http". Responses to this method MUST NOT be cached.
As defined above, the complete request, including HTTP headers, is returned in the entity-body of a TRACE response. Using features that provide client-side HTTP protocol support, such as XMLHTTP ActiveX or XMLDOM scripting objects, a web site can cause browsers to issue TRACE requests. The site can read the TRACE response, including sensitive header information such as cookies or authentication data.
When combined with cross-domain browser vulnerabilities (VU#244729, VU#711843, VU#728563), HTTP TRACE and client-side HTTP support can be leveraged by attackers to read sensitive header information from third-party domains. This technique has been termed "Cross-Site Tracing," or XST, in a report published by WhiteHat Security. As noted in the report, the technique can be used to bypass the HttpOnly cookie attribute introduced in Microsoft Internet Explorer 6.0 SP1. HttpOnly blocks script access to the cookie property (document.cookie), but does not prevent a scripting object from reading the cookie out of an HTTP TRACE response.
Impact
Attackers may abuse HTTP TRACE functionality to gain access to information in HTTP headers such as cookies and authentication data. In the presence of other cross-domain vulnerabilities in web browsers, sensitive header information could be read from any domains that support the HTTP TRACE method.
Solution
Disable HTTP TRACE support
Based on site requirements and policy, consider disabling HTTP TRACE support in web servers. As a best practice, we recommend limiting input ("whitelisting") to the minimum set of methods required for proper operation of a given application.
Apache HTTP Server
To disable HTTP TRACE support, set
TraceEnable Off
.
Alternatively, use the Apache
module to deny HTTP TRACE requests or to permit only the methods needed to meet site requirements and policy. TRACE requests can be disabled with the following
mod_rewrite
syntax:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
Disabling HTTP TRACE with the
TraceEnable
directive is simpler, more direct, and requires less overhead than using
mod_rewrite
.
Microsoft Internet Information Services (IIS)
Use the URLScan tool to deny HTTP TRACE requests or to permit only the methods needed to meet site requirements and policy. The default configurations of Urlscan 2.5 (both baseline and SRP) only permit GET and HEAD methods.
Vendor Information
Filter by content: Additional information available
Sort by:
CVSS Metrics
Group | Score | Vector |
---|---|---|
Base | ||
Temporal | ||
Environmental |
References
Acknowledgements
This issue was researched and reported by Jeremiah Grossman of WhiteHat Security.
This document was written by Art Manion.
Other Information
CVE IDs: | None |
---|---|
Severity Metric: | 3.71 |
Date Public: | 2003-01-20 |
Date First Published: | 2003-01-24 |
Date Last Updated: | 2009-08-17 18:54 UTC |
Document Revision: | 48 |