← Back to Feed CACHED · 2026-09-17 03:16:13 · CACHE_KEY CVE-2026-81642
CVE-2026-81642 · CWE-122 · Disclosed 2026-09-16

In NLnet Labs Unbound up to and including 1.26.0

ASSESSED — NOISGATE
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Like leaving the water treatment plant's intake valve open to anyone who ships you a specially shaped pipe fitting

CVE-2026-81642 is a heap-based buffer overflow (CWE-122) in NLnet Labs Unbound versions up to and including 1.26.0. The flaw lives in the DNSSEC validation path: when Unbound digests a DNSKEY record whose owner name uses a compression pointer back into its own RDATA, the decompressed name is written past the end of the digest buffer. Because the overflowed data is attacker-controlled (it comes from the crafted DNSKEY), this yields reliable denial of service and *possible* remote code execution. The trigger is trivial — any client behind the resolver merely needs to look up a name in an attacker-controlled zone (click a link, load a tracking pixel, receive an email). DNSSEC validation is enabled by default in Unbound.

There is no vendor CVSS 3.1 baseline; the CVSS 4.0 score published alongside the advisory is 9.1 Critical. That score is defensible. The attack is unauthenticated, network-reachable, requires no user interaction on the resolver itself, and the only prerequisite — getting Unbound to query an attacker-controlled zone — is trivially satisfied in any enterprise that allows outbound web or email. The 'possible RCE' qualifier in the advisory reflects honest uncertainty about heap layout and compilation hardening (ASLR, stack canaries), not a fundamental barrier; heap overflows in C-based resolvers have been weaponized repeatedly (see: CVE-2020-8617, CVE-2015-7547). The reliable DoS impact alone is severe for a DNS resolver serving thousands of hosts.

"Unauthenticated heap overflow in Unbound DNSSEC validator is one malicious DNS lookup away from crashing or owning your resolver"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Register malicious zone with crafted DNSKEY

The attacker registers a domain and stands up an authoritative nameserver that serves a DNSKEY record with a compression pointer in the owner name that references back into the record's own RDATA. This is a one-time setup requiring only a domain and a DNS server. Tools like ldns or raw packet crafting with scapy can produce the malformed record.
Conditions required:
  • Attacker controls an authoritative DNS zone
Where this breaks in practice:
  • None — domain registration is trivial and costs single-digit dollars
STEP 02

Trigger DNS resolution from behind target Unbound

The attacker needs any host behind the target Unbound resolver to look up a name in the malicious zone. This can be achieved via a phishing email with an embedded tracking pixel, a link in a chat message, a web page with a sub-resource hosted on the attacker domain, or even a DNS prefetch hint. No credentials or direct network access to the resolver is required — only the ability to influence one DNS query from any client.
Conditions required:
  • At least one client behind the target resolver can be induced to resolve the attacker's domain
Where this breaks in practice:
  • Organizations with strict DNS RPZ or domain-age blocklists may filter newly registered domains
  • Split-horizon or forwarding-only configs that never recurse to external authorities would not trigger the path
Detection/coverage: DNS query logs will show the lookup to the attacker domain; RPZ or threat-intel feeds may flag it post-hoc
STEP 03

Unbound validates DNSKEY and overflows digest buffer

When Unbound receives the malicious DNSKEY response and begins DNSSEC validation, it decompresses the owner name's compression pointer. Because the pointer references the record's own RDATA, decompression writes attacker-controlled bytes past the allocated digest buffer on the heap. This is a classic heap buffer overflow with controlled content and size.
Conditions required:
  • DNSSEC validation is enabled (default in Unbound)
  • Unbound version ≤ 1.26.0
Where this breaks in practice:
  • Administrators who have explicitly disabled DNSSEC validation (module-config: "iterator" without validator) are not affected, but this is uncommon in production
Detection/coverage: Crash logs (unbound.log or journalctl -u unbound) will show SIGSEGV/SIGABRT in the DNSSEC validation code path
STEP 04

