CVE-2026-33278
CVE-2026-33278 is a critical-severity vulnerability in Nlnetlabs Unbound with a CVSS 3.x base score of 9.8. It is not currently listed as actively exploited by CISA, and its EPSS exploit-prediction score is low. The underlying weakness is classified as CWE-416.
Key facts
- Severity: Critical (CVSS 3.x base score 9.8)
- CVSS v4: 9.1
- EPSS exploit prediction: 1% (66th percentile)
- Actively exploited: Not listed in CISA KEV
- EU (EUVD) id: EUVD-2026-31075
- Weakness: CWE-416
- Affected product: Nlnetlabs Unbound
- Published:
- Last modified:
Description
NLnet Labs Unbound 1.19.1 up to and including version 1.25.0 has a vulnerability in the DNSSEC validator that enables denial of service and possible remote code execution as a result of deep copying a data structure and erroneously overwriting a destination pointer. An adversary can exploit the vulnerability by controlling a malicious signed zone and querying a vulnerable Unbound. When DS sub-queries need to suspend validation due to NSEC3 computational budget exhaustion (introduced in Unbound 1.19.1), Unbound deep-copies response messages to preserve them across memory region teardown. A struct-assignment bug overwrites the destination's pointer with the source's pointer. After the sub-query region is freed, the resumed validator dereferences this dangling pointer, triggering a crash or potentially enabling arbitrary code execution. Unbound 1.25.1 contains a patch with a fix to preserve the correct pointer when deep copying the data structure.
Frequently asked questions
- What is CVE-2026-33278?
- NLnet Labs Unbound 1.19.1 up to and including version 1.25.0 has a vulnerability in the DNSSEC validator that enables denial of service and possible remote code execution as a result of deep copying a data structure and erroneously overwriting a destination pointer. An adversary can exploit the vulnerability by controlling a malicious signed zone and querying a vulnerable Unbound. When DS sub-queries need to suspend validation due to NSEC3 computational budget exhaustion (introduced in Unbound 1.19.1), Unbound deep-copies response messages to preserve them across memory region teardown. A struct-assignment bug overwrites the destination's pointer with the source's pointer. After the sub-query region is freed, the resumed validator dereferences this dangling pointer, triggering a crash or potentially enabling arbitrary code execution. Unbound 1.25.1 contains a patch with a fix to preserve the correct pointer when deep copying the data structure.
- How severe is CVE-2026-33278?
- CVE-2026-33278 has a CVSS 3.x base score of 9.8, rated critical severity. It is exploitable over network with low attack complexity, requires no privileges and no user interaction. Impact on confidentiality is high, integrity high, and availability high.
- Is CVE-2026-33278 being actively exploited?
- It is not currently listed in CISA's KEV catalog. Its EPSS exploit-prediction score is 1% (66th percentile), an estimate of the probability of exploitation in the next 30 days.
- What products are affected by CVE-2026-33278?
- CVE-2026-33278 affects Nlnetlabs Unbound. See the affected-products list for the exact vulnerable versions.
- How do I fix CVE-2026-33278?
- Review the linked vendor and NVD advisories for patched versions and mitigations, then upgrade or apply the recommended workaround. Given its critical severity, prioritise patching exposed systems.
- Does CVE-2026-33278 have an EU (EUVD) identifier?
- Yes. CVE-2026-33278 is tracked in the ENISA EU Vulnerability Database (EUVD) as EUVD-2026-31075.
- When was CVE-2026-33278 published?
- CVE-2026-33278 was published on 2026-05-20 and last updated on 2026-06-30.
References
- https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-33278.txt
- https://access.redhat.com/errata/RHSA-2026:19752
- https://access.redhat.com/errata/RHSA-2026:23231
- https://access.redhat.com/errata/RHSA-2026:24369
- https://access.redhat.com/security/cve/CVE-2026-33278
- https://bugzilla.redhat.com/show_bug.cgi?id=2479808
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-33278.json
Affected products (1)
- cpe:2.3:a:nlnetlabs:unbound:*:*:*:*:*:*:*:*
More vulnerabilities in Nlnetlabs Unbound
- CVE-2026-42960 — Critical (CVSS 10.0): NLnet Labs Unbound up to and including version 1.25.0 is vulnerable to poisoning via promiscuous records for the…
- CVE-2019-25042 — Critical (CVSS 9.8): Unbound before 1.9.5 allows an out-of-bounds write via a compressed name in rdata_copy. NOTE: The vendor disputes that…
- CVE-2019-25039 — Critical (CVSS 9.8): Unbound before 1.9.5 allows an integer overflow in a size calculation in respip/respip.c. NOTE: The vendor disputes…
- CVE-2019-25038 — Critical (CVSS 9.8): Unbound before 1.9.5 allows an integer overflow in a size calculation in dnscrypt/dnscrypt.c. NOTE: The vendor disputes…
- CVE-2019-25035 — Critical (CVSS 9.8): Unbound before 1.9.5 allows an out-of-bounds write in sldns_bget_token_par. NOTE: The vendor disputes that this is a…
- CVE-2019-25034 — Critical (CVSS 9.8): Unbound before 1.9.5 allows an integer overflow in sldns_str2wire_dname_buf_origin, leading to an out-of-bounds write.…
All CVEs affecting Nlnetlabs Unbound →
Other CWE-416 (Use After Free) vulnerabilities
- CVE-2026-13782 — Critical (CVSS 10.0): Use after free in Browser in Google Chrome prior to 150.0.7871.47 allowed a remote attacker who had compromised the…
- CVE-2026-4725 — Critical (CVSS 10.0): Sandbox escape due to use-after-free in the Graphics: Canvas2D component. This vulnerability was fixed in Firefox 149…
- CVE-2026-4688 — Critical (CVSS 10.0): Sandbox escape due to use-after-free in the Disability Access APIs component. This vulnerability was fixed in Firefox…
- CVE-2025-24085 — Critical (CVSS 10.0): A use after free issue was addressed with improved memory management. This issue is fixed in iOS 18.3 and iPadOS 18.3,…
- CVE-2024-43102 — Critical (CVSS 10.0): Concurrent removals of certain anonymous shared memory mappings by using the UMTX_SHM_DESTROY sub-request of…
- CVE-2021-32495 — Critical (CVSS 10.0): Radare2 has a use-after-free vulnerability in pyc parser's get_none_object function. Attacker can read freed memory…