On Sun, 2007-05-20 at 18:17 +0200, Rainer Jung wrote: > Before I answer, let me first ask a question: What's wrong withg my > suggestion?
Well thinking to it I am not very happy with the change: +++ -#define JK_OPT_FWDURIDEFAULT JK_OPT_FWDURICOMPATUNPARSED +#define JK_OPT_FWDURIDEFAULT JK_OPT_FWDURIESCAPEDMINIMAL +++ Because that is what the SPEC's says. Cheers Jean-Frederic > Or even better: use the encoding done with mod_proxy_ajp? > > >> Original URI: > >> > >> /myapp/%252e%252e/otherapp/danger > >> > >> JkMount /myapp/* > >> > >> Apache httpd will correctly decode the URI to > >> > >> /myapp/%2e%2e/otherapp/danger > >> > >> mod_jk does map it *correctly* to /myapp and forwards it to Tomcat. > >> > > > > It does not IMO, and that's what I'm talking. > > Inside mod_jk we should decode > > /myapp/%2e%2e/otherapp/danger to > > /myapp/../otherapp/danger > > No, If the original URI was /myapp/%252e%252e/otherapp/danger, then it > is not correct to end up with /otherapp/danger as a decoded URL. A > percent sign is a valid character in a ressource path. If one wants to > use it in ressource paths, one needs to encode it ('%25'), and it is not > allowed to decode '%25XX' again after decoding to '%XX' once. > > So %252e -> %2e and that's it, no further decoding. It is not a '.', > because it is decoded already. > > Why do you think, that > > /myapp/%252e%252e/otherapp/danger > > is equivalent to > > /myapp/../otherapp/danger ? > > > Do a normalization of the uri that will end up as > > /otherapp/danger before hitting map_uri_to_worker > > If there is no JkMount for /otherapp/ it will be > > denied, if it is, the rewritten uri /otherapp/danger > > will be send instead /myapp/%2e%2e/otherapp/danger. > > Of course we can simply send /myapp/%2e%2e/otherapp/danger > > to tomcat if the match is OK for /otherapp/, > > and let the tomcat do a normalization once again. > > As I said, double decoding ("again") is not allowed and is the source of > all evil. > > > In that case we won't need to encode the normalized > > uri inside mod_jk once more. > > I'm sure we need to, because double encoding is not allowed, but Tomcat > unfortunately does a second decoding. > > Some evidence: > > 0) RFC 2396, RFC 3986 > ===================== > > http://www.ietf.org/rfc/rfc2396.txt > > Section 2.4.2. When to Escape and Unescape: > > "Implementers should be careful not to > escape or unescape the same string more than once, since unescaping > an already unescaped string might lead to misinterpreting a percent > data character as another escaped character, or vice versa in the > case of escaping an already escaped string." > > and even stricter the younger > > http://tools.ietf.org/html/rfc3986 > > 2.4. When to Encode or Decode > > "Implementations must not > percent-encode or decode the same string more than once, as decoding > an already decoded string might lead to misinterpreting a percent > data octet as the beginning of a percent-encoding, or vice versa in > the case of percent-encoding an already percent-encoded string." > > 1) IIS Bug > ========== > > http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2001-0333 > > which leads to > > http://www.microsoft.com/technet/security/Bulletin/MS01-026.mspx > > "What's wrong with the decoding operation? > There's nothing wrong with the decoding operation per se. The > vulnerability results because, through an implementation flaw, the > decoding operation is performed a second time, after the security checks > on the request have been completed." > > 2) mod_security Bug > =================== > > http://www.modsecurity.org/download/CHANGES > > "BUG Fixed a double URL-decoding bug (Apache first, then us), which > could sometimes lead to a false positive." > > 3) DAV Bugs > =========== > > http://dav.sourceforge.net/ > > "The following bugs should have gone: > > * [ 1519718 ] davfs2 fails to properly decode complex escape sequences > * [ 1522903 ] chokes on directory names containing ' _ % characters > * [ 1539444 ] mounting of webdav drive fails > * [ 1539445 ] unable to access files in mounted webdav drive > * [ 1558525 ] davfs2-1.0.2_p20060820 mount fails > > These bugs were related to ... and incorrect double url-decoding of urls." > > Regards, > > Rainer > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]