[Acme] Re: Potential issues with dns-persist-01
zandoodle <maxoscarhearnden@gmail.com> Mon, 06 April 2026 21:56 UTC
Return-Path: <maxoscarhearnden@gmail.com>
X-Original-To: acme@mail2.ietf.org
Delivered-To: acme@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 13F5AD72E188 for <acme@mail2.ietf.org>; Mon, 6 Apr 2026 14:56:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1775512572; bh=o8x9i63EUgh7JVxRrM+aUiIF+LpJ9gbC/A9j9OxbALY=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=y4Ap9nVUnOTW8jmUdA2i3fua34dN6WtHCRSISnIVkmSAi4lf3SXoy0a1eYKlYc+Sb 1PU0ZNKIOZWJa/PC8TarTXgJEWaqtmQMJSk4l6VhOC/idVb8CBixIkoxE7Q01P3jjJ 3uVIkv3HSEg1Af6+xMv7qMAqlXTIPdt0HzxB4NOo=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ocz91RAV-D0D for <acme@mail2.ietf.org>; Mon, 6 Apr 2026 14:56:11 -0700 (PDT)
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 93D22D72E183 for <acme@ietf.org>; Mon, 6 Apr 2026 14:56:11 -0700 (PDT)
Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4838c15e3cbso32794035e9.3 for <acme@ietf.org>; Mon, 06 Apr 2026 14:56:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775512565; x=1776117365; darn=ietf.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=gLpSvSP8sQ/1E4zRlONQoU27pTXO1Eq1Ca4mm1Zy8As=; b=MlY9d1vzrtGXJxz5+tbNEoXYd9YecSbk2Y/kI8AWaskOt6wLu8+6vm7McnbQnqPKBb BdCzkdietIpMy5JaI+1M5V71x+QD40YrlNTWvLqdvKwDTvQuSPLM8UtB/A2QP1ZzdBBx r8LO8kBOADNX1XGztn34rE3gA99TymfhwsXJvhD7qkrM67RaJTOZZAX/wUuk2U0Xm9TB wo8az2b//RlvWqyHQYVGSmQErdpPdaEdCpL8xo4IWHeTJZdkO2bdzG/lcA5Lf6pJ0Hp/ 105R544xu1puFtr/dxtkiC8Nkh9grZ16tldwIPWz0zAFVmIuSGNfAOcGRrEfe/BoCRpM y7+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775512565; x=1776117365; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=gLpSvSP8sQ/1E4zRlONQoU27pTXO1Eq1Ca4mm1Zy8As=; b=SEewrByJvds7clxaHV2aPurQbLCoQz1XVV2Fml0jsxhboHQEKyTG0BTlUvhvMqiwcv +zuo2lROBtDtCxuhCAKxRtET4uWt/qZ4s93iA+OJVDUdvvSpiw3u3x4/z8J1kqVySqUf LkILbm3ODgeAfNqol5NZL/f2tV7FrRSHv9sCOZyNUB3Qo6rh3g3uy29QfWn4+UN24PFS aDjc7YcaV0y3nTaqruMh94B0tR8imCABgomvJcDpDGJ5frwevt4W1Un8DtphEuafGpcI 7ZDm+gTmyvN1GXat4JfcKVSgZ142T1kCtjXO2klvRBFXYEWwQq8Ih6m1vk23/HsKaIaj 93Xg==
X-Gm-Message-State: AOJu0YyXEG1dQLamiqM5fyMBruBW1rsU4dWFyK1lbmU3BIH2Am2fAkhX I+RcemKrtHmVv01of5JRy1oSFL+Cz1FSx+ULjwCeNOFkdvA1Q49LFMQ39K8jMMT5
X-Gm-Gg: AeBDietcqTz7EK8563S1/pga/+txJ2fY8B8RwR38zu6IvpEKRMJvEBO2VU7JGgPPOTB uGEGU3rUqbihiEZTbtyju+ZSCZ7hqe7lJWbW+QqaYnN0I9jQx7SOkNPtwT6ZKkAvCXx8CAMRU8l zMH9V0UzJ3WoJ8C3mbtykRhcBbzJ8dMKD10AW+o3mWruExAglKgqg88onntBG21JiP+PAYODe3m s79X/P2IFqxdMRry2SgpoeiP/OUAnavDGmgClC+sVwD4IDKosvebXPqgWlEqfhsNS5nsfXmswlc 3Ie3Ra4KqQDCg/PMR896pAawkvcCTdvFBtI0qxA3ZEC9PNxID63cn8j8jp1+86MnJFAIuFj+GJv 0OqNHQRHMy7E4pJ8O5tqhQxCmGcYlWyeh2qrZbi3bAx49uW1U2wEIF7tow+567E2gc8GsbPl+qc 5M1LdDx2DO78b9oi5mlLu7AvHY7kCzcUttHAPwMOsR7SFzJCsrtbK5ptMF1237MSGuZQaVx+XR7 Lw6BrTCxyYsCxRoQ6wQ0IRV1BvEjqZx/ug=
X-Received: by 2002:a05:600c:37c6:b0:488:b196:d249 with SMTP id 5b1f17b1804b1-488b196d280mr73368065e9.5.1775512564724; Mon, 06 Apr 2026 14:56:04 -0700 (PDT)
Received: from ?IPV6:2a0a:ef40:1850:1a01:b37e:df3b:0:1d1? ([2a0a:ef40:1850:1a01:b37e:df3b:0:1d1]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48899e79fb5sm100307795e9.22.2026.04.06.14.56.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 06 Apr 2026 14:56:01 -0700 (PDT)
Message-ID: <c33656bd-7c41-4710-8964-b7952b0ee693@gmail.com>
Date: Mon, 06 Apr 2026 22:55:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Aaron Gable <aaron@letsencrypt.org>
References: <CAFg2froJTxp+kT_VdSuNs9LVqFQhO-WJZBt=-qoVQO9c8M+=Xw@mail.gmail.com> <CAEmnErdOBBzj+5nuZBYo0zN64zMXDeX-3sdcFBQqJirmHky2gA@mail.gmail.com>
Content-Language: en-US
From: zandoodle <maxoscarhearnden@gmail.com>
In-Reply-To: <CAEmnErdOBBzj+5nuZBYo0zN64zMXDeX-3sdcFBQqJirmHky2gA@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Message-ID-Hash: TV5C7L4HEURDCJ23N6UWRN7WAISNWPHK
X-Message-ID-Hash: TV5C7L4HEURDCJ23N6UWRN7WAISNWPHK
X-MailFrom: maxoscarhearnden@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-acme.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: acme@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Acme] Re: Potential issues with dns-persist-01
List-Id: Automated Certificate Management Environment <acme.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/zD2ow70Cla9c0cNsHSawJ6rFmCM>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Owner: <mailto:acme-owner@ietf.org>
List-Post: <mailto:acme@ietf.org>
List-Subscribe: <mailto:acme-join@ietf.org>
List-Unsubscribe: <mailto:acme-leave@ietf.org>
Thanks for the review On 06/04/2026 19:40, Aaron Gable wrote: > On Sat, Apr 4, 2026 at 6:47 PM zandoodle <maxoscarhearnden@gmail.com> wrote: > >> 1. An attacker sets up an ACME server and convinces the client to use >> it, the client is then provided the attacker's ACME account on the CA's >> domain and instructs the client to setup dns-persist-01 under the >> attacker's account. >> 2. An attacker sets up an ACME server and convinces the client to use >> it, the client is then provided the attacker's ACME account for the >> attacker's domain and instructs the client to setup dns-persist-01 under >> the attacker's account. This requires that the certificate authority allows >> accounts to be created under the attacker's domain e.g. creating the >> account under the domain in the Host header field as done by Let's Encrypt. >> >> A few notes here: > First, these two scenarios are essentially identical. In both of them, the > attacker is merely providing an attacker-controlled account URI to the > victim client, to get them to populate it in a DNS record. The only > difference with the second scenario is that the victim client operator > would see that their directory URL and account URL have the same domain > name, and might be less likely to notice that something weird is going on. > > Second, the second of these scenarios doesn't actually work, at least not > against Let's Encrypt. Although we reflect the Host: header in API > responses, we only respect the *canonical* AccountURI for the purpose of > CAA and dns-persist-01 accounturi=. A client that populates a TXT record > with `accounturi=malicious.ca/acme/acct/12335` would not be able to > complete validation. I've since found where that's implemented in Boulder and it appears to sufficiently protect against the second attack, the canoncalisation is also performed for the dns-account-01 challenge, has this already been discussed? > > Finally, the fundamental threat model here was already considered and > mitigated in RFC 8555. One can imagine a similarly-positioned malicious > ACME proxy-esque server which intercepts an HTTP-01 challenge and replaces > the `token` with one of its own. However, the attacker still can't get the > victim client to successfully complete validation because the necessary > value presented by the client to complete the challenge consists of > *two* pieces > of information: the token (provided by the server) and the Key > Authorization (computed directly by the client). The victim client can't be > fooled into computing a Key Authorization for the malicious proxy's key. > > So the solution here is to do the same. The dns-persist record should > contain a piece of information computed directly by the client, rather than > merely provided by the (potentially malicious) server. So I agree > with Sebastian's suggestion that the record format should support an > `accountkey=` parameter. > > Aaron > Using the account's public key in the DNS record would prevent both attacks however I'm not sure what the security implications would be from discouraging key rollovers. What I had proposed in another reply (https://mailarchive.ietf.org/arch/msg/acme/eMmmT1yr6cAOAWYZ5dyZN8Y9ufs/) was an CA controlled endpoint (such as the account URI) alongside a token parameter fetched from the CA controlled endpoint. This would make the client verify that its key is valid for its account with the CA over HTTPS, the token parameter wouldn't be strictly necessary however it would demonstrate to the CA that the client has verified their key.
- [Acme] Potential issues with dns-persist-01 zandoodle
- [Acme] Re: Potential issues with dns-persist-01 Seo Suchan
- [Acme] Re: Potential issues with dns-persist-01 Sebastian Robin Nielsen
- [Acme] Re: Potential issues with dns-persist-01 zandoodle
- [Acme] Re: Potential issues with dns-persist-01 zandoodle
- [Acme] Re: Potential issues with dns-persist-01 Aaron Gable
- [Acme] Re: Potential issues with dns-persist-01 Sebastian Robin Nielsen
- [Acme] Re: Potential issues with dns-persist-01 zandoodle
- [Acme] Re: Potential issues with dns-persist-01 zandoodle
- [Acme] Re: Potential issues with dns-persist-01 Sebastian Robin Nielsen
- [Acme] Re: Potential issues with dns-persist-01 Sebastian Robin Nielsen
- [Acme] Re: Potential issues with dns-persist-01 zandoodle
- [Acme] Re: Potential issues with dns-persist-01 Sebastian Robin Nielsen
- [Acme] Re: Potential issues with dns-persist-01 Shiloh Heurich
- [Acme] Re: Potential issues with dns-persist-01 Seo Suchan
- [Acme] Re: Potential issues with dns-persist-01 Shiloh Heurich
- [Acme] Re: Potential issues with dns-persist-01 Shiloh Heurich
- [Acme] Re: Potential issues with dns-persist-01 Sebastian Robin Nielsen
- [Acme] Re: Potential issues with dns-persist-01 zandoodle
- [Acme] Re: Potential issues with dns-persist-01 Shiloh Heurich
- [Acme] Re: Potential issues with dns-persist-01 Aaron Gable