CVE-2026-52863 Overview
CVE-2026-52863 is a use-after-free vulnerability [CWE-416] in NLnet Labs Unbound, a widely deployed recursive DNS resolver. The flaw affects versions 1.25.0 through 1.25.1. A fix intended to make the respip and dns64 modules interoperate introduced a shallow copy of the view name reference. When Unbound operates under load and the jostle logic drops slow queries, the parent query that owns the view name can be freed while a subquery still references it. This condition can lead to memory corruption and process termination.
Critical Impact
An attacker capable of pressuring a vulnerable Unbound resolver configured with access-control-view and interacting respip/rpz and subquery-attaching modules can trigger memory corruption, potentially crashing the DNS service.
Affected Products
- NLnet Labs Unbound 1.25.0
- NLnet Labs Unbound 1.25.1
- Deployments using respip or rpz with dns64, subnetcache, or respip CNAME redirection alongside access-control-view
Discovery Timeline
- 2026-07-22 - CVE-2026-52863 published to NVD
- 2026-07-22 - Last updated in NVD database
Technical Details for CVE-2026-52863
Vulnerability Analysis
Unbound processes DNS queries through a chain of modules. When respip/rpz policy triggers redirection and cooperates with modules that spawn subqueries such as dns64, subnetcache, or respip CNAME redirection, the resolver attaches a view context to each subquery. The fix that enabled respip and dns64 to work together copies only the pointer to the view name rather than duplicating the string. The subquery holds a shallow reference tied to the lifetime of the parent super query.
Under load, Unbound activates jostle logic that evicts slow-running queries to protect throughput. If the super query owning the view name is jostled out, its memory is released. The surviving subquery then dereferences a dangling pointer, producing a use-after-free condition. Debug builds instrumented with AddressSanitizer terminate the process immediately, while production builds may continue with corrupted state.
Root Cause
The root cause is improper lifetime management between parent and child query structures. The shallow copy created by the interoperability fix does not increment a reference count or duplicate the underlying buffer. Ownership semantics assume the parent query outlives its children, an assumption violated by the jostle eviction path.
Attack Vector
Exploitation requires the server to be configured with access-control-view and one of the respip or rpz modules together with dns64, subnetcache, or respip CNAME redirection. An attacker generates sustained query pressure that forces jostle logic to drop slow parent queries while related subqueries remain in flight. The race between free and reuse produces the use-after-free. The attack vector is network-based, but complexity is high because it depends on memory allocator behavior and precise timing.
The advisory notes that crash likelihood is low and depends on the memory layout at the moment of eviction. See the NLnet Labs CVE-2026-52863 Advisory for technical details.
Detection Methods for CVE-2026-52863
Indicators of Compromise
- Unexpected termination or restart of the unbound daemon under sustained query load
- AddressSanitizer or debug build logs reporting use-after-free in view name handling
- Segmentation faults recorded in system logs correlated with high query volumes
Detection Strategies
- Audit unbound.conf for concurrent use of access-control-view with respip, rpz, dns64, or subnetcache modules on affected versions
- Monitor Unbound process uptime and crash counters through unbound-control stats
- Correlate resolver crashes with jostle counters such as num.query.tcp throttling and mem.mod.* telemetry
Monitoring Recommendations
- Ingest Unbound operational logs and process-exit events into a centralized logging pipeline
- Alert on repeated daemon restarts within short intervals, which indicate reachability of the flaw
- Track query rate anomalies against configured num-queries-per-thread limits that govern jostle activation
How to Mitigate CVE-2026-52863
Immediate Actions Required
- Identify all resolvers running Unbound 1.25.0 or 1.25.1 and enumerate their module configurations
- Upgrade to a fixed Unbound release as published by NLnet Labs
- If upgrading immediately is not possible, reconfigure affected resolvers to remove the vulnerable module combination
Patch Information
NLnet Labs has published the advisory and remediation details in the NLnet Labs CVE-2026-52863 Advisory. Operators should apply the vendor-supplied patch or upgrade to a version later than 1.25.1 that duplicates the view name string rather than copying the pointer.
Workarounds
- Remove access-control-view directives from unbound.conf on affected versions
- Disable dns64, subnetcache, or respip CNAME redirection when respip or rpz policies are required
- Increase num-queries-per-thread and tune server capacity to reduce activation of jostle eviction under normal load
# Verify installed Unbound version
unbound -V | head -n 1
# Inspect module and view configuration
grep -E "module-config|access-control-view|respip|rpz|dns64|subnetcache" /etc/unbound/unbound.conf
# Validate configuration after changes and reload
unbound-checkconf /etc/unbound/unbound.conf && unbound-control reload
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

