CVE-2026-46582
Full vulnerability record from the local CVENow database.
Description
In NLnet Labs Unbound 1.6.0 up to and including 1.25.1, a replay of a wildcard rrset as another piece of data, could be briefly considered DNSSEC secure based only on the RRSIG validation and stored into cache, before later validation treats it as bogus based on NSEC validation. When the resolving thread puts secure on the rrset, and another thread that is on the serve expired path then picks up the updated rrset contents with the secure status for a reply, it can be used to change a specific record, next to a wildcard that could be covered by the wildcard, into the wildcard. A malicious actor can exploit the possible poisonous effect by having any DNSSEC-singed domain (irrelevant to the victim domain) and a CNAME wrapper record that points to a record next to a wildcard (that could be covered by the wildcard). Then quering Unbound for the wildcard sibling record would seed the secure message. A later (after expiry) query for the CNAME wrapper would need to resolve the target sibling record. If the wildcard replay is injected into the response, the wildcard rrset will update the expired sibling record with a secure status before completing proper wildcard validation with NSEC records and eventually treating the CNAME wrapper answer as bogus. The updated poisoned rrset is now secure and points to the wildcard. This vulnerability is explicit for the serve expired path and needs injection of the signed wildcard rrset without the NSEC accompanying rrset.
View original CVE JSON
{
"id": "CVE-2026-46582",
"sourceIdentifier": "[email protected]",
"published": "2026-07-22T14:17:19.397",
"lastModified": "2026-10-24T13:10:00.147",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In NLnet Labs Unbound 1.6.0 up to and including 1.25.1, a replay of a wildcard rrset as another piece of data, could be briefly considered DNSSEC secure based only on the RRSIG validation and stored into cache, before later validation treats it as bogus based on NSEC validation. When the resolving thread puts secure on the rrset, and another thread that is on the serve expired path then picks up the updated rrset contents with the secure status for a reply, it can be used to change a specific record, next to a wildcard that could be covered by the wildcard, into the wildcard. A malicious actor can exploit the possible poisonous effect by having any DNSSEC-singed domain (irrelevant to the victim domain) and a CNAME wrapper record that points to a record next to a wildcard (that could be covered by the wildcard). Then quering Unbound for the wildcard sibling record would seed the secure message. A later (after expiry) query for the CNAME wrapper would need to resolve the target sibling record. If the wildcard replay is injected into the response, the wildcard rrset will update the expired sibling record with a secure status before completing proper wildcard validation with NSEC records and eventually treating the CNAME wrapper answer as bogus. The updated poisoned rrset is now secure and points to the wildcard. This vulnerability is explicit for the serve expired path and needs injection of the signed wildcard rrset without the NSEC accompanying rrset."
},
{
"lang": "es",
"value": "En NLnet Labs Unbound 1.6.0 hasta la versión 1.25.1 inclusive, una repetición de un rrset comodín como otra pieza de datos, podría considerarse brevemente seguro para DNSSEC basándose únicamente en la validación RRSIG y almacenado en caché, antes de que una validación posterior lo trate como falso basándose en la validación NSEC. Cuando el hilo de resolución marca como seguro el rrset, y otro hilo que está en la ruta de servir expirados luego toma el contenido actualizado del rrset con el estado seguro para una respuesta, puede usarse para cambiar un registro específico, junto a un comodín que podría ser cubierto por el comodín, en el comodín. Un actor malicioso puede explotar el posible efecto venenoso al tener cualquier dominio firmado con DNSSEC (irrelevante para el dominio de la víctima) y un registro CNAME envoltorio que apunta a un registro junto a un comodín (que podría ser cubierto por el comodín). Luego, consultar a Unbound por el registro hermano del comodín sembraría el mensaje seguro. Una consulta posterior (después de la expiración) para el envoltorio CNAME necesitaría resolver el registro hermano objetivo. Si la repetición del comodín se inyecta en la respuesta, el rrset comodín actualizará el registro hermano expirado con un estado seguro antes de completar la validación adecuada del comodín con registros NSEC y finalmente tratando la respuesta del envoltorio CNAME como falsa. El rrset envenenado actualizado ahora es seguro y apunta al comodín. Esta vulnerabilidad es explícita para la ruta de servir expirados y necesita la inyección del rrset comodín firmado sin el rrset NSEC que lo acompaña."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "NLnet Labs",
"product": "Unbound",
"defaultStatus": "unaffected",
"versions": [
{
"version": "1.6.0",
"lessThan": "1.25.2",
"versionType": "semver",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N",
"baseScore": 3.7,
"baseSeverity": "LOW",
"attackVector": "NETWORK",
"attackComplexity": "HIGH",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 2.2,
"impactScore": 1.4
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-22T18:56:31.700965Z",
"id": "CVE-2026-46582",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-358"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:nlnetlabs:unbound:*:*:*:*:*:*:*:*",
"versionStartIncluding": "1.6.0",
"versionEndExcluding": "1.25.2",
"matchCriteriaId": "08138649-8C21-4AD6-ADC3-45CD66607B71"
}
]
}
]
}
],
"references": [
{
"url": "https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-46582.txt",
"source": "[email protected]",
"tags": [
"Vendor Advisory"
]
}
]
}