On Sat, Nov 1, 2014 at 1:04 PM, Kaspar Brand <httpd-dev.2...@velox.ch> wrote:
> On 01.11.2014 11:23, Yann Ylavic wrote:
>> The real questions IMO is:
>> Is SSLv2Hello replied with TLSv1.x server hello really safe against
>> MITM/poodle/other attacks?
>
> Well, no one can answer this question with "yes" as long as you do not
> define "other attacks". From what is known today, however, accepting
> SSLv2 client hellos does not lead to additional vulnerabilities compared
> to a TLS client hello.

OK, thanks for clarifying this, no (known) issue then from a server perspective.

There is still that a client handshaking with a SSLv2Hello (by using
SSLv23_client_method()) is likely to accept SSLv[23] protocols (unless
using SSL_OP_NO_SSLv[23] explicitly like today's mod_ssl, but it's
probably not the case for legacy clients), so MITM attacks on SSLv2
for example might still be possible.

> See also RFC 6176 section 3:
>
>>    o  TLS servers MAY continue to accept ClientHello messages in the
>>       version 2 CLIENT-HELLO format as specified in RFC 5246 [TLS1.2],
>>       Appendix E.2.  Note that this does not contradict the prohibition
>>       against actually negotiating the use of SSL 2.0.
>
> And this is what RFC 5246 says about its interpretation:
>
>>    For negotiation purposes, 2.0 CLIENT-HELLO is interpreted the same
>>    way as a ClientHello with a "null" compression method and no
>>    extensions.
>
> (Less options and extensions usually mean less potential for getting
> things wrong - just a general observation, not specific to the issue at
> hand.)

I guess it depends on whether or not extensions are involved in the
counter measures.

>
>> The problem is that with OpenSSL 0.9.8, "ALL -SSLv3" leaves only
>> SSL_PROTOCOL_TLSV1, and TLSv1_server_method() won't accept SSLv2Hello
>> (according to my own tests with openssl s_client).
>
> Ok, I see - so it's actually not about "Older clients" (as the subject
> of this thread refers to), but about mod_ssl compiled against OpenSSL
> 0.9.8 and not allowing TLS 1.0 connections with an SSLv2 compatible
> hello, is that correct?

Yes, at least for my own tests.
But is openssl-1.x's TLSv1_server_method() acting differently than
0.9.8's one with regard to SSLv2Hello?
(I'll give it a test).

> Given that 1.0.0 has been around for more than 4
> years already and 0.9.8 will be EOL'ed by the end of 2015, I don't think
> we should spend too much effort into addressing such legacy-version
> issues. I would again point to RFC 6176 section 3, and specifically:
>
>>    o  TLS clients MUST NOT send the SSL version 2.0 compatible CLIENT-
>>       HELLO message format.  Clients MUST NOT send any ClientHello
>>       message that specifies a protocol version less than
>>       { 0x03, 0x00 }.  As previously stated by the definitions of all
>>       previous versions of TLS, the client SHOULD specify the highest
>>       protocol version it supports.
>
> (i.e., there's no good reason for a TLS-capable client to use an SSLv2
> compatible hello.)

Well, end of 2015 is not quite the same as tomorrow...

The fact is that several today's clients (probably legacy/heavy) do
support TLSv1 easily by using SSLv23_client_method() (and let the
linked openssl do the right thing) since a while, and it's not always
an option to modify these clients, and no option at all when you are a
httpd admin...

Unless we consider/claim these clients are unsafe per se, and/or
require openssl >= 1.0 for mod_ssl, I don't see why we should prevent
them from connecting to httpd configured with "ALL -SSLv3".

>
>> openssl s_client (with no protocol option, eg. -tls1/-ssl3/...) uses 
>> SSLv2Hello.
>
> It's not just determined by the use of these protocol switches,
> actually. It also depends on the OpenSSL version and whether SSLv2
> ciphers are still enabled. With OpenSSL 1.0.0 and later, SSLv2
> compatible client hellos are essentially gone:

So it might also depend on "Older" vs "Newer" clients too...

Regards,
Yann.

Reply via email to