systemd-resolved tries to mitigate DVE-2018-0001 even if DNSSEC=yes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
systemd (Ubuntu) |
Fix Released
|
Medium
|
Balint Reczey | ||
Bionic |
Fix Released
|
Medium
|
Dimitri John Ledkov | ||
Cosmic |
Won't Fix
|
Medium
|
Dimitri John Ledkov | ||
Disco |
Fix Released
|
Medium
|
Dimitri John Ledkov |
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-
Changed in systemd (Ubuntu): | |
assignee: | nobody → Dimitri John Ledkov (xnox) |
status: | Confirmed → In Progress |
importance: | Undecided → Medium |
Changed in systemd (Ubuntu Cosmic): | |
assignee: | nobody → Dimitri John Ledkov (xnox) |
Changed in systemd (Ubuntu Bionic): | |
assignee: | nobody → Dimitri John Ledkov (xnox) |
Changed in systemd (Ubuntu Cosmic): | |
status: | New → In Progress |
Changed in systemd (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in systemd (Ubuntu Cosmic): | |
importance: | Undecided → Medium |
Changed in systemd (Ubuntu Bionic): | |
importance: | Undecided → Medium |
tags: | removed: sts |
tags: | added: sts |
Changed in systemd (Ubuntu Cosmic): | |
status: | In Progress → Won't Fix |
tags: | added: id-5d92536b4bcd9c68caddc01c |
tags: | added: sts-sponsor-ddstreet |
tags: | added: ddstreet systemd |
tags: | added: bionic disco |
description: | updated |
Can this bug make the complete failure of DNS (like https:/ /github. com/systemd/ systemd/ issues/ 6490) more likely?
If SERVFAIL is for the DNS server, that sounds like this would cause more failures of DNS per the other issue.