8.7

GHSA-3V94-MW7P-V465: hickory-net Crates.Io

CVSS: 8.7v4.0HighPublished
AliasesRUSTSEC-2026-0118RUSTSEC-2026-0120
Published 01-05-2026Last modified 12-10-2026

Vulnerability summary

GHSA-3V94-MW7P-V465 is a high (CVSS 8.7) vulnerability in hickory-net Crates.Io.

Overall risk
35/100
0100
Medium · default modelHow is this calculated?
CVSS score
8.7/10
010
High · v4.0 (OSV · Crates.io), selected by version preference
EPSS score
Not scored
0%100%
No EPSS score yet
KEVNot listedIn no KEV catalog
RansomwareNone recordedNo known use recorded
Public exploits0No public exploits recorded

Advisory lineage

Upstream 0 · Downstream 48 · Related 1

Timeline

  1. 01-05-2026
    PublishedVulnerability first disclosed.
  2. 12-10-2026
    Last modifiedVulnerability information updated.

Description

NSEC3 closest-encloser proof validation enters unbounded loop on cross-zone responses The NSEC3 closest-encloser proof validation in `hickory-net`'s `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 (OOM). A reachable upstream attacker who can return such a response can therefore crash a debug-built validator or exhaust memory on a release-built one. We recommend all affected users update to `hickory-net` 0.26.1 for the fix.

CVSS metrics

1 score · 1 source · 1 version

EPSS trend

No EPSS score has been published for this record yet.

Known exploited

Compare KEV catalogs

Not in any of the 3 tracked catalogs.

Public exploits

0 found

No public exploits indexed.

Weaknesses

CWE · root cause

No weakness data has been published for this record.

Affected systems

Crates.Io2 products
  • hickory-net≥ 0.26.0-alpha.1, < 0.26.1 | ≥ 0.0.0-0, < 0.26.1
  • hickory-proto≥ 0.25.0-alpha.3, ≤ 0.25.2 | ≥ 0.25.0-alpha.3, < 0.26.0-beta.1

1 vendor · 2 products

References

7 links