[Acme] Fixing the TLS-SNI challenge type

Jonathan Rudenberg <jonathan@titanous.com> Thu, 11 January 2018 22:41 UTC

Return-Path: <jonathan@titanous.com>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 539CC129C6C for <acme@ietfa.amsl.com>; Thu, 11 Jan 2018 14:41:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FUZZY_CPILL=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=titanous.com header.b=ZvnZBOFy; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=iSgaksiN
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 xL8fpTFG-aXj for <acme@ietfa.amsl.com>; Thu, 11 Jan 2018 14:41:24 -0800 (PST)
Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B484B126BF0 for <acme@ietf.org>; Thu, 11 Jan 2018 14:41:24 -0800 (PST)
Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 0246920C25 for <acme@ietf.org>; Thu, 11 Jan 2018 17:41:23 -0500 (EST)
Received: from frontend2 ([10.202.2.161]) by compute4.internal (MEProxy); Thu, 11 Jan 2018 17:41:24 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=titanous.com; h= content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=klgcbHalksNR++tMGN4mwCnMVNVaeCUlb8hVpkpjMjY=; b=ZvnZBOFy a4xlizcv+eKX13wWdFv20iAycN7YxXKxpxfp6Y1X01W5btlNTN40ysdgX9+gkLcL bxE+Tqz4gvcm9KWHvb6DMTvFzPWrxe7t/gm619Jc86J4GhTRwIH4faAJG1aGk7wo tXb8e5/pOnU0zPFgVZ9ALgqyXFFjtESvwV3eFrlSddb7wtJz+1FJvgOMSJ3qPB5E eMHTOSxnASKHuYvnR7O9lHp4kI5mYMcWoUQ3C3PIUOqwPHxBN9EYctgSDMOWFcYw qjAVqm3ryxDrWIeFKHB9b9tt9PJebtZj27UbL1nu3dM9UfyQIkCE5Y+LW+woiS/B ScLEFDmxrA1xdg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=klgcbHalksNR++tMGN4mwCnMVNVae CUlb8hVpkpjMjY=; b=iSgaksiNuNMkw04dCkhMrIwYES+8lR0Vpj5QPP+QX3Au3 gLa70uTcsyFd3lSWyVwHQZOuIc5OMGFa1xYiE24RzT88/fhEmWfl8kNauYfg3fqu vv4ZYvTGdnr1ByXpm8E5rNuarp9ImSukIo6mMkBbAvgcfaoBrPHGWSlaHY8r46UA uvDA/Pe07Q4pwrdhTRr6e7prdV0qdRPBFfZnDdejr93dCjmuraEZW5BsyYtkQ7qs bF5zib2TqJppKxBrR6IrVH/EB6iwKVjYwQJhykbum72lp1+H9co5gKp0FV+eVsz5 gkiyC/E8CXPPzWn+QzDjn5Ur8I9yEU1HPxblhIpxA==
X-ME-Sender: <xms:E-hXWh448R8nTlrpohmL56NUYZLM-32sTTIEXZQ4IcQCypcN8nNfUA>
Received: from [10.10.10.104] (pool-108-16-208-234.phlapa.fios.verizon.net [108.16.208.234]) by mail.messagingengine.com (Postfix) with ESMTPA id 92C732473E for <acme@ietf.org>; Thu, 11 Jan 2018 17:41:23 -0500 (EST)
From: Jonathan Rudenberg <jonathan@titanous.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Message-Id: <FC8545A9-4D43-4BCC-ADB1-40A0F92461E8@titanous.com>
Date: Thu, 11 Jan 2018 17:41:23 -0500
To: IETF ACME <acme@ietf.org>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/mrKOeRK1K6H_42Hxbt3A1XtLFJM>
Subject: [Acme] Fixing the TLS-SNI challenge type
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Automated Certificate Management Environment <acme.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/acme>, <mailto:acme-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme/>
List-Post: <mailto:acme@ietf.org>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/acme>, <mailto:acme-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 11 Jan 2018 22:41:27 -0000

As many of you are probably aware, Frans Rosén of Detectify discovered a method of exploiting many shared hosting providers to obtain unauthorized certificates using the ACME TLS-SNI-01/02 challenge types[0]. Let’s Encrypt is in the process of removing support for these challenge types[1].

Obviously this is not ideal, as the TLS-SNI challenge is useful in a variety of use cases. The good news is that TLS-SNI-02 appears to be fixable.

In order to get the ball rolling on a fixed version (aka TLS-SNI-03), here’s a straw proposal, based on something originally publicly suggested by Ryan Sleevi[2]:

Start with the TLS-SNI-02 challenge specification, and add the requirement that the ACME server MUST send an ALPN extension in the ClientHello with a single “acme” protocol name, and the ACME server MUST confirm that the ServerHello also includes an ALPN extension with a single “acme” protocol name.

The only concern I’ve seen about this is the theoretical possibility that servers might just repeat back the ALPN extension with the same protocol name, which I believe we can remedy by doing a scan of the Alexa Top 1M (or similar) to see if this behavior exists in the wild.

Jonathan

[0] https://community.letsencrypt.org/t/2018-01-09-issue-with-tls-sni-01-and-shared-hosting-infrastructure/49996
[1] https://community.letsencrypt.org/t/2018-01-11-update-regarding-acme-tls-sni-and-shared-hosting-infrastructure/50188
[2] https://www.mail-archive.com/dev-security-policy@lists.mozilla.org/msg08984.html