CVE-2026-50252
Possible cache poisoning attack by mapping source port population per thread
Description
In NLnet Labs Unbound 1.4.22 up to and including 1.25.1, UDP source port is randomized and intended to serve as a secret value that increases the entropy of DNS transactions. When resolver load balancing policies depend on the source port while their outcome is revealed this secrecy is undermined. The vulnerability arises when the load balancing policy is consistent with respect to the incoming source UDP port and IP address while heavily depending on the incoming source UDP port as a randomization source. When the SO_REUSEPORT configuration option is enabled ('so-reuseport: yes') in Unbound (by default), it meets these conditions, making it vulnerable for DNS cache poisoning attacks. Upon startup, Unbound randomly partitions the available UDP source port space into disjoint subsets of (almost) equal size, assigning each subset to a specific worker thread. When an incoming DNS query is received, the kernel’s SO_REUSEPORT load balancing mechanism deterministically assigns the query to a socket associated with a particular thread. All outgoing DNS queries generated during the resolution of that request use source ports selected exclusively from the port subset assigned to the corresponding thread. Since these port subsets are disjoint across threads, the source port observed in a resolver’s outgoing query to an authoritative name server serves as a reliable indicator of the worker thread that processed the original client query. A malicious actor can acquire the mapping between incoming UDP source ports (for a given fixed source IP address) and Unbound worker threads and leverage it to conduct DNS cache poisoning attacks by effectively lowering the random port population per thread.
INFO
Published Date :
July 22, 2026, 2:17 p.m.
Last Modified :
Oct. 24, 2026, 1:10 p.m.
Remotely Exploit :
No
Source :
[email protected]
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS | 134c704f-9b21-4f2e-91b3-4a467353bcc0 | |||||
| CVSS 3.1 | CRITICAL | [email protected] | ||||
| CVSS 4.0 | MEDIUM | 206fc3a0-e175-490b-9eaa-a5738056c9f6 | ||||
| CVSS 4.0 | MEDIUM | [email protected] |
Solution
- Disable SO_REUSEPORT in Unbound configuration.
- Restart Unbound service.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-50252.
| URL | Resource |
|---|---|
| https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-50252.txt | Vendor Advisory |
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-50252 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-50252
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-50252 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-50252 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Translated by [email protected]
Oct. 24, 2026
Action Type Old Value New Value Added Translation Title: Unbound de NLnet Labs, Description: En NLnet Labs Unbound 1.4.22 hasta e incluyendo 1.25.1, el puerto de origen UDP está aleatorizado y está destinado a servir como un valor secreto que aumenta la entropía de las transacciones DNS. Cuando las políticas de balanceo de carga del resolvedor dependen del puerto de origen mientras su resultado es revelado, este secreto se ve socavado. La vulnerabilidad surge cuando la política de balanceo de carga es consistente con respecto al puerto de origen UDP entrante y la dirección IP, mientras depende en gran medida del puerto de origen UDP entrante como fuente de aleatorización. Cuando la opción de configuración SO_REUSEPORT está habilitada (’so-reuseport: yes’) en Unbound (por defecto), cumple estas condiciones, haciéndolo vulnerable a ataques de envenenamiento de caché DNS. Al iniciar, Unbound particiona aleatoriamente el espacio de puertos de origen UDP disponible en subconjuntos disjuntos de tamaño (casi) igual, asignando cada subconjunto a un hilo de trabajador específico. Cuando se recibe una consulta DNS entrante, el mecanismo de balanceo de carga SO_REUSEPORT del kernel asigna la consulta de forma determinista a un socket asociado con un hilo particular. Todas las consultas DNS salientes generadas durante la resolución de esa solicitud usan puertos de origen seleccionados exclusivamente del subconjunto de puertos asignado al hilo correspondiente. Dado que estos subconjuntos de puertos son disjuntos entre hilos, el puerto de origen observado en la consulta saliente de un resolvedor a un servidor de nombres autoritativo sirve como un indicador fiable del hilo de trabajador que procesó la consulta original del cliente. Un actor malicioso puede adquirir el mapeo entre puertos de origen UDP entrantes (para una dirección IP de origen fija dada) y los hilos de trabajador de Unbound y aprovecharlo para llevar a cabo ataques de envenenamiento de caché DNS al reducir efectivamente la población de puertos aleatorios por hilo. -
Initial Analysis by [email protected]
Jul. 24, 2026
Action Type Old Value New Value Added CVSS V3.1 AV:A/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H Added CPE Configuration OR *cpe:2.3:a:nlnetlabs:unbound:*:*:*:*:*:*:*:* versions from (including) 1.4.22 up to (excluding) 1.25.2 Added Reference Type NLnet Labs: https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-50252.txt Types: Vendor Advisory -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Jul. 22, 2026
Action Type Old Value New Value Added SSVC {'id': 'CVE-2026-50252', 'role': 'CISA Coordinator', 'options': [{'exploitation': 'none'}, {'automatable': 'no'}, {'technicalImpact': 'partial'}], 'version': '2.0.3', 'timestamp': '2026-07-22T14:18:29.647593Z'} -
New CVE Received by [email protected]
Jul. 22, 2026
Action Type Old Value New Value Added Affected [{'vendor': 'NLnet Labs', 'product': 'Unbound', 'versions': [{'status': 'affected', 'version': '1.4.22', 'lessThan': '1.25.2', 'versionType': 'semver'}], 'defaultStatus': 'unaffected'}] Added Description In NLnet Labs Unbound 1.4.22 up to and including 1.25.1, UDP source port is randomized and intended to serve as a secret value that increases the entropy of DNS transactions. When resolver load balancing policies depend on the source port while their outcome is revealed this secrecy is undermined. The vulnerability arises when the load balancing policy is consistent with respect to the incoming source UDP port and IP address while heavily depending on the incoming source UDP port as a randomization source. When the SO_REUSEPORT configuration option is enabled ('so-reuseport: yes') in Unbound (by default), it meets these conditions, making it vulnerable for DNS cache poisoning attacks. Upon startup, Unbound randomly partitions the available UDP source port space into disjoint subsets of (almost) equal size, assigning each subset to a specific worker thread. When an incoming DNS query is received, the kernel’s SO_REUSEPORT load balancing mechanism deterministically assigns the query to a socket associated with a particular thread. All outgoing DNS queries generated during the resolution of that request use source ports selected exclusively from the port subset assigned to the corresponding thread. Since these port subsets are disjoint across threads, the source port observed in a resolver’s outgoing query to an authoritative name server serves as a reliable indicator of the worker thread that processed the original client query. A malicious actor can acquire the mapping between incoming UDP source ports (for a given fixed source IP address) and Unbound worker threads and leverage it to conduct DNS cache poisoning attacks by effectively lowering the random port population per thread. Added CVSS V4.0 AV:A/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:H/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:Amber Added CWE CWE-349 Added Reference https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-50252.txt