Skip to main content
← Vulnerabilities

hickory-proto: NSEC3 closest-encloser proof validation enters unbounded loop on cross-zone responses

Exploited
No known exploitation
Fix
Fixed in hickory-proto 0.26.0-beta.1 · hickory-net 0.26.1
Who is exposed
Not reported

Do first: Upgrade to a fixed version: hickory-proto 0.26.0-beta.1 · hickory-net 0.26.1.

Published
Last modified
23/100 · provisional
High (ghsa)
None on Exploit-DB, Metasploit or GitHub

Summary

Hickory DNS's `hickory-proto` and `hickory-net` libraries, when built with the `dnssec-ring` or `dnssec-aws-lc-rs` feature and set to validate DNSSEC, can enter an endless loop while checking NoData or NXDomain responses whose authority section contains an SOA record from an unrelated zone. An upstream attacker who sends such a response can crash debug builds or exhaust memory in release builds.

Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.

Read the original description

The NSEC3 closest-encloser proof validation in hickory-proto's (0.25.0-alpha.3 ... 0.25.2) and hickory-net's (0.26.0-alpha.1 .. 0.26.0) DnssecDnsHandle walks from the QNAME up to the SOA owner name, building a list of candidate encloser names. The iterator used assumes the QNAME is a descendant of the SOA owner, terminating only when the current candidate equals the SOA name. When the SOA in a response's authority section is not an ancestor of the QNAME, the loop stalls at the DNS root and never terminates, repeatedly calling Name::base_name() and pushing newly allocated Name and hashed-name entries into the candidate Vec.

The bug is reachable by any caller of DnssecDnsHandle, including the resolver, recursor, and client, when built with the dnssec-ring or dnssec-aws-lc-rs feature and configured to perform DNSSEC validation. It is triggered while validating a NoData or NXDomain response whose authority section contains an SOA record from a zone other than an ancestor of the QNAME, on a code path that requires NSEC3 closest-encloser proof. In practice this can be reached through an insecure CNAME chain that crosses zone boundaries into a DNSSEC-signed zone returning NoData, but the minimum condition is just a mismatched SOA owner on a response requiring NSEC3 validation.

A debug_assert_ne!(name, Name::root()) guards the loop body, so debug builds abort with a panic on the first iteration past the root. Release builds compile the assertion out and run the loop unbounded, allocating until the process exhausts available memory. A reachable upstream attacker who can return such a response can therefore crash a debug build or exhaust memory on a release build, for the affected configurations.

The affected code was migrated from hickory-proto to hickory-net as part of the 0.26.0 release. Hickory DNS recommends that all affected users update to hickory-net 0.26.1 for the fix.

Reporter

David Cook, ISRG

cve.now Index

23Pcve.now Index 23 of 100 · methodology v3 · provisional
  • Exploitation?/40Unknown. No CISA SSVC exploitation rating yet
  • Exposure?/25Unknown. No advisory context yet
  • Reach16/20hickory-proto: 2.6M downloads a week
  • Severity7/10Rated high by ghsa
  • No patch0/5No signal

What would change the score

  • Would score about 78 if added to CISA KEV
  • Would score about 73 if CISA's SSVC rates exploitation active
  • Would score about 45 if advisories confirm default setups are exposed

Impact

  • Widely used

    hickory-proto has 2.6m weekly downloads.Source: crates.io

What to do

  • Upgrade to a fixed version: hickory-proto 0.26.0-beta.1 · hickory-net 0.26.1.

Timeline

  1. Advisory published158 days
  2. Record last updated

Affected versions

Evidence 4

  1. Advisory
  2. Repository
  3. Link
  4. Link

Corrections

None so far.

Something wrong on this page? Report an error. Every fix is listed here.

Questions about GHSA-3V94-MW7P-V465

Is GHSA-3V94-MW7P-V465 being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data

Which versions are affected by GHSA-3V94-MW7P-V465?

hickory-proto (crates.io): from 0.25.0-alpha.3 through 0.25.2. hickory-net (crates.io): from 0.26.0-alpha.1 before 0.26.1. hickory-proto (crates.io): from 0.25.0-alpha.3 before 0.26.0-beta.1.Source: cve.now feed data

How do I fix GHSA-3V94-MW7P-V465?

Upgrade to a fixed version: hickory-proto 0.26.0-beta.1 · hickory-net 0.26.1.Source: cve.now feed data