Denial of service achieved; RCE attempted

The overflow reliably crashes the Unbound process, denying DNS resolution to all clients on the network segment. If the attacker has profiled the target's heap layout (glibc version, Unbound compile flags, ASLR entropy), they may achieve code execution by overwriting heap metadata or adjacent objects. RCE is described as 'possible' by the vendor, contingent on compilation and runtime conditions. Even without RCE, repeated crashes defeat systemd restart loops via rate limiting.
Conditions required:
  • For DoS: none beyond step 3
  • For RCE: knowledge of target heap layout, absence of or bypass of ASLR/stack canaries
Where this breaks in practice:
  • Modern Linux distros compile Unbound with ASLR, stack canaries, and FORTIFY_SOURCE, making reliable RCE harder but not impossible
  • Some deployments run Unbound in a chroot or under seccomp, limiting post-exploitation impact
Detection/coverage: Process monitoring (systemd watchdog, Nagios/Zabbix DNS health checks) will detect resolver downtime within seconds; heap corruption artifacts may appear in core dumps
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNot observed. No campaigns, no GreyNoise tags, no CISA alerts as of 2026-09-17. Disclosed yesterday (2026-09-16).
Proof-of-conceptNo public PoC yet. The SecureWithUmer/CVE-2026-PoCs repo tracks 2026 CVEs but has no entry for this CVE. The advisory description is detailed enough that a competent DNS researcher could reproduce the trigger within days using ldns-keygen modifications or raw scapy crafting.
EPSS0.00521 (0.52%) — 30-day exploitation probability. Low, but this reflects the 1-day-old disclosure window; expect upward movement once analysis posts circulate.
KEV statusNot listed on CISA KEV as of 2026-09-17.
CVSS vectorCVSS 4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H9.1 Critical. Network-reachable, low complexity, no privileges, no user interaction. All impact metrics high.
Affected versionsUnbound ≤ 1.26.0 (all branches). This includes distro-packaged versions in Debian, Ubuntu, RHEL/Fedora, FreeBSD, and Alpine that have not yet backported the fix.
Fixed versionsUnbound 1.26.1 (released 2026-09-16). Distro backports are pending — check apt changelog unbound / rpm -q --changelog unbound for your distribution.
Scanning / exposureShodan shows ~180,000 publicly reachable Unbound instances on port 53 globally (many are ISP/enterprise resolvers). However, the attack does not require the resolver to be internet-facing — any internal client resolving an attacker domain triggers the path.
Disclosure date2026-09-16 — coordinated disclosure by NLnet Labs with same-day patch release (1.26.1).
ReporterNot publicly credited in the advisory. NLnet Labs internal or coordinated external research.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.0/10)

The single most decisive factor is the trivial attack-path reachability combined with Unbound's canonical role as network DNS infrastructure — the attacker needs only one client behind the resolver to look up a domain they control, which requires no authentication, no network access to the resolver, and no user interaction on the target. Unbound is, by definition, the DNS resolver for every host on its network segment; a crash or compromise has fleet-scale blast radius for name resolution, and RCE would yield control of a trust-critical network service.

HIGH Vulnerability existence and DoS impact
MEDIUM RCE achievability in hardened deployments
LOW Active exploitation timeline prediction

