{"api_version":"1","generated_at":"2026-09-16T09:58:31+00:00","cve":"CVE-2026-77860","urls":{"html":"https://cve.report/CVE-2026-77860","api":"https://cve.report/api/cve/CVE-2026-77860.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-77860","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-77860"},"summary":{"title":"'serve-expired' can bypass Unbound 'wait-limit'","description":"In NLnetLabs Unbound 1.20.0 up to and including 1.26.0, a vulnerability on the 'serve-expired' code path can cause a double decrement on the 'wait-limit' counter per client IP essentially bypassing one of the counter measures that was introduced for DNSBomb (CVE-2024-33655). A malicious actor can exploit this by controlling an authoritative zone with short TTL, so cached entries expire quickly. Each 'slow' query, one the attacker's authoritative never answers, is followed by one query for an expired cached name, which is answered immediately via the 'serve-expired' path and decrements the counter twice. This second query was named 'pump'. By alternating slow queries and pumps, the attacker keeps the per-client counter at or below the configured 'wait-limit' indefinitely, and can hold an arbitrary number of pending queries from a single source IP, up to the global mesh quota (num-queries-per-thread); eventually bypassing one of the counter measures introduced for DNSBomb (CVE-2024-33655). This vulnerability is present on the 'serve-expired' code path.","state":"PUBLISHED","assigner":"NLnet Labs","published_at":"2026-09-16 09:17:05","updated_at":"2026-09-16 09:17:05"},"problem_types":["CWE-675","CWE-675 CWE-675: Multiple Operations on Resource in Single-Operation Context"],"metrics":[{"version":"3.1","source":"sep@nlnetlabs.nl","type":"Secondary","score":"3.7","severity":"LOW","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","baseScore":3.7,"baseSeverity":"LOW","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"LOW"}},{"version":"3.1","source":"CNA","type":"CVSS","score":"3.7","severity":"LOW","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","data":{"baseScore":3.7,"baseSeverity":"LOW","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","version":"3.1"}}],"references":[{"url":"https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-77860.txt","name":"https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-77860.txt","refsource":"sep@nlnetlabs.nl","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-77860","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-77860","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"NLnet Labs","product":"Unbound","version":"affected 1.20.0 1.26.1 semver","platforms":[]}],"timeline":[{"source":"CNA","time":"2026-07-30T00:00:00.000Z","lang":"en","value":"Issue reported by Xuanchao Xie"},{"source":"CNA","time":"2026-07-30T00:00:00.000Z","lang":"en","value":"NLnet Labs shares patch"},{"source":"CNA","time":"2026-07-30T00:00:00.000Z","lang":"en","value":"Xuanchao Xie verifies patch"},{"source":"CNA","time":"2026-09-16T00:00:00.000Z","lang":"en","value":"Fixes released with version 1.26.1"}],"solutions":[{"source":"CNA","title":"","value":"This issue is fixed starting with version 1.26.1","time":"","lang":"en"}],"workarounds":[],"exploits":[],"credits":[{"source":"CNA","value":"Xuanchao Xie (University of Science and Technology of China)","lang":"en"},{"source":"CNA","value":"Lutong Chen (University of Science and Technology of China)","lang":"en"},{"source":"CNA","value":"Kaiping Xue (University of Science and Technology of China)","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Unbound","vendor":"NLnet Labs","versions":[{"lessThan":"1.26.1","status":"affected","version":"1.20.0","versionType":"semver"}]}],"credits":[{"lang":"en","type":"finder","value":"Xuanchao Xie (University of Science and Technology of China)"},{"lang":"en","type":"finder","value":"Lutong Chen (University of Science and Technology of China)"},{"lang":"en","type":"finder","value":"Kaiping Xue (University of Science and Technology of China)"}],"datePublic":"2026-09-16T00:00:00.000Z","descriptions":[{"lang":"en","value":"In NLnetLabs Unbound 1.20.0 up to and including 1.26.0, a vulnerability on the 'serve-expired' code path can cause a double decrement on the 'wait-limit' counter per client IP essentially bypassing one of the counter measures that was introduced for DNSBomb (CVE-2024-33655). A malicious actor can exploit this by controlling an authoritative zone with short TTL, so cached entries expire quickly. Each 'slow' query, one the attacker's authoritative never answers, is followed by one query for an expired cached name, which is answered immediately via the 'serve-expired' path and decrements the counter twice. This second query was named 'pump'. By alternating slow queries and pumps, the attacker keeps the per-client counter at or below the configured 'wait-limit' indefinitely, and can hold an arbitrary number of pending queries from a single source IP, up to the global mesh quota (num-queries-per-thread); eventually bypassing one of the counter measures introduced for DNSBomb (CVE-2024-33655). This vulnerability is present on the 'serve-expired' code path."}],"metrics":[{"cvssV3_1":{"baseScore":3.7,"baseSeverity":"LOW","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","version":"3.1"},"format":"CVSS","scenarios":[{"lang":"en","value":"'serve-expired' configuration option used"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-675","description":"CWE-675: Multiple Operations on Resource in Single-Operation Context","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-09-16T08:29:23.501Z","orgId":"206fc3a0-e175-490b-9eaa-a5738056c9f6","shortName":"NLnet Labs"},"references":[{"tags":["vendor-advisory"],"url":"https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-77860.txt"}],"solutions":[{"lang":"en","value":"This issue is fixed starting with version 1.26.1"}],"timeline":[{"lang":"en","time":"2026-07-30T00:00:00.000Z","value":"Issue reported by Xuanchao Xie"},{"lang":"en","time":"2026-07-30T00:00:00.000Z","value":"NLnet Labs shares patch"},{"lang":"en","time":"2026-07-30T00:00:00.000Z","value":"Xuanchao Xie verifies patch"},{"lang":"en","time":"2026-09-16T00:00:00.000Z","value":"Fixes released with version 1.26.1"}],"title":"'serve-expired' can bypass Unbound 'wait-limit'","x_generator":{"engine":"cvelib 1.8.0"}}},"cveMetadata":{"assignerOrgId":"206fc3a0-e175-490b-9eaa-a5738056c9f6","assignerShortName":"NLnet Labs","cveId":"CVE-2026-77860","datePublished":"2026-09-16T08:29:23.501Z","dateReserved":"2026-09-07T14:06:21.971Z","dateUpdated":"2026-09-16T08:29:23.501Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-16 09:17:05","lastModifiedDate":"2026-09-16 09:17:05","problem_types":["CWE-675","CWE-675 CWE-675: Multiple Operations on Resource in Single-Operation Context"],"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:L","baseScore":3.7,"baseSeverity":"LOW","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"LOW"},"exploitabilityScore":2.2,"impactScore":1.4}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"77860","Ordinal":"1","Title":"'serve-expired' can bypass Unbound 'wait-limit'","CVE":"CVE-2026-77860","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"77860","Ordinal":"1","NoteData":"In NLnetLabs Unbound 1.20.0 up to and including 1.26.0, a vulnerability on the 'serve-expired' code path can cause a double decrement on the 'wait-limit' counter per client IP essentially bypassing one of the counter measures that was introduced for DNSBomb (CVE-2024-33655). A malicious actor can exploit this by controlling an authoritative zone with short TTL, so cached entries expire quickly. Each 'slow' query, one the attacker's authoritative never answers, is followed by one query for an expired cached name, which is answered immediately via the 'serve-expired' path and decrements the counter twice. This second query was named 'pump'. By alternating slow queries and pumps, the attacker keeps the per-client counter at or below the configured 'wait-limit' indefinitely, and can hold an arbitrary number of pending queries from a single source IP, up to the global mesh quota (num-queries-per-thread); eventually bypassing one of the counter measures introduced for DNSBomb (CVE-2024-33655). This vulnerability is present on the 'serve-expired' code path.","Type":"Description","Title":"'serve-expired' can bypass Unbound 'wait-limit'"}]}}}