- Reported
-
- Issued
-
- Package
-
hickory-net
(crates.io)
- Type
-
Vulnerability
- Categories
-
- Keywords
-
#dns
#dnssec
#nsec3
- Aliases
-
- References
-
- Patched
-
Description
When DNSSEC validation looks for the NSEC3 record that covers a hashed name, the last record in the zone's hash chain needs special handling, because its next hashed owner name sorts before its own hash. For that record the two comparisons were reversed: it was treated as covering every hash below its owner hash or above its next hash, which is mostly the part of the chain it does not cover.
An attacker who can answer or modify DNS responses can replay that one signed NSEC3 record, with its RRSIG, from the target zone and use it in forged negative answers. The validator then accepts proof that names which do exist have no records.
This affects DNSSEC validation through DnssecDnsHandle (resolver, recursor and client) when built with dnssec-ring or dnssec-aws-lc-rs. The same code was in hickory-proto before it moved to hickory-net.
The fix corrects the comparison in find_covering_record. It is in 0.26.2.
Advisory available under CC0-1.0
license.