[cabf_validation] Using dedicated DNS resolvers for domain validation
Tobias S. Josefowitz
tobij at opera.com
Tue Aug 6 22:52:35 UTC 2024
Hi Gurleen,
On Tue, 6 Aug 2024, Gurleen Grewal wrote:
> Any publicly available ACME CA essentially operates as a public resolver -
> by invoking the ACME protocol and requesting domain validation, an attacker
> can cause the CA to perform DNS queries for a domain of their choice. In
> this case, solely running a dedicated resolver is not an effective
> mitigation against the kinds of attacks described.
ACME is fundamentally JSON over HTTPS, and as such, it is fundamentally
orders of magnitude more expensive to cause a large amount of lookups over
ACME as compared to over DNS over UDP (or even over DNS over TCP). This
especially holds true when you take the receiving end into account (i.e.
the CA's ACME endpoint), the attacker could indeed cheat a bit and drive
complexity down on their end.
As such, an attack mounted via ACME will be inherently more noticeable to
an attacked CA, as it might even cause resource exhaustion, and would
presumably be visible in metrics and logs. By comparison, an attack
mounted on a resolver operated by a DTP but used for DV would not be
visible to the CA at all, and even if the DTP noticed the attack traffic
they would not understand the significance of it, and it would also not be
something they would prioritize to mitigate when it happens; not only
because nobody will distrust them or qualify their audits or whatever when
they do not, but because it is simply not going to be in the envelope of
guarantees and considerations they offer the service under. At least as
long as the DTP is not specifically in the business of operating a "DV
Resolver".
Furthermore, attacking DNS resolution or the resolver itself through ACME
obviously inherently gives an attacker less degrees of freedom in how to
mount the attack, obscure DNS protocol features would not be accessible,
for example.
These are all significant benefits over simply using a resolver that can
be directly queried by an attacker, and these benefits alone, in my
opinion, illustrate why using a dedicated resolver operated for this
purpose alone is the only way to implement a DV process worth its salt.
You are however entirely correct in noting that more can and should be
done.
> Could you provide more detail on what mitigations you expect a CA to
> implement relative to DNS resolution - e.g. rate limiting DNS queries seems
> to be one of the implied measures a dedicated resolver would be expected to
> implement? Before the discussion gets too far along, it would help to have
> a list of potential threats and tie potential mitigations back to them.
It has not been my intention to only imply I would expect rate limits. I
would indeed expect them. I worded it the way I did for a reason, however
that may have caused some confusion. Let me try to provide some
background:
You do not necessarily even need to operate a nameserver for the DV
process, or use any (non-authoritative) nameserver in the process at all.
Many programming languages offer DNS protocol support in ways that allow
you to query authoritative nameservers directly.
Using an actual recursive nameserver to do this work has its benefits, the
usual suspects of nameserver implementations are of course written,
maintained and supported by experts with a high level of expertise and a
commendable commitment to writing secure code and providing appropriate
response to security issues.
But fundamentally, only a small portion of the nameserver's features are
relevant to the process of DV validation, while at the same time the
nameserver's API - the DNS protocol - is very powerful and can in
principle access a much larger portion of the nameserver's features and
code.
Because of that, I would indeed consider it extremely important that such
a nameserver could not be reached by anything other than the DV process
and related, tightly controlled other aspects of the CA's operation (like
name resolution occuring in the context of making requests to e.g. QGIS,
WHOIS, RDAP).
And indeed, I would expect rate limits. These would not be enforced only
on the FQDN level, but also on the public suffix level as determined by
the Public Suffix List. And this is where what I wrote maybe is
confusing: I expect the resolver cannot be reached by anything but the DV
process and related tightly controlled use cases, and as such,
appropriate rate limiting would in my mind probably be enforced in the
part of the DV process that is querying the DV Resolver to begin with.
TL;DR I firmly believe the following measures significantly increase the
security of a DV process:
* Rate limits
* Prevent non-DV-related queries to the DV Resolver
* Query using TCP instead of UDP, or other, similarly secure mechanisms
where available (e.g. QUIC and possibly others pointed to by Aaron Gable
in
https://lists.cabforum.org/pipermail/validation/2024-July/002000.html)
* When querying over UDP, detect attempts at injecting forged responses
However, I am certain there could be additional measures providing great
benefit. Since I am not involved in any DV process at any level, I can
really only contribute at the level of more obvious measures without
digging into it further.
> Generally, GTS is in favor of additional requirements on DNS resolvers for
> Domain Validation and we'd welcome more work in the community on best
> practices for robust DNS resolution.
Not saying that would be what you meant, but I just want to make it clear
that in my mind, it is not just about configuring a DNS resolver
"appropriately", it is in fact about being very conscious and careful
about how and for what a resolver is used in the DV process and how to
design this involvement in a way that gives an adequate level of
robustness to DNS level attacks.
Tobi
More information about the Validation
mailing list