Why this verdict

  • Unauthenticated, zero-interaction trigger: The attacker never touches the resolver directly. Any DNS lookup to an attacker-controlled zone — triggered via email, web, chat, or even DNS prefetch — is sufficient. This is the lowest-friction remote trigger possible.
  • DNSSEC validation is on by default: The vulnerable code path is exercised in the default Unbound configuration. Administrators who disabled DNSSEC validation are not affected, but this is rare in production deployments that chose Unbound specifically for its validation capabilities.
  • Heap overflow with attacker-controlled data: CWE-122 in a C-based network daemon with attacker-controlled overflow content is the textbook precondition for RCE. The vendor's 'possible RCE' language reflects honest hedging, not a fundamental barrier.
  • Role multiplier: Unbound is canonically a high-value network infrastructure component. ≥95% of Unbound installations serve as the recursive resolver for a network segment (enterprise LAN, ISP, cloud VPC). Compromise means: (a) DoS → all DNS-dependent services fail (authentication, web, email, updates, EDR telemetry); (b) RCE → attacker controls name resolution and can redirect any domain to attacker infrastructure, enabling credential theft, MITM, and supply-chain attacks via poisoned update URLs. The blast radius is fleet-scale by definition. This sets the verdict floor at CRITICAL.
  • Nine-CVE batch release signals deep audit surface: The 1.26.1 release fixes 9 CVEs simultaneously, including use-after-free and heap corruption bugs. This suggests the codebase was under intensive scrutiny, and the attack surface may be broader than any single CVE.

Why not higher?

This is already assessed at CRITICAL (9.0). A 10.0 would require demonstrated wormable exploitation or active mass exploitation. Neither condition is met: no public PoC exists, no ITW exploitation is observed, and RCE reliability depends on compilation and runtime hardening. The 0.1-point reduction from the vendor's 9.1 CVSS 4.0 score reflects the RCE uncertainty.

Why not lower?

Downgrading below CRITICAL would require evidence that the attack path has meaningful friction or that Unbound is not canonically infrastructure. Neither is true. The trigger requires zero authentication and zero direct access to the resolver — just one DNS lookup from any client. DNSSEC validation is the default. Unbound IS the resolver by definition; ≥95% of installs occupy the high-value role. DoS alone on a network's DNS resolver is a HIGH-floor event; the credible RCE potential on a trust-critical service pushes through to CRITICAL.

05 · Compensating Control

What to do — in priority order.

  1. Deploy DNS RPZ with domain-age and threat-intel blocklists — Block resolution of domains registered within the last 30 days or flagged by threat feeds. This raises the bar for the attacker to use an aged, clean domain. Deploy within 3 days per the noisgate mitigation SLA for CRITICAL findings.
  2. Enable Unbound access-control to restrict query sources — Ensure access-control directives limit recursive queries to known internal subnets only. While this doesn't prevent the attack (internal clients are the trigger), it reduces exposure if the resolver is inadvertently internet-facing. Deploy within 3 days.
  3. Run Unbound under systemd hardening (seccomp, chroot, PrivateNetwork) — Apply ProtectSystem=strict, PrivateDevices=yes, NoNewPrivileges=yes, and SystemCallFilter=~@privileged in the systemd unit. This limits post-exploitation capability if RCE is achieved. Deploy within 3 days.
  4. Monitor resolver health with sub-minute polling — Configure Nagios, Zabbix, or Prometheus blackbox-exporter to query the resolver every 15 seconds. Automated restart via systemd is not sufficient — an attacker can crash faster than rate-limited restarts recover. Alert on consecutive failures.
  5. Prepare fallback resolver — Ensure clients have a secondary DNS resolver (e.g., a separate Unbound instance on a different host, or a cloud resolver like 1.1.1.1/8.8.8.8 as tertiary) to maintain resolution during a DoS attack on the primary.
What doesn't work
  • WAF / IPS signatures — This is not an HTTP vulnerability. DNS-layer attacks bypass web application firewalls entirely. IDS/IPS rules for DNS anomalies may detect the crash but cannot prevent the malformed DNSKEY from reaching Unbound during recursive resolution.
  • Firewall rules blocking inbound port 53 — The attack does not require inbound access to the resolver. The malicious DNSKEY arrives as a *response* to an outbound recursive query initiated by Unbound itself. Blocking inbound DNS does nothing.
  • Disabling DNSSEC at the client — Client-side DNSSEC settings are irrelevant. The validation happens on the Unbound resolver, not the stub resolver on the client.
06 · Verification

Crowdsourced verification payload.

Run this script on each host running Unbound as any user with read access to the Unbound binary (typically root or the unbound service account). Invoke with: sudo bash check_cve_2026_81642.sh. No arguments required. The script checks the installed Unbound version against the fixed version (1.26.1).

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_81642.sh — Detect CVE-2026-81642 (Unbound DNSKEY digest heap overflow)
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

