CVE-2026-109125: Possible cache poisoning vulnerability via a cache side-channel exposed by 'unwanted-reply-threshold'
In NLnet Labs Unbound up to and including version 1.26.1, an observable cache-level side-channel can be exposed with 'unwanted-reply-threshold > 0' configurations (not a default configuration). If a response-like UDP datagram reaches the upstream source port currently used by a recursive query, but its TXID does not match any pending query, Unbound counts the packet as an unwanted reply. When the accumulated count reaches the configured threshold, Unbound clears the worker's RRset cache and message cache. This cache clear action does not destroy the current upstream UDP pending query. Therefore, an external observer can distinguish whether a candidate port matches the current upstream source port by checking whether an existing cached item has been cleared. This is a cache side-channel vulnerability that can be used to probe the upstream source port. Although the attack is not feasible on default configurations and the suggested value (10 million) makes it an ureliable attack on a public resolver, in scenarios where the attacker can keep a concurrent query window alive, the attacker can first filter the source port and then perform birthday-style guessing against the TXID, making cache poisoning a feasible attack path.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
NLnet Labs Unboundto a version that resolves this vulnerability.Fixed in 1.26.2
Event History
Frequently Asked Questions
Which deployments should be prioritized for review?
Review Unbound deployments up to and including 1.26.1 that have unwanted-reply-threshold set above 0. Default configurations are not affected.
What does an attacker need to exploit the side channel?
The attacker needs to get response-like UDP datagrams to the upstream source port used by a live recursive query while using nonmatching TXIDs, then observe whether a cached item is cleared. Scenarios where the attacker can keep a concurrent query window alive make the technique more practical.
Does the configured threshold affect exploitability?
Yes. The cache is cleared only after unwanted replies accumulate to the configured threshold. The suggested value of 10 million makes the attack unreliable against a public resolver.
What can be changed if updating is not immediately possible?
Avoid configurations with unwanted-reply-threshold greater than 0, since the side channel is exposed only when that setting is above 0. The default configuration is not affected.