[Bug 1796501] Re: systemd-resolved tries to mitigate DVE-2018-0001 even if DNSSEC=yes
Launchpad Bug Tracker
1796501 at bugs.launchpad.net
Tue Nov 26 17:37:57 UTC 2019
This bug was fixed in the package systemd - 237-3ubuntu10.33
---------------
systemd (237-3ubuntu10.33) bionic; urgency=medium
* d/p/lp1852754/0001-network-do-not-re-set-MTU-when-current-and-requested.patch,
d/p/lp1852754/0002-network-call-link_acquire_conf-and-link_enter_join_n.patch,
d/p/lp1852754/0003-network-prohibit-to-set-MTUBytes-and-UseMTU-simultan.patch:
- Complete link setup after setting mtu (LP: #1852754)
systemd (237-3ubuntu10.32) bionic; urgency=medium
[ Victor Tapia ]
* d/p/resolved_disable-connection-downgrade-when-DNSSEC-yes.patch
Fix regression introduced by
resolved-Mitigate-DVE-2018-0001-by-retrying-NXDOMAIN-with.patch when
DNSSEC=yes (LP: #1796501)
[ Dan Streetman ]
* d/p/fix-typo-lp1668771-resolved-switch-cache-option-to-a-tri-state-option-s.patch:
- Fix typo in previous patch
* d/p/lp1840640-shared-seccomp-add-sync_file_range2.patch:
- allow sync_file_range2 in nspawn container
(LP: #1840640)
* d/p/lp1783994-dissect-Don-t-count-RPMB-and-boot-partitions-8609.patch:
- avoid systemd-gpt-auto-generator failure if mmc dev present
(LP: #1783994)
* d/p/lp1832672-resolved-rework-parsing-of-etc-hosts.patch:
- do not fail entire file on error when parsing /etc/hosts
- parse # char anywhere in line as start of comment
(LP: #1832672)
* d/p/lp1843381-dell_passthrough_skip_rename_retry.patch,
debian/extra/rules/73-usb-net-by-mac.rules:
- fix rename delay for systems using "Dell MAC passthrough"
(LP: #1843381)
* d/p/lp1849733/0001-resolved-longlived-TCP-connections.patch,
d/p/lp1849733/0002-resolved-line-split-dns_stream_new-function-signatur.patch,
d/p/lp1849733/0003-resolved-add-some-assert-s.patch,
d/p/lp1849733/0004-stream-track-type-of-DnsStream-object.patch,
d/p/lp1849733/0005-llmnr-add-comment-why-we-install-no-complete-handler.patch,
d/p/lp1849733/0006-resolved-restart-stream-timeout-whenever-we-managed-.patch,
d/p/lp1849733/0007-resolved-only-call-complete-with-zero-argument-in-LL.patch,
d/p/lp1849733/0008-resolved-add-comment-to-dns_stream_complete-about-it.patch,
d/p/lp1849733/0009-resolved-keep-stub-stream-connections-up-for-as-long.patch,
d/p/lp1849733/0010-resolved-if-we-can-t-append-EDNS-OPT-RR-then-indicat.patch,
d/p/lp1849733/0011-resolved-don-t-let-EDNS0-OPT-dgram-size-affect-TCP.patch,
d/p/lp1849733/0012-resolved-add-new-accessor-dns_stream_take_read_packe.patch,
d/p/lp1849733/0013-resolve-do-not-complete-stream-transaction-when-it-i.patch:
- add TCP pipelining to handle getaddrinfo() fallback to TCP
- ignore EDNS0 payload limit when responding over TCP (LP: #1849733)
* d/p/lp1849658-resolved-set-stream-type-during-DnsStream-creation.patch:
- Fix bug in refcounting TCP stream types (LP: #1849658)
* d/p/lp1850704/0001-networkd-Unify-set-MTU.patch,
d/p/lp1850704/0002-network-drop-redundant-lines.patch:
- Fix setting mtu if interface already up (LP: #1850704)
* d/extra/dhclient-enter-resolved-hook:
- only restart resolved if dhclient conf changed (LP: #1805183)
-- Dan Streetman <ddstreet at canonical.com> Fri, 15 Nov 2019 10:01:16
-0500
** Changed in: systemd (Ubuntu Bionic)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1796501
Title:
systemd-resolved tries to mitigate DVE-2018-0001 even if DNSSEC=yes
Status in systemd package in Ubuntu:
Fix Released
Status in systemd source package in Bionic:
Fix Released
Status in systemd source package in Cosmic:
Won't Fix
Status in systemd source package in Disco:
Fix Released
Bug description:
[impact]
an NXDOMAIN response from a dns server when systemd-resolved is
configured as DNSSEC=yes breaks dns resolution as it downgrades from
DNSSEC.
[test case]
see comment 9
[regression potential]
as with the original patch that introduced this problem, this has the
potential to break dns resolution.
[other info]
original description:
I ask systemd-resolved through dig to resolve the SOA of test.asdf. (doesn't exist) but it returns SERVFAIL instead of NXDOMAIN. It seems to do the following steps:
1. Ask upstream for SOA of test.asdf. with EDNS0, DO-bit and 4k size.
2. Ask upstream for SOA of test.asdf. with EDNS0 and DO-bit.
3. Ask upstream for SOA of test.asdf. with EDNS0.
4. Ask upstream for SOA of test.asdf. without EDNS0.
5. Repeat 1-4 for DS of test.asdf.
6. Repeat 1-5 for asdf.
7. Ask upstream for SOA of . with EDNS0, DO-bit and 4k size.
8. Ask upstream for DNSKEY of . with EDNS0, DO-bit and 4k size.
The upstream returns an unfragmented NXDOMAIN response for steps 1-6,
an unfragmented NOERROR response for step 7 and a fragmented NOERROR
response for step 8 which is the correct behaviour. DNSSEC records are
included in the response if the DO-bit in the request was set.
systemd-resolved should take the response from step 1 and start with
validation instead of starting useless retries with reduced feture
set. Step 3 and 4 are completely useless and probably lead to the
SERVFAIL because I have configured it with DNSSEC=yes to prevent
downgrade attacks.
This regression seems to be caused by the patch resolved-Mitigate-
DVE-2018-0001-by-retrying-NXDOMAIN-with.patch. The downgrade logic
should only be executed if it is configured as DNSSEC=allow-downgrade
or DNSSEC=no. See also
https://github.com/systemd/systemd/pull/8608#issuecomment-396927885.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1796501/+subscriptions
More information about the foundations-bugs
mailing list