[cabf_validation] Using dedicated DNS resolvers for domain validation
Tobias S. Josefowitz
tobij at opera.com
Thu Jul 18 16:27:30 UTC 2024
Hi Doug,
On Mon, 15 Jul 2024, Doug Beattie via Validation wrote:
> During the last VWG call we had a good technical discussion on security
> concerns related to DNS resolvers being used for multiple purposes.
> There was agreement that CAs need to use a dedicated DNS resolver for
> domain validation even if we didn't reach agreement on being permitted
> to use a third party resolver.
>
> I'm curious what the scope of "domain validation" means in this regard.
> Can CAs use the same resolver for CAA, posting certificates to CT logs,
> doing who-is or RDAP queries, and if not, then maybe we should list more
> specifically what we mean by "Dedicated resolver for Domain Validation"
> when it comes to this locked down resolver topic?
I'd like to start by stating that my comments regarding the use of DNS in
DV during that call were mostly about the goal and purpose of DV, the
functional properties of the DNS protocol, associated risks and
security threats. I was outlining what I would expect an implementation of
a DV process to look like; it was not necessarily a comment about what is
currently required by the BRs or NCSSRs or anything else.
To summarize my perspective, the DNS protocol has inherent weaknesses that
threaten the authenticity of DNS responses/results. For example, DNS was
initially designed to be a UDP-based protocol, and the only security
measure against spoofed responses was a two-byte request ID field that
would be populated with a random value (one of 65536 possible).
While the protocol has been extended to be defined over TCP as well, UDP
is usually preferred by resolvers for performance. The current security
baseline for UDP-based DNS requests is less than 4 byte of randomness
protecting the resolver from spoofed responses (some of you may remember
that Dan Kaminsky drew attention to the fact that DNS is only protected by
two bytes in 2008, and coordinated an industry-wide push to include source
port randomization in DNS queries to increase randomness to a bit less
than four bytes - some of you may even be aware that Dan "djb" Bernstein
has pointed this out much before Kaminsky but has been widely ignored).
These weaknesses have often been the basis for off-path attacks against
DNS. If we for simplicity assume two bytes of "security", you can see that
even if your random value is hardcoded to "0xff", you will succeed in
spoofing 1 out of 65536 requests in so far as you manage to always send
your forged response after the resolver sent the query but before it
receives the authoritative nameserver's response. Thus it is obviously
immediately beneficial for an attacker if they can cause the resolver to
make many requests, giving the atacker more chances to get the resolver to
accept a forged response.
Both the DNS protocol and DNS resolver implementations have received
further hardening against such attacks, for example the DNS COOKIE
mechanism extension to the protocol and DNSSEC, as well as hardening
against so called sibling attacks in implementations. These are good
measures, but as we know DNSSEC rollout is minimal when it comes to
protected domains, and DNS COOKIE is an optional extension that attackers
could even run downgrade attacks against.
Considering that at its core, DNS is still (usually) a DNS based protocol
with less than four bytes of security, I would expect that anyone trying
to use it for Domain Validation would conclude that DV requires special
considerations when it comes to the use of DNS.
When I think about it, immediate conclusions are:
* It must not be possible for attackers to issue requests to the DNS
resolver used, except as mitigated by the DV process to what is
absolutely necessary and at a moderated volume/maximum frequency.
* The resolver should probably try to query via TCP by default, and only
fall back to UDP when querying via TCP is not supported by the
authoritative nameserver that is being queried.
These two points are critical considerations, but they are by no means
exhaustive. When actually impementing a "DV resolver", I would expect more
topics to come up and be considered, ranging from looking at the
configuration options and establishing what are good settings for the DV
use case, as well as the question of whether DNS protocol-level attacks
(attempts) against the "DV resolver" should be detected and cause
validation to fail or lead to other, more advanced or refined measures to
ensure correctness of the validation.
I put the second point as a "should probably" because I have not tried
this in any real-world application and cannot with absolute confidence,
ascertain how many problems this would cause. I hope none to very few if
done properly.
These two points immediately preclude any kind of public resolver from
being used, because they indeed accept all kinds of queries from potential
attackers and are configured to provide DNS results quickly (i.e. they
prefer UDP over DNS). I would wager that there is no third party service
currently offered by anyone that would fit these criteria.
Looking at the two points given above, I would further conclude that using
the "DV resolver" for figuring out how to reach whois/RDAP and CT logs
ranges anywhere from "not conflicting" to "probably a good idea", likely
closer to the latter.
Tobi
More information about the Validation
mailing list