CVE-2026-77860 (GCVE-0-2026-77860)
Vulnerability from cvelistv5
Published
2026-09-16 08:29
Modified
2026-09-16 14:45
Severity ?
VLAI Severity ?
EPSS score ?
CWE
- CWE-675 - Multiple Operations on Resource in Single-Operation Context
Summary
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.
References
| URL | Tags | ||||
|---|---|---|---|---|---|
|
|||||
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| NLnet Labs | Unbound |
Version: 1.20.0 ≤ |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-77860",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-16T14:45:26.867772Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-09-16T14:45:35.788Z",
"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.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 \u0027serve-expired\u0027 code path can cause a double decrement on the \u0027wait-limit\u0027 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 \u0027slow\u0027 query, one the attacker\u0027s authoritative never answers, is followed by one query for an expired cached name, which is answered immediately via the \u0027serve-expired\u0027 path and decrements the counter twice. This second query was named \u0027pump\u0027. By alternating slow queries and pumps, the attacker keeps the per-client counter at or below the configured \u0027wait-limit\u0027 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 \u0027serve-expired\u0027 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": "\u0027serve-expired\u0027 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": "\u0027serve-expired\u0027 can bypass Unbound \u0027wait-limit\u0027",
"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-16T14:45:35.788Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-77860\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-09-16T14:45:26.867772Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-09-16T14:45:31.286Z\"}}], \"cna\": {\"title\": \"\u0027serve-expired\u0027 can bypass Unbound \u0027wait-limit\u0027\", \"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)\"}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV3_1\": {\"version\": \"3.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\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"\u0027serve-expired\u0027 configuration option used\"}]}], \"affected\": [{\"vendor\": \"NLnet Labs\", \"product\": \"Unbound\", \"versions\": [{\"status\": \"affected\", \"version\": \"1.20.0\", \"lessThan\": \"1.26.1\", \"versionType\": \"semver\"}], \"defaultStatus\": \"unaffected\"}], \"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\"}], \"solutions\": [{\"lang\": \"en\", \"value\": \"This issue is fixed starting with version 1.26.1\"}], \"datePublic\": \"2026-09-16T00:00:00.000Z\", \"references\": [{\"url\": \"https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-77860.txt\", \"tags\": [\"vendor-advisory\"]}], \"x_generator\": {\"engine\": \"cvelib 1.8.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In NLnetLabs Unbound 1.20.0 up to and including 1.26.0, a vulnerability on the \u0027serve-expired\u0027 code path can cause a double decrement on the \u0027wait-limit\u0027 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 \u0027slow\u0027 query, one the attacker\u0027s authoritative never answers, is followed by one query for an expired cached name, which is answered immediately via the \u0027serve-expired\u0027 path and decrements the counter twice. This second query was named \u0027pump\u0027. By alternating slow queries and pumps, the attacker keeps the per-client counter at or below the configured \u0027wait-limit\u0027 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 \u0027serve-expired\u0027 code path.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-675\", \"description\": \"CWE-675: Multiple Operations on Resource in Single-Operation Context\"}]}], \"providerMetadata\": {\"orgId\": \"206fc3a0-e175-490b-9eaa-a5738056c9f6\", \"shortName\": \"NLnet Labs\", \"dateUpdated\": \"2026-09-16T08:29:23.501Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-77860\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-09-16T14:45:35.788Z\", \"dateReserved\": \"2026-09-07T14:06:21.971Z\", \"assignerOrgId\": \"206fc3a0-e175-490b-9eaa-a5738056c9f6\", \"datePublished\": \"2026-09-16T08:29:23.501Z\", \"assignerShortName\": \"NLnet Labs\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…