CERT home
vulnerabilities & fixesevaluations & practicesresearch & analysistraining & education
homesearchFAQsite indexcontact
Vulnerability
Notes
Database

Search Vulnerability Notes

Vulnerability Notes Help Information
 

 View Notes By
Name

ID Number

CVE Name

Date Public

Date Published

Date Updated

Severity Metric

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.

I. 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.

II. Impact

A remote attacker can access files outside of the web application or document root by supplying a crafted URL to an vulnerable system.

III. 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:

    If you are not using the ResourceHandler, then you should
    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

VendorStatusDate Updated
Mort BayVulnerable2009-05-01

References


http://docs.codehaus.org/display/JETTY/Jetty+Security
http://jira.codehaus.org/browse/JETTY-1004

Credit

Thanks to Greg Wilkins of Mort Bay Consulting for reporting this vulnerability.

This document was written by Chad R Dougherty.

Other Information

Date Public04/29/2009
Date First Published05/01/2009 03:39:26 PM
Date Last Updated05/01/2009
CERT Advisory 
CVE Name 
Metric6.60
Document Revision9

If you have feedback, comments, or additional information about this vulnerability, please send us email.
 

Copyright 2009 Carnegie Mellon University