Vulnerability Note VU#402580
Jetty HTTP server directory traversal vulnerability
Overview
A vulnerability in the Jetty HTTP server could allow a remote attacker to gain access to files outside of the normal document tree.
Description
Jetty provides an HTTP server, HTTP client, and javax.servlet container. An error in the way canonical paths are interpreted in the HTTP server's URI handler results in a directory traversal vulnerability. This vulnerability affects all versions of Jetty up to and including jetty 6.1.16 and 7.0.0.M2. In order for a system to be vulnerable, it must either be using the DefaultServlet with support for aliases explicitly enabled or the ResourceHandler class to serve static content. The vendor reports that systems running Jetty on Unix-like operating systems must also contain a directory name ending a '?' character in the web application or document root in order to be vulnerable. |
Impact
A remote attacker can access files outside of the web application or document root by supplying a crafted URL to an vulnerable system. |
Solution
Upgrade or apply a patch from the vendor Jetty version 6.1.17 has been published to address this vulnerability. Users are encouraged to upgrade to this version. |
The vendor has described the following workarounds for users who are unable to update their software:
confirm that your jetty instance is running with the Default servlet "aliases" initParam set to "false". You will find this setting in either your application's web.xml or the etc/webdefault.xml. If it is not set, then it takes the default, safe, value of "false". You should also check that the org.mortbay.util.FileResource.checkAliases system property is either not set, or set to true. If you are using the ResourceHandler, then you can secure your system against this vulnerability by compiling the source at the bottom of this message against the version of Jetty that you are using. Use an instance of this class instead of the ResourceHandler package org.mortbay.jetty.cert; import java.net.MalformedURLException; import org.mortbay.jetty.handler.ResourceHandler; import org.mortbay.resource.Resource; import org.mortbay.util.StringUtil; import org.mortbay.util.URIUtil; public class TempFixResourceHandler extends ResourceHandler { public Resource getResource(String path) throws MalformedURLException { if (path!=null && path.indexOf('?')>=0) { path=URIUtil.decodePath(URIUtil.canonicalPath(StringUtil.replace(path,"?","%3F"))); if (path==null) return null; } return super.getResource(path); } } |
Systems Affected (Learn More)
Systems using Jetty versions 6.1.16 and earlier, and versions 7.0.0M2 and earlier. |
| Vendor | Status | Date Notified | Date Updated |
|---|---|---|---|
| Mort Bay | Affected | - | 01 May 2009 |
CVSS Metrics (Learn More)
| Group | Score | Vector |
|---|---|---|
| Base | N/A | N/A |
| Temporal | N/A | N/A |
| Environmental | N/A | N/A |
References
Credit
Thanks to Greg Wilkins of Mort Bay Consulting for reporting this vulnerability.
This document was written by Chad R Dougherty.
Other Information
- CVE IDs: Unknown
- Date Public: 29 Apr 2009
- Date First Published: 01 May 2009
- Date Last Updated: 01 May 2009
- Severity Metric: 6.60
- Document Revision: 9
Feedback
If you have feedback, comments, or additional information about this vulnerability, please send us email.