{"api_version":"1","generated_at":"2026-07-23T13:43:36+00:00","cve":"CVE-2026-55990","urls":{"html":"https://cve.report/CVE-2026-55990","api":"https://cve.report/api/cve/CVE-2026-55990.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-55990","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-55990"},"summary":{"title":"Packet of death for a DNSCrypt misconfigured Unbound","description":"In NLnet Labs Unbound 1.7.0 up to and including 1.25.1, when the 'dnscrypt:' clause lists more 'dnscrypt-provider-cert:' files than there are matching 'dnscrypt-secret-key:' files, Unbound fills only the matched prefix and leaves the tail slots at the '0xdb' fill that libsodium's allocator writes into every allocation. Unbound would then iterate over the number of cert files, not the actual slots, so it walks into a slot with garbage data filled with '0xdb' bytes. Any unauthenticated client that sends one UDP datagram of ≥ 68 bytes whose first 8 bytes are '0xdb' to 'dnscrypt-port' will use that garbage entry which leads to a garbage dereference killing the server. This is a silent faulty configuration that goes unnoticed until triggered with the right client query. Unbound needs to be compiled with DNSCrypt support ('--enable-dnscrypt').","state":"PUBLISHED","assigner":"NLnet Labs","published_at":"2026-07-22 14:17:21","updated_at":"2026-07-22 20:33:11"},"problem_types":["CWE-457","CWE-457 CWE-457: Use of Uninitialized Variable"],"metrics":[{"version":"3.1","source":"sep@nlnetlabs.nl","type":"Secondary","score":"5.9","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":5.9,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"CVSS","score":"5.9","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"baseScore":5.9,"baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}}],"references":[{"url":"https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-55990.txt","name":"https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-55990.txt","refsource":"sep@nlnetlabs.nl","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-55990","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-55990","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"NLnet Labs","product":"Unbound","version":"affected 1.7.0 1.25.2 semver","platforms":[]}],"timeline":[{"source":"CNA","time":"2026-05-18T00:00:00.000Z","lang":"en","value":"Issue reported by Qifan Zhang"},{"source":"CNA","time":"2026-06-10T00:00:00.000Z","lang":"en","value":"NLnet Labs shares patch"},{"source":"CNA","time":"2026-06-13T00:00:00.000Z","lang":"en","value":"Qifan Zhang verifies patch"},{"source":"CNA","time":"2026-07-22T00:00:00.000Z","lang":"en","value":"Fixes released with version 1.25.2"}],"solutions":[{"source":"CNA","title":"","value":"This issue is fixed starting with version 1.25.2","time":"","lang":"en"}],"workarounds":[],"exploits":[],"credits":[{"source":"CNA","value":"Qifan Zhang (Palo Alto Networks)","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-55990","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-07-22T14:04:13.654490Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-07-22T14:04:28.690Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"defaultStatus":"unaffected","product":"Unbound","vendor":"NLnet Labs","versions":[{"lessThan":"1.25.2","status":"affected","version":"1.7.0","versionType":"semver"}]}],"credits":[{"lang":"en","type":"finder","value":"Qifan Zhang (Palo Alto Networks)"}],"datePublic":"2026-07-22T00:00:00.000Z","descriptions":[{"lang":"en","value":"In NLnet Labs Unbound 1.7.0 up to and including 1.25.1, when the 'dnscrypt:' clause lists more 'dnscrypt-provider-cert:' files than there are matching 'dnscrypt-secret-key:' files, Unbound fills only the matched prefix and leaves the tail slots at the '0xdb' fill that libsodium's allocator writes into every allocation. Unbound would then iterate over the number of cert files, not the actual slots, so it walks into a slot with garbage data filled with '0xdb' bytes. Any unauthenticated client that sends one UDP datagram of ≥ 68 bytes whose first 8 bytes are '0xdb' to 'dnscrypt-port' will use that garbage entry which leads to a garbage dereference killing the server. This is a silent faulty configuration that goes unnoticed until triggered with the right client query. Unbound needs to be compiled with DNSCrypt support ('--enable-dnscrypt')."}],"metrics":[{"cvssV3_1":{"baseScore":5.9,"baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},"format":"CVSS","scenarios":[{"lang":"en","value":"Unbound configured with DNSCrypt support ('--enable-dnscrypt')"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-457","description":"CWE-457: Use of Uninitialized Variable","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-07-22T13:10:01.635Z","orgId":"206fc3a0-e175-490b-9eaa-a5738056c9f6","shortName":"NLnet Labs"},"references":[{"tags":["vendor-advisory"],"url":"https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-55990.txt"}],"solutions":[{"lang":"en","value":"This issue is fixed starting with version 1.25.2"}],"timeline":[{"lang":"en","time":"2026-05-18T00:00:00.000Z","value":"Issue reported by Qifan Zhang"},{"lang":"en","time":"2026-06-10T00:00:00.000Z","value":"NLnet Labs shares patch"},{"lang":"en","time":"2026-06-13T00:00:00.000Z","value":"Qifan Zhang verifies patch"},{"lang":"en","time":"2026-07-22T00:00:00.000Z","value":"Fixes released with version 1.25.2"}],"title":"Packet of death for a DNSCrypt misconfigured Unbound","x_generator":{"engine":"cvelib 1.8.0"}}},"cveMetadata":{"assignerOrgId":"206fc3a0-e175-490b-9eaa-a5738056c9f6","assignerShortName":"NLnet Labs","cveId":"CVE-2026-55990","datePublished":"2026-07-22T13:10:01.635Z","dateReserved":"2026-06-22T10:11:10.529Z","dateUpdated":"2026-07-22T14:04:28.690Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-07-22 14:17:21","lastModifiedDate":"2026-07-22 20:33:11","problem_types":["CWE-457","CWE-457 CWE-457: Use of Uninitialized Variable"],"metrics":{"cvssMetricV31":[{"source":"sep@nlnetlabs.nl","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":5.9,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"},"exploitabilityScore":2.2,"impactScore":3.6}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-07-22T14:04:13.654490Z","id":"CVE-2026-55990","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"55990","Ordinal":"1","Title":"Packet of death for a DNSCrypt misconfigured Unbound","CVE":"CVE-2026-55990","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"55990","Ordinal":"1","NoteData":"In NLnet Labs Unbound 1.7.0 up to and including 1.25.1, when the 'dnscrypt:' clause lists more 'dnscrypt-provider-cert:' files than there are matching 'dnscrypt-secret-key:' files, Unbound fills only the matched prefix and leaves the tail slots at the '0xdb' fill that libsodium's allocator writes into every allocation. Unbound would then iterate over the number of cert files, not the actual slots, so it walks into a slot with garbage data filled with '0xdb' bytes. Any unauthenticated client that sends one UDP datagram of ≥ 68 bytes whose first 8 bytes are '0xdb' to 'dnscrypt-port' will use that garbage entry which leads to a garbage dereference killing the server. This is a silent faulty configuration that goes unnoticed until triggered with the right client query. Unbound needs to be compiled with DNSCrypt support ('--enable-dnscrypt').","Type":"Description","Title":"Packet of death for a DNSCrypt misconfigured Unbound"}]}}}