mirror of
https://github.com/hickory-dns/hickory-dns.git
synced 2026-04-25 19:25:56 +03:00
[GH-ISSUE #3041] Validation of RRsets in the Additional section #1116
Labels
No labels
blocked
breaking-change
bug
bug:critical
bug:tests
cleanup
compliance
compliance
compliance
crate:all
crate:client
crate:native-tls
crate:proto
crate:recursor
crate:resolver
crate:resolver
crate:rustls
crate:server
crate:util
dependencies
docs
duplicate
easy
easy
enhance
enhance
enhance
feature:dns-over-https
feature:dns-over-quic
feature:dns-over-tls
feature:dnsssec
feature:global_lb
feature:mdns
feature:tsig
features:edns
has workaround
ops
perf
platform:WASM
platform:android
platform:fuchsia
platform:linux
platform:macos
platform:windows
pull-request
question
test
tools
tools
trust
unclear
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hickory-dns#1116
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @divergentdave on GitHub (Jun 9, 2025).
Original GitHub issue: https://github.com/hickory-dns/hickory-dns/issues/3041
Currently, the recursive and forwarder authorities never include any records in the Additional section. If we are to change this, we'll have to consider how DNSSEC validation will interact with this. I haven't found any special guidance for how to treat different sections when validating messages, but section 3.1.1, about authoritative name servers, says that if a signed RRset is included in the Additional section, the corresponding RRSIG RRs MUST be included as well, unless there is not enough space. If the RRSIGs are excluded for space reasons, then the TC bit MUST NOT be set solely because of the exclusion of those RRSIG RRs. Because of this, I think we'll have to treat sections differently in validating resolvers or forwarders.
Under the status quo, if we saw an RRset with no signatures in the Additional section, we'd start querying for DS records to determine if they are in a signed zone or not. If we found that the zone is signed, then we'd return SERVFAIL for the original recursive query. This seems wrong, as the authoritative name server is operating according to the spec, and there's no way to recover from this error. Some other options:
@divergentdave commented on GitHub (Jul 3, 2025):
RFC 4033 section 7 and RFC 4035 section 3.2.3 say that the AD bit only indicates that the RRsets in the Answer and Authority were validated. Thus, the second option above is correct. Currently,
build_forwarded_response()always leaves the Additional section empty; once we start filling this in, we'll need to rewrite this whole function, but still only set AD based on these first two sections.