CVE-2026-81642 Heap buffer overflow and possible Remote Code Execution when digesting DNSKEY
A heap buffer overflow in Unbound's DNSSEC validator allows remote code execution or denial of service via malicious DNSKEY records.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-81642?
CVE-2026-81642 is a critical memory corruption vulnerability in Nlnetlabs Unbound, published on 16 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
In NLnet Labs Unbound up to and including 1.26.0, a vulnerability was found in the DNSSEC validator that enables denial of service and possible remote code execution as a result of digesting DNSKEYs. A DNSKEY with an owner compression pointer to its own RDATA can overflow the digest buffer. Remote code execution is possible through attacker controlled data. An adversary can exploit the vulnerability by controlling a malicious zone and querying a vulnerable Unbound.
Weakness: CWE-122
Which versions are affected by CVE-2026-81642?
It affects 1 product.
Linux distribution packages (40)
unbound Red Hat:enterprise_linux_eus:10.0 | All versions | 0:1.20.0-18.el10_0.13 |
unbound-libs Red Hat:enterprise_linux_eus:10.0 | All versions | 0:1.20.0-18.el10_0.13 |
unbound Red Hat:rhel_aus:8.4::appstream | All versions | 0:1.7.3-15.el8_4.4 |
unbound-libs Red Hat:rhel_aus:8.4::appstream | All versions | 0:1.7.3-15.el8_4.4 |
unbound Red Hat:rhel_aus:8.6::appstream | All versions | 0:1.7.3-17.el8_6.8 |
unbound-libs Red Hat:rhel_aus:8.6::appstream | All versions | 0:1.7.3-17.el8_6.8 |
python3-unbound Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
python3-unbound-debuginfo Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
unbound Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
unbound-debuginfo Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
unbound-debugsource Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
unbound-devel Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
unbound-libs Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
unbound-libs-debuginfo Red Hat:rhel_e4s:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
python3-unbound Red Hat:rhel_e4s:9.2::appstream | All versions | 0:1.16.2-3.el9_2.6 |
python3-unbound-debuginfo Red Hat:rhel_e4s:9.2::appstream | All versions | 0:1.16.2-3.el9_2.6 |
unbound Red Hat:rhel_e4s:9.2::appstream | All versions | 0:1.16.2-3.el9_2.6 |
unbound-debuginfo Red Hat:rhel_e4s:9.2::appstream | All versions | 0:1.16.2-3.el9_2.6 |
unbound-debugsource Red Hat:rhel_e4s:9.2::appstream | All versions | 0:1.16.2-3.el9_2.6 |
unbound-libs Red Hat:rhel_e4s:9.2::appstream | All versions | 0:1.16.2-3.el9_2.6 |
unbound-libs-debuginfo Red Hat:rhel_e4s:9.2::appstream | All versions | 0:1.16.2-3.el9_2.6 |
python3-unbound Red Hat:rhel_e4s:9.4::appstream | All versions | 0:1.16.2-8.el9_4.3 |
python3-unbound-debuginfo Red Hat:rhel_e4s:9.4::appstream | All versions | 0:1.16.2-8.el9_4.3 |
unbound Red Hat:rhel_e4s:9.4::appstream | All versions | 0:1.16.2-8.el9_4.3 |
unbound-debuginfo Red Hat:rhel_e4s:9.4::appstream | All versions | 0:1.16.2-8.el9_4.3 |
unbound-debugsource Red Hat:rhel_e4s:9.4::appstream | All versions | 0:1.16.2-8.el9_4.3 |
unbound-libs Red Hat:rhel_e4s:9.4::appstream | All versions | 0:1.16.2-8.el9_4.3 |
unbound-libs-debuginfo Red Hat:rhel_e4s:9.4::appstream | All versions | 0:1.16.2-8.el9_4.3 |
unbound Red Hat:rhel_els:7 | All versions | 0:1.6.6-5.el7_9.2 |
unbound-debuginfo Red Hat:rhel_els:7 | All versions | 0:1.6.6-5.el7_9.2 |
unbound-devel Red Hat:rhel_els:7 | All versions | 0:1.6.6-5.el7_9.2 |
unbound-libs Red Hat:rhel_els:7 | All versions | 0:1.6.6-5.el7_9.2 |
unbound-python Red Hat:rhel_els:7 | All versions | 0:1.6.6-5.el7_9.2 |
unbound Red Hat:rhel_eus:9.6::appstream | All versions | 0:1.16.2-19.el9_6.2 |
unbound-libs Red Hat:rhel_eus:9.6::appstream | All versions | 0:1.16.2-19.el9_6.2 |
unbound Red Hat:rhel_eus_long_life:8.4::appstream | All versions | 0:1.7.3-15.el8_4.4 |
unbound-libs Red Hat:rhel_eus_long_life:8.4::appstream | All versions | 0:1.7.3-15.el8_4.4 |
unbound Red Hat:rhel_eus_long_life:8.6::appstream | All versions | 0:1.7.3-17.el8_6.8 |
unbound-libs Red Hat:rhel_eus_long_life:8.6::appstream | All versions | 0:1.7.3-17.el8_6.8 |
python3-unbound Red Hat:rhel_tus:8.8::appstream | All versions | 0:1.16.2-5.el8_8.6 |
Products include Nlnetlabs Unbound.
How do I fix CVE-2026-81642?
Upgrade to a fixed version.
Upgrade to the fixed version. Memory-safe languages, compiler hardening and fuzzing prevent most new cases. More about Memory corruption.
Is CVE-2026-81642 being exploited?
There is no known exploitation of CVE-2026-81642 in the wild and no public exploit code.
Public exploit code: 1 proofs of concept on GitHub.
Other vulnerabilities in Nlnetlabs Unbound
- CVE-2026-33278 Possible arbitrary code execution during DNSSEC validation
- CVE-2026-42944 Heap overflow with multiple NSID, COOKIE, PADDING EDNS options
- CVE-2026-42959 Crash during DNSSEC validation of malicious content
- CVE-2026-82717 CNAME synthesis could lead to heap corruption
- CVE-2026-81634 Possible heap buffer overflow during DNSSEC canonicalization
Sources
Also known as ALPINE-CVE-2026-81642, AZL-101709, CLSA-2026-1790264021, CLSA-2026-1790264968, CLSA-2026-1790590437, DEBIAN-CVE-2026-81642 and 13 more.