set -euo pipefail

FIXED_MAJOR=1
FIXED_MINOR=26
FIXED_PATCH=1

# Locate unbound binary
UNBOUND_BIN=$(command -v unbound 2>/dev/null || echo "")
if [[ -z "$UNBOUND_BIN" ]]; then
  # Try common paths
  for p in /usr/sbin/unbound /usr/local/sbin/unbound /usr/bin/unbound; do
    [[ -x "$p" ]] && UNBOUND_BIN="$p" && break
  done
fi

if [[ -z "$UNBOUND_BIN" ]]; then
  echo "UNKNOWN — Unbound binary not found on this host."
  exit 2
fi

# Extract version
VERSION_OUTPUT=$($UNBOUND_BIN -V 2>&1 | head -1)
VERSION=$(echo "$VERSION_OUTPUT" | grep -oP '\d+\.\d+\.\d+' | head -1)

if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN — Could not parse Unbound version from: $VERSION_OUTPUT"
  exit 2
fi

IFS='.' read -r MAJ MIN PAT <<< "$VERSION"

echo "Detected Unbound version: $VERSION (binary: $UNBOUND_BIN)"
echo "Fixed in: ${FIXED_MAJOR}.${FIXED_MINOR}.${FIXED_PATCH}"

# Compare versions
if (( MAJ > FIXED_MAJOR )) || \
   (( MAJ == FIXED_MAJOR && MIN > FIXED_MINOR )) || \
   (( MAJ == FIXED_MAJOR && MIN == FIXED_MINOR && PAT >= FIXED_PATCH )); then
  echo "PATCHED — Unbound $VERSION is >= ${FIXED_MAJOR}.${FIXED_MINOR}.${FIXED_PATCH}. CVE-2026-81642 is fixed."
  exit 0
else
  echo "VULNERABLE — Unbound $VERSION is < ${FIXED_MAJOR}.${FIXED_MINOR}.${FIXED_PATCH}. CVE-2026-81642 applies."
  # Also check if DNSSEC validation is enabled
  CONF=$(unbound-checkconf -o module-config 2>/dev/null || echo "unknown")
  if echo "$CONF" | grep -q "validator"; then
    echo "  DNSSEC validation is ENABLED (default) — vulnerable code path is active."
  elif [[ "$CONF" == "unknown" ]]; then
    echo "  Could not determine DNSSEC validation status. Assume vulnerable."
  else
    echo "  DNSSEC validation appears DISABLED — vulnerable code path may not be exercised."
  fi
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Patch Unbound to 1.26.1 immediately. This CVE was disclosed yesterday (2026-09-16) with a same-day fix. The attack requires zero authentication and zero direct access to the resolver — any client resolving an attacker-controlled domain triggers a heap overflow that reliably crashes your DNS infrastructure and may yield RCE. Under the noisgate mitigation SLA for CRITICAL findings, deploy compensating controls (DNS RPZ domain-age blocks, systemd hardening, health monitoring) within 3 days. Under the noisgate remediation SLA, complete the patch rollout to all Unbound instances within 90 days, but given the low friction of this attack and the one-line fix (version bump), aim to have production resolvers patched this week. Check distro package repos daily — Debian, Ubuntu, RHEL, and FreeBSD backports are pending. If your distro hasn't released a package yet, build from the upstream 1.26.1 tarball or apply the vendor's minimal patch. Do not wait.

Sources

  1. NLnet Labs Unbound Security Advisories
  2. CVE-2026-81642 Detail — CVE Feed
  3. Unbound 1.26.1 Release — GitHub
  4. CVE-2026-81642 Analysis — Strix AI
  5. Unbound DNSKEY Digest Overflow Analysis — HOL Blog
  6. NLnet Labs CVE-2026-81642 Advisory Text
  7. DNS Server Market Share Statistics
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.