Re: [TLS] Working Group Last Call for draft-ietf-tls-downgrade-scsv-00

Brian Smith <brian@briansmith.org> Mon, 13 October 2014 21:54 UTC

Return-Path: <brian@briansmith.org>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DCCD61A0290 for <tls@ietfa.amsl.com>; Mon, 13 Oct 2014 14:54:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.979
X-Spam-Level:
X-Spam-Status: No, score=-1.979 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ovU_v42pBmrM for <tls@ietfa.amsl.com>; Mon, 13 Oct 2014 14:54:36 -0700 (PDT)
Received: from mail-oi0-f53.google.com (mail-oi0-f53.google.com [209.85.218.53]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B04261A0231 for <tls@ietf.org>; Mon, 13 Oct 2014 14:54:36 -0700 (PDT)
Received: by mail-oi0-f53.google.com with SMTP id v63so14169632oia.26 for <tls@ietf.org>; Mon, 13 Oct 2014 14:54:36 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=uaYUP/0Y6tTxknX9pBmw4G08shJIe4mksbkV9c++xRs=; b=f+3uEoRGmfPmZLbuM58K8XzCoUu7T/7PizyHToMWoGEB6+eOLwOp5RGF41S4HQG8Kc rcLMFyT8GOcbTq3NgBPDebd4x6nlIOHOTO53sEibaT43K0+dj7CynHeVJQofQwoQJP5Y 1y1NIsPJssMzgr+UI/gvTcGicFCDXZnXlOERP7fZPd8ph0ZHtpEQhvLd6bxCyI5jKxYa /wP0xfKc0UnjiepzC5ZTiHn5RSeq+JKdJHJjX+u7WJse3dUUaskGJwX29fm58aDKC0iM m79A/+tXqqzKzPB9TJxYTXuvTAuWpwiJC2hZIagCDDbPLal6YcpEh6hwrgdSntmbLC6M lE0Q==
X-Gm-Message-State: ALoCoQnmuIdtfvmRJvlVHGNHjAc89aF1mI8vY5zUvji7j2AWC/BzyGIIHW4TSOlS6MeF3F6+RT4h
MIME-Version: 1.0
X-Received: by 10.182.163.20 with SMTP id ye20mr1101022obb.16.1413237276144; Mon, 13 Oct 2014 14:54:36 -0700 (PDT)
Received: by 10.76.102.40 with HTTP; Mon, 13 Oct 2014 14:54:36 -0700 (PDT)
In-Reply-To: <CAFewVt747+NJZxGohr_1=TqW=Pcu7qp7tz=8qYWP=Zg+vRPsPw@mail.gmail.com>
References: <2112FCAD-4820-49D9-9871-6501C83A554D@cisco.com> <CABkgnnUxeouqDNhYFGDC2xqUaT8r7zFvAT5U1OUGJwHwCOuOwA@mail.gmail.com> <CADMpkcJKJiTCQXdDbepyiAf22J9VC03DDgiE521n3NsNnFmALA@mail.gmail.com> <CABkgnnWo9KGMkRrmA0wkJ5Dfnzh2Vo-cveCe_UeH71F8K_4oWw@mail.gmail.com> <CADMpkcJpHeKGV-xc4Uon8KWj=+p=6nQO1_rxb6sRN04nFX--gQ@mail.gmail.com> <CABkgnnU8DyzRvvq1e24bUsZdwx48mFOC6KstZaUCbvyQ-WwesQ@mail.gmail.com> <CADMpkc+wXf=SG3=C==SV77YXZdbXnbXspJLRZ1UORPF-WbVMEw@mail.gmail.com> <CAFewVt5mEodyqB6TWCmvOUBek9Bnb43bmw5mAqph-hQU=F=EpA@mail.gmail.com> <CAFewVt40ewzwujJZ8KQYYALnPjBSZnF-bDiVaz54URA6MaqPEg@mail.gmail.com> <CADMpkcKh=6Y9u_utfLiccZTUKT-BV1+3NQO7OzDN-Dn38sx-TQ@mail.gmail.com> <CAFewVt747+NJZxGohr_1=TqW=Pcu7qp7tz=8qYWP=Zg+vRPsPw@mail.gmail.com>
Date: Mon, 13 Oct 2014 14:54:36 -0700
Message-ID: <CAFewVt4qStmPJhucjbXgmS6Sd74NKHsTJbXBUrc1JHow+P=0sg@mail.gmail.com>
From: Brian Smith <brian@briansmith.org>
To: Bodo Moeller <bmoeller@acm.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/zWRplO3y0IBtJdE-2j7O98p2ptA
Cc: "<tls@ietf.org>" <tls@ietf.org>
Subject: Re: [TLS] Working Group Last Call for draft-ietf-tls-downgrade-scsv-00
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
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: Mon, 13 Oct 2014 21:54:39 -0000

On Fri, Oct 10, 2014 at 10:07 PM, Brian Smith <brian@briansmith.org> wrote:
> There are four cases to consider:
>
> CASE 1: Client included the TLS_FALLBACK_SCSV, server forgot session
> state when it was upgraded. The result is an inappropriate_fallback
> alert.
>
> CASE 2: Client included the TLS_FALLBACK_SCSV, server (magically!!!)
> retained the session state across the server software upgrade. The
> result is an inappropriate_fallback alert.

There's an important thing to note about these two cases: They only
apply when the server is, or recently was, TLS intolerant. That is,
the client did a non-secure fallback due to TLS intolerance, then the
server was upgraded to support the TLS_FALLBACK_SCSV and/or a higher
version of TLS, and then the inappropriate_fallback is sent. If the
server wasn't already TLS intolerant, then CASE 1 and CASE 2 won't
happen. Thus, I think it is better to say tat clients MUST send the
TLS_FALLBACK_SCSV in the ClientHello whenever they decrease
ClientHello.client_version due to their TLS intolerance logic.

Also, the draft fails to state something that is obvious to us, but
which is better to state explicitly: The server needs to ensure it
isn't version intolerant, or else adding support for the
TLS_FALLBACK_SCSV will cause the server to stop working.

There are several non-obvious reasons why a server might seem like it
is "version intolerant" or "extension intolerant" even though it
generally supports version negotiation and generally parses extensions
correctly:

* I have seen modern servers act like they are "TLS intolerant" when
OCSP stapling is enabled and the server's certificate doesn't contain
an OCSP AIA URI. The fallback to SSL 3.0 "works" for them because
browsers stop sending the status_request extension. However, the
server actually does the version negotiation correctly, modulo this
OCSP stapling bug. The best solution to this is to get a new
certificate that has the OCSP AIA URI in it.

* I have seen some servers (e.g. from Cisco) that don't like certain
orderings of TLS extensions (especially the new padding extension).
Again, non-secure fallback to SSL 3.0 "works" for them because no
extensions get sent in the ClientHello. But, the servers actually get
the version negotiation correct, modulo this buggy extension handling.
The solution to this is to upgrade to the version of the server
software that Cisco hasn't released yet(!). (And, browsers should
probably find a workaround for this issue. See
https://bugzilla.mozilla.org/show_bug.cgi?id=998135#c11.)

* I have seen some servers where the hostname-specific TLS
configuration is broken, but where the generic non-host-specific
configuration works. These servers appear to be TLS intolerant because
they try to use the hostname-specific TLS configuration when the SNI
extension is given, and fail due to it being broken. When the browser
downgrades to SSL 3.0, the non-hostname-specific configuration is
picked up, and the handshake succeeds. Thus, the problem isn't in the
server's TLS stack's version engotiatoin at all, but rather in the web
server's configuration file. The solution to this problem is to fix
the fix the configuration file.

These types of issues, and other similar ones, need to be accounted
for when deploying TLS_FALLBACK_SCSV on the server. Because these
issues are relatively easy to fix, and relatively rare, the existence
of these issues shouldn't stop any server software vendor from
deploying TLS_FALLBACK_SCSV and enabling it by default. But, people
should be aware of these issues when diagnosing surprises.

Cheers,
Brian