[dns-operations] Sad news today: systemd-resolved to be deployed in Ubuntu 16.10
Mark Andrews
marka at isc.org
Tue Jun 7 00:01:39 UTC 2016
In message <20160606170845.GA27834 at mycre.ws>, Robert Edmonds writes:
> Peter van Dijk wrote:
> > Paul,
> >
> > On 5 Jun 2016, at 20:40, Paul Wouters wrote:
> >
> > > Of course, this kind of systemd-resolvd bad practise is why security
> > > aware
> > > applications (like libreswan) will want to do their own validation
> > > because
> > > it simply cannot trust the AD bit from sources like systemd-resolved.
> > > Which is exactly what systemd-resolvd was supposed to solve....
> >
> > Are you saying systemd-resolved will set an AD bit even when a
> downgrade has
> > happened?
>
> I was under the impression that systemd-resolved doesn't have a DNS
> responder (it doesn't "listen on port 53"), so it would never set a
> response-only bit like AD in an RFC 1035 4 response message.
AD isn't a response-only bit. It is used in non EDNS queries and
should only be returned by DNSSEC aware servers when the answer has
been determined to be authentic. A RFC 1035 server won't copy it
into the response but there is a lot of crud out there that doesn't
actually implement RFC 1035. See
https://ednscomp.isc.org/compliance/tld-fullreport.txt for TLD
servers that copy the last reserved bit (974 of the test queries
has the bit echoed back (zflag=mbz), the server count is lower) in
the DNS header when it is present in the query in violation of RFC
1035.
> But I've
> only read some of the documentation and skimmed some of the code, it's
> possible I missed something. There appears to be a roughly analogous
> "AUTHENTICATED" flag in the resolved API, however.
>
> Here is what the resolved.conf(5) man page says about "allow-downgrade":
>
> ... If set to "allow-downgrade" DNSSEC validation is attempted,
> but if the server does not support DNSSEC properly, DNSSEC mode is
> automatically disabled. Note that this mode makes DNSSEC validation
> vulnerable to "downgrade" attacks, where an attacker might be able
> to trigger a downgrade to non-DNSSEC mode by synthesizing a DNS
> response that suggests DNSSEC was not supported. ...
>
> Client programs looking up DNS data will be informed whether lookups
> could be verified using DNSSEC, or whether the returned data could
> not be verified (either because the data was found unsigned in the
> DNS, or the DNS server did not support DNSSEC or no appropriate
> trust anchors were known). In the latter case it is assumed that
> client programs employ a secondary scheme to validate the returned
> DNS data, should this be required. ...
>
> https://www.freedesktop.org/software/systemd/man/resolved.conf.html
>
> The second paragraph above appears to be referring to a flag in the
> resolved API, "SD_RESOLVED_AUTHENTICATED". Here is what the API
> documentation says about that flag:
>
> The AUTHENTICATED bit is defined only in the output flags of the
> four functions ResolveHostname, ResolveAddress, ResolveRecord,
> ResolveService. If set, the returned data has been fully
> authenticated. Specifically, this bit is set for all
> DNSSEC-protected data for which a full trust chain may be
> established to a trusted domain anchor. It is also set for locally
> synthesized data, such as localhost or data from /etc/hosts.
> Moreover, it is set for all LLMNR or mDNS RRs which originate from
> the local host. Applications that require authenticated RR data for
> operation should check this flag before trusting the data. Not that
> resolved will not return invalidated data in any case, hence this
> flag simply allows to discern the cases where data is known to be
> trustable, or where there's proof that the data is "rightfully"
> unauthenticated (which includes cases where the underlying protocol
> or server does not support authenticating data).
>
> https://wiki.freedesktop.org/www/Software/systemd/resolved/
>
> I.e., the AUTHENTICATED bit will only be set for data from the DNS that
> has been DNSSEC-validated as secure, or for locally originated data.
>
> It seems if you need data that must be authentic (e.g. an SSHFP record)
> you call resolved's ResolveRecord function and check the AUTHENTICATED
> flag, and "allow-downgrade" has no influence on whether that flag can be
> forced on (only on whether it can be forced off).
>
> Am I missing something?
>
> --
> Robert Edmonds
> _______________________________________________
> dns-operations mailing list
> dns-operations at lists.dns-oarc.net
> https://lists.dns-oarc.net/mailman/listinfo/dns-operations
> dns-jobs mailing list
> https://lists.dns-oarc.net/mailman/listinfo/dns-jobs
--
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742 INTERNET: marka at isc.org
More information about the dns-operations
mailing list