Re: [TLS] Rizzo claims implementation attach, should be interesting

"Yngve N. Pettersen" <yngve@opera.com> Thu, 29 September 2011 14:31 UTC

Return-Path: <yngve@opera.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 38B5221F8D0D for <tls@ietfa.amsl.com>; Thu, 29 Sep 2011 07:31:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.569
X-Spam-Level:
X-Spam-Status: No, score=-6.569 tagged_above=-999 required=5 tests=[AWL=0.030, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CacE+DvIJxZe for <tls@ietfa.amsl.com>; Thu, 29 Sep 2011 07:31:36 -0700 (PDT)
Received: from smtp.opera.com (smtp.opera.com [213.236.208.81]) by ietfa.amsl.com (Postfix) with ESMTP id 1EAA921F8DB7 for <tls@ietf.org>; Thu, 29 Sep 2011 07:31:35 -0700 (PDT)
Received: from lessa-ii.oslo.os (pat-tdc.opera.com [213.236.208.22]) (authenticated bits=0) by smtp.opera.com (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id p8TEYKm7016780 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 29 Sep 2011 14:34:23 GMT
Content-Type: text/plain; charset=iso-8859-15; format=flowed; delsp=yes
To: "Martin Rex" <mrex@sap.com>
References: <201109291413.p8TED3rn010850@fs4113.wdf.sap.corp>
Date: Thu, 29 Sep 2011 16:34:29 +0200
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: "Yngve N. Pettersen" <yngve@opera.com>
Organization: Opera Software ASA
Message-ID: <op.v2kqrrnkkvaitl@lessa-ii.oslo.os>
In-Reply-To: <201109291413.p8TED3rn010850@fs4113.wdf.sap.corp>
User-Agent: Opera Mail/10.62 (Win32)
Cc: asteingruebl@paypal-inc.com, tls@ietf.org
Subject: Re: [TLS] Rizzo claims implementation attach, should be interesting
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Sep 2011 14:31:37 -0000

On Thu, 29 Sep 2011 16:13:03 +0200, Martin Rex <mrex@sap.com> wrote:

> Yngve N. Pettersen wrote:
>>
>> Martin Rex wrote:
>>
>> > Marsh Ray wrote:
>> > >
>> > > I believe there was a mitigation put in place by OpenSSL: sending an
>> > > empty (just padding) message before each app data message.
>> > >
>> > > I read somewhere that this mitigation was off by default in OpenSSL
>> > > because it [breaks] some software (an old MSIE IIRC).
>> >
>> > Why using a EMPTY (just padding) SSL record?  That looks like an
>> > obvious untested border case.
>> >
>> > How about using an initial SSL record with one byte of real data
>> > for SSLv3 and TLSv1.0 SSL with CBC cipher suites?
>>
>> According to my testing, this breaks about as many websites,
>> unfortunately, approximately 0.15% of tested websites.
>
> What exactly did you do?  did you fragment the client's
> finished handshake message as well (which is the first protected
> message on a TLS connnection) ?  As previously mentioned, I would
> expect this to cause interop problems, whereas I have a slight
> hope that fragmenting only application data might work.

The test only used a split record for application data, and was only  
performed if the server supported on of the CBC ciphersuites supported by  
the prober, and a successful HTTP request for / without split record had  
been sent earlier in the test.

Determining failure required detecting two successive failures that either  
did not return a response at all, or a 400+ error code that was not the  
same as was received in the baseline request. (200/300 was considered a  
success regardless )

Five different split policies were tested (0, 1, 2, blocksize-1, blocksize  
-2 bytes), each with or without having the blocks in the same TCP record.  
The above number was with the two records in the same TCP record (as that  
had a significantly lower failure rate).

The above numbers is the combined failure rate for servers that support  
AES, or only support 3DES. (AES is presumed to be selected by these  
servers).

I have previously seen HTTPS servers mishandle two HTTP requests in the  
same record (the second was ignored); my guess is that this is the same  
thing: An assumption that a single SSL/TLS Application record contain just  
a single, complete HTTPS request. My guess is that the responsible servers  
are front-ends, firewalls or similar, not servers like Apache with modSSL  
or IIS.

At least one server return "ET is not a recognized HTTP method",  
apparently having dropped the record with the "G" part of the request.

BTW: 0.045% failed all 5 of the tests, so I consider it likely that there  
is no split policy that will work for all servers.

-- 
Sincerely,
Yngve N. Pettersen

********************************************************************
Senior Developer                     Email: yngve@opera.com
Opera Software ASA                   http://www.opera.com/
Phone:  +47 24 16 42 60              Fax:    +47 24 16 40 01
********************************************************************