Public mode

No access to your tenant or devices. Every item links to its source. What this means

Sources need attention Customize Public modeDiscuss ChangeIntel on Discord

Hickory DNS NSEC3 Closest-Encloser Proof Unbounded Loop Denial of Service

CVSS 4.0 8.7 HIGHCVSS 3.1 7.5 HIGHEUVD CVSS 4.0 8.7 CVSS 4.0 · [email protected] · Secondary 8.7 HIGHCVSS 3.1 · [email protected] · Secondary 7.5 HIGHCVSS_V4 Publisher rating HIGHFixed by hickory-net 0.26.1osv · severity unknownFixed by hickory-proto 0.26.0-beta.1osv · severity unknownFixed by hickory-net 0.26.1KEV status unknown

cve-program · CVE-2026-123607

Published

Hickory DNS hickory-proto 0.25.0-alpha.3 through 0.25.2 and hickory-net before 0.26.1 contain an unbounded loop vulnerability in DnssecDnsHandle NSEC3 closest-encloser proof validation when the SOA owner is not an ancestor of the QNAME. Upstream attackers can return NoData or NXDomain responses with a cross-zone SOA record to panic debug builds or exhaust memory in release builds.

Read the publisher's advisory

euvd · EUVD-2026-119366

Published

Hickory DNS hickory-proto 0.25.0-alpha.3 through 0.25.2 and hickory-net before 0.26.1 contain an unbounded loop vulnerability in DnssecDnsHandle NSEC3 closest-encloser proof validation when the SOA owner is not an ancestor of the QNAME. Upstream attackers can return NoData or NXDomain responses with a cross-zone SOA record to panic debug builds or exhaust memory in release builds.

Read the publisher's advisory

nvd · CVE-2026-123607

Published

Hickory DNS hickory-proto 0.25.0-alpha.3 through 0.25.2 and hickory-net before 0.26.1 contain an unbounded loop vulnerability in DnssecDnsHandle NSEC3 closest-encloser proof validation when the SOA owner is not an ancestor of the QNAME. Upstream attackers can return NoData or NXDomain responses with a cross-zone SOA record to panic debug builds or exhaust memory in release builds.

Read the publisher's advisory

osv · GHSA-3v94-mw7p-v465

Published

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

Read the publisher's advisory

osv · RUSTSEC-2026-0118

Published

The NSEC3 closest-encloser proof validation in `hickory-proto`'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. The affected code was migrated from `hickory-proto` to `hickory-net` as part of the 0.26.0 release. The `hickory-proto` 0.26.x release no longer offers `DnssecDnsHandle` and so we recommend all affected users update to `hickory-net` 0.26.1 when the implementation of that type is required.

Read the publisher's advisory

osv · RUSTSEC-2026-0120

Published

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.

Read the publisher's advisory

Affected versions, risk and source history

cve-program · CVE-2026-123607

Published

hickory-dns

Vendor product

Publisher's version information

Shown as published. These rules are not interpreted as NuGet package version ranges.

{
                    "vendor": "hickory-dns",
                    "product": "hickory-dns",
                    "defaultStatus": "unaffected",
                    "packageURL": "pkg:cargo/hickory-proto",
                    "versions": [
                        {
                            "version": "0.25.0-alpha.3",
                            "status": "affected",
                            "versionType": "semver",
                            "lessThanOrEqual": "0.25.2"
                        }
                    ]
                }

hickory-dns

Vendor product

Publisher's version information

Shown as published. These rules are not interpreted as NuGet package version ranges.

{
                    "vendor": "hickory-dns",
                    "product": "hickory-dns",
                    "defaultStatus": "unaffected",
                    "packageURL": "pkg:cargo/hickory-net",
                    "versions": [
                        {
                            "version": "0.26.0-alpha.1",
                            "status": "affected",
                            "versionType": "semver",
                            "lessThan": "0.26.1"
                        },
                        {
                            "version": "0.26.1",
                            "status": "unaffected",
                            "versionType": "semver"
                        }
                    ]
                }

Original source record · Cite this exact observation · Complete original publisher JSON

euvd · EUVD-2026-119366

Published

EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.

Original publisher date fields

datePublished: Nov 8, 2026, 1:38:33 AM

dateUpdated: Nov 13, 2026, 3:11:42 AM

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

nvd · CVE-2026-123607

Published

NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.

Source analysis status: Deferred

Weakness classifications: CWE-835

Original publisher date fields

published: 2026-11-08T02:16:55.747

lastModified: 2026-11-13T04:17:38.567

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

osv · GHSA-3v94-mw7p-v465

Published

hickory-proto

crates.io

SEMVER · introduced 0.25.0-alpha.3 → last_affected 0.25.2

hickory-net

crates.io

SEMVER · introduced 0.26.0-alpha.1 → fixed 0.26.1

Original source record · Cite this exact observation · Complete original publisher JSON

osv · RUSTSEC-2026-0118

Published

hickory-proto

crates.io

SEMVER · introduced 0.25.0-alpha.3 → fixed 0.26.0-beta.1

Original source record · Cite this exact observation · Complete original publisher JSON

osv · RUSTSEC-2026-0120

Published

hickory-net

crates.io

SEMVER · introduced 0.0.0-0 → fixed 0.26.1

Original source record · Cite this exact observation · Complete original publisher JSON

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 15 Nov 02:45 UTC · 256 of 275 readable · 254 fully read · documentation 439/469 current