It looks like there is an assumption that it is an application
responsibility to get user consent before accessing an unsigned domain
(whenever 'ad' flag is not set). AFAIK, that is not the case: majority
of applications is not 'ad' flag aware.
How to prevent accesses to unsigned domains from these applications? Is
there a way to force resolution failure (in unbound) for an unsigned
domain?
This is not needed. Unbound can keep apart unsigned domains and domains
where the crypto fails or is missing. This is a feature of DNSSEC,
where there is a signature over data that says the domain is unsigned.
So the user can trust the absence of the ad flag (and the data is then
insecure, but we know securely that it could arrive without signatures).
Thank you for taking time to provide clarification.
I went step-by-step through [2]. The following spot:
"Next the resolvers checks the contents of the
example.com key. If the key is empty (a so called
null key) example.com is considered verifiable
insecure. The lookup will then proceed as a
normal DNS lookup."
sounds suspiciously weak from the integrity point of view.
On the next recursion (to resolve www.example.com), unbound
may cache the bogus response, as shown in [3]. In turn,
this will allow unsuspecting visitors to happily
supply their deepest banking secrets to the fake site.
The above scenario motivates me to ask the following
questions:
- How to prevent accesses to an unsigned name from
applications which are not 'ad' flag aware?
- Is there a way to force resolution failure (in unbound)
for an unsignedname?
Thank you for taking time to provide clarification.
I went step-by-step through [2]. The following spot:
Unfortunately that document is about an old version of DNSSEC, with KEY
and SIG types. The new version of DNSSEC has DNSKEY and RRSIG rrs. It
works differently. But can also find verifiable insecure points, by
disproving the existance of DS records. This is done with NSEC (or
NSEC3) records signed by the parent domain.
Unbound does not have a way to prevent access to insecure names. Or
make resolution failure. Because I think it is not needed.
My mail client messed with the new line character
which rendered the previous post less readable.
Please, ignore the previous post, and use this one instead.
Hi Wouter,
Thank you for taking time to provide clarification.
I went step-by-step through [2]. The following spot:
"Next the resolvers checks the contents of the
example.com key. If the key is empty (a so called
null key) example.com is considered verifiable
insecure. The lookup will then proceed as a
normal DNS lookup."
sounds suspiciously weak from the integrity point of view.
On the next recursion (to resolve www.example.com), unbound
may cache the bogus response, as shown in [3]. In turn,
this will allow unsuspecting visitors to happily
supply their deepest banking secrets to the fake site.
The above scenario motivates me to ask the following
questions:
- How to prevent accesses to an unsigned name from
applications which are not 'ad' flag aware?
- Is there a way to force resolution failure (in unbound)
for an unsignedname?
Unfortunately that document is about an old version of DNSSEC, with KEY> and SIG types. The new version of DNSSEC has DNSKEY and RRSIG rrs.
I went step-by-step through [4]. Is it good enough to describe the new
version DNSSEC? If not, please point me to the relevant document.
Unfortunately, this document doesn't reveal the result of resolving
an unsigned name.
It works differently. But can also find verifiable insecure points, by
disproving the existance of DS records. This is done with NSEC (or
NSEC3) records signed by the parent domain.
Please, help me to understand how things will play out in case
insecure point is verifiable found. Will 'unbound' resolve name
below this point? Will an application get the resolved name and
attempt to connect to it?
Unbound does not have a way to prevent access to insecure names. Or
make resolution failure. Because I think it is not needed.
Correct me if I am wrong. In case the answer returned to unbound
is retrieved from records located below insecure point (in the hierarchy),
the unbound will pass it to an application. In turn, the application
will be able to connect to the IP without suspecting that the IP is
bogus.
I am trying to present to our administrator the benefits of running
'unbound'. I am confident that the above revelation will not fly by
him. Will you help me to make a convincing argument?
Yes that document is very recent, but does not explain insecure zones.
Unbound can verify that the zone is supposed to not have signatures,
because the parent zone signs the NSEC (or NSEC3 if they are using
NSEC3) that says so. Unbound then passes the normal results to the
application (without the AD flag), so that it can connect.
Your administrator wants unbound to somehow secure non-DNSSEC signed
zones using DNSSEC? If we stop resolution of all zones that have not
deployed DNSSEC, then you won't be able to connect to a large fraction
of sites?
What I think is happening is that you are confusing a zone that has
not deployed DNSSEC with a zone that is bogus.