On 07.11.2009 17:59, Mark Thomas wrote:
> All,
> 
> I was thinking about this on my way back from ApacheCon and we probably
> need to get some advice out to users early next week.
> 
> My current understanding is that the MITM attack is triggered by a
> renegotiation.

Yes, client side initiated (AFAIK the client can decide to do this at
any time) and server initiated (most likely case is requiring client
certs for some parts of the content served by the host, or varying
cipher configuration on one site.

> On this basis I suggest something along the following lines:
> 
> SSL using JSSE (BIO and NIO connectors)
> - Don't use SSL configs that require renegotiation. i.e. SSL config
> should be the same for the entire host. Sites that require SSL in some
> places and SSL + CLIENT-CERT in others will require reconfiguration.
> Sites that require SSL for some parts should be OK.

Except for client initiated renegotiation :(

> - Keep watch for a Sun update to the JDK that may help address the issue

Plus other vendors.

> SSL using tc Native
> - tcnative does not support renegotiation
> (https://issues.apache.org/bugzilla/show_bug.cgi?id=46950) so for now
> users of tc native with SSL should be OK

We need to test whether existing versions of Tomcat (with or without
tcnative) support client side initiated renegotiation. I can do it for
the tcnative case. The test (not a full MITM scenario but only a reneg
test) uses the openssl command s_client which can do reneg when typing "R".

My gut feeling says with tcnative we will support reneg and it will be
transparent to Tomcat. If that turns out to be true, we would need to
react w.r.t. tcnative (see below).

> We also need to think about what to do with tc native. Maybe something like:
> - release 1.1.17 with binaries built with 0.9.8l (so renegotiation is
> disabled)

Yes, disabling is fine for the moment, because it doesn't break existing
functionality. We should also add a comment about it in docs somewhere,
so that users building themselves using their OS supplied outdated
OpenSSL have been warned.

> - keep an eye on httpd and if they find a work-around, copy it and
> release 1.1.18 with renegotiation enabled

+1

and making 1.1.18 a dependency for 6.0.21 and 5.5.whatever.

> For now, I'm not proposing any changes to the docs although we may want
> to put a summary of the advice - once agreed - on the security pages.

+1

In summary the aspects for tcnative based SSL are

A) how to optionally fully disable all reneg
   - OpenSSL 0.9.8l
     - Breaks some future configs, but maxes on security
     - Users need to update binary tcnative to 1.1.17
       or rebuild their older version against new OpenSSL
B) how to disable client initiated reneg
   - Try porting httpd fix to tcnative
     - Will need new tcnative
C) how to fix config, so that there's no server initiated reneg
   - Needed in Addition to B)
D) how to fix reneg code, so that server initiated reneg gets safe
   - Might need proposed SSL extension, so newer
     OpenSSL version and possibly changes to tcnative

Regards,

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to