The fix is incorrect.

indexOf returns -1 when the substring is not found, not 0.

The way the current code is set forces wrong behavior.

It should be:

        (relativePath.indexOf("/META-INF/") != -1) ||
        (relativePath.indexOf("/WEB-INF/") != -1))

Arieh

> Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
> list-help: <mailto:[EMAIL PROTECTED]>
> list-unsubscribe: <mailto:[EMAIL PROTECTED]>
> list-post: <mailto:[EMAIL PROTECTED]>
> Delivered-To: mailing list [EMAIL PROTECTED]
> Delivered-To: [EMAIL PROTECTED]
> From: [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
> Subject: cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/request 
>SimpleMapper1.java 
StaticInterceptor.java
> 
> craigmcc    00/12/11 09:52:31
> 
>   Modified:    src/share/org/apache/tomcat/request Tag: tomcat_32
>                         SimpleMapper1.java StaticInterceptor.java
>   Log:
>   Fix a security vulnerability that would display the contents of sensitive
>   files when a URL like this was used:
>   
>       http://localhost:8080/examples//WEB-INF/web.xml
>   
>   This vulnerability appears on Linux (and any other OS that ignores "//" in
>   the middle of a pathname), but not on Windows.
>   
>   Submitted by: Ramon Cacha <[EMAIL PROTECTED]>
>   PR: BugRat Bug Report #565
>   
>   Revision  Changes    Path
>   No                   revision
>   
>   
>   No                   revision
>   
>   
>   1.15.2.4  +2 -2      
jakarta-tomcat/src/share/org/apache/tomcat/request/SimpleMapper1.java
>   
>   Index: SimpleMapper1.java
>   ===================================================================
>   RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/SimpleMapper1.java,v
>   retrieving revision 1.15.2.3
>   retrieving revision 1.15.2.4
>   diff -u -r1.15.2.3 -r1.15.2.4
>   --- SimpleMapper1.java      2000/12/01 03:00:41     1.15.2.3
>   +++ SimpleMapper1.java      2000/12/11 17:52:30     1.15.2.4
>   @@ -343,8 +343,8 @@
>                requestURI.substring(contextPath.length()).toUpperCase();
>            if (relativePath.equals("/META-INF") ||
>                relativePath.equals("/WEB-INF") ||
>   -            relativePath.startsWith("/META-INF/") ||
>   -            relativePath.startsWith("/WEB-INF/"))
>   +            (relativePath.indexOf("/META-INF/") != 0) ||
>   +            (relativePath.indexOf("/WEB-INF/") != 0))
>                return 404;
>    
>       return OK;
>   
>   
>   
>   1.7.2.5   +3 -1      
jakarta-tomcat/src/share/org/apache/tomcat/request/StaticInterceptor.java
>   
>   Index: StaticInterceptor.java
>   ===================================================================
>   RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/StaticInterceptor.java,v
>   retrieving revision 1.7.2.4
>   retrieving revision 1.7.2.5
>   diff -u -r1.7.2.4 -r1.7.2.5
>   --- StaticInterceptor.java  2000/11/07 22:52:52     1.7.2.4
>   +++ StaticInterceptor.java  2000/12/11 17:52:30     1.7.2.5
>   @@ -418,7 +418,9 @@
>    
>               String relPathU=relPath.toUpperCase();
>               if ( relPathU.startsWith("WEB-INF") ||
>   -                           relPathU.startsWith("META-INF")) {
>   +                     relPathU.startsWith("META-INF") ||
>   +                    (relPathU.indexOf("/WEB-INF/") != 0) ||
>   +                    (relPathU.indexOf("/META-INF/") != 0) ) {
>                       return null;
>               }
>       }
>   
>   
>   

--
 Arieh Markel                           Sun Microsystems Inc.
 Network Storage                        500 Eldorado Blvd. MS UBRM11-194
 e-mail: [EMAIL PROTECTED]           Broomfield, CO 80021
 Let's go Panthers !!!!                 Phone: (303) 272-8547 x78547
 (e-mail me with subject SEND PUBLIC KEY to get public key)

Reply via email to