CVE-2024-52811 (GCVE-0-2024-52811)
Vulnerability from cvelistv5 – Published: 2024-11-25 18:55 – Updated: 2024-11-25 20:21- CWE-670 - Always-Incorrect Control Flow Implementation
| URL | Tags |
|---|---|
| https://github.com/ngtcp2/ngtcp2/security/advisor… | x_refsource_CONFIRM |
| https://github.com/ngtcp2/ngtcp2/commit/44b662bd1… | x_refsource_MISC |
| https://github.com/ngtcp2/ngtcp2/commit/e550c1a41… | x_refsource_MISC |
{
"containers": {
"adp": [
{
"affected": [
{
"cpes": [
"cpe:2.3:a:ngtcp2:ngtcp2:1.9.0:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"product": "ngtcp2",
"vendor": "ngtcp2",
"versions": [
{
"status": "affected",
"version": "1.9.0"
}
]
}
],
"metrics": [
{
"other": {
"content": {
"id": "CVE-2024-52811",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2024-11-25T20:14:23.704951Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2024-11-25T20:21:04.408Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "ngtcp2",
"vendor": "ngtcp2",
"versions": [
{
"status": "affected",
"version": "= 1.9.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "The ngtcp2 project is an effort to implement IETF QUIC protocol in C. In affected versions acks are not validated before being written to the qlog leading to a buffer overflow. In `ngtcp2_conn::conn_recv_pkt` for an ACK, there was new logic that got added to skip `conn_recv_ack` if an ack has already been processed in the payload. However, this causes us to also skip `ngtcp2_pkt_validate_ack`. The ack which was skipped still got written to qlog. The bug occurs in `ngtcp2_qlog::write_ack_frame`. It is now possible to reach this code with an invalid ack, suppose `largest_ack=0` and `first_ack_range=15`. Subtracting `largest_ack - first_ack_range` will lead to an integer underflow which is 20 chars long. However, the ngtcp2 qlog code assumes the number written is a signed integer and only accounts for 19 characters of overhead (see `NGTCP2_QLOG_ACK_FRAME_RANGE_OVERHEAD`). Therefore, we overwrite the buffer causing a heap overflow. This is high priority and could potentially impact many users if they enable qlog. qlog is disabled by default. Due to its overhead, it is most likely used for debugging purpose, but the actual use is unknown. ngtcp2 v1.9.1 fixes the bug and users are advised to upgrade. Users unable to upgrade should not turn on qlog."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-670",
"description": "CWE-670: Always-Incorrect Control Flow Implementation",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2024-11-25T18:55:36.279Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/ngtcp2/ngtcp2/security/advisories/GHSA-4gmv-gf46-r4g5",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/ngtcp2/ngtcp2/security/advisories/GHSA-4gmv-gf46-r4g5"
},
{
"name": "https://github.com/ngtcp2/ngtcp2/commit/44b662bd139c23fee1703bf256c13349e2e624a1",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/ngtcp2/ngtcp2/commit/44b662bd139c23fee1703bf256c13349e2e624a1"
},
{
"name": "https://github.com/ngtcp2/ngtcp2/commit/e550c1a414318d0f3f01fca1a621ae0b0428ca15",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/ngtcp2/ngtcp2/commit/e550c1a414318d0f3f01fca1a621ae0b0428ca15"
}
],
"source": {
"advisory": "GHSA-4gmv-gf46-r4g5",
"discovery": "UNKNOWN"
},
"title": "Acks not validated before logged to qlog leads to buffer overflow in ngtcp2"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2024-52811",
"datePublished": "2024-11-25T18:55:36.279Z",
"dateReserved": "2024-11-15T17:11:13.443Z",
"dateUpdated": "2024-11-25T20:21:04.408Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.1",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2024-52811",
"date": "2026-11-09",
"epss": "0.00836",
"percentile": "0.57999"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"product": "ngtcp2",
"vendor": "ngtcp2",
"versions": [
{
"status": "affected",
"version": "= 1.9.0"
}
]
}
],
"source": "security-advisories@github.com"
},
{
"affectedData": [
{
"cpes": [
"cpe:2.3:a:ngtcp2:ngtcp2:1.9.0:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"product": "ngtcp2",
"vendor": "ngtcp2",
"versions": [
{
"status": "affected",
"version": "1.9.0"
}
]
}
],
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "The ngtcp2 project is an effort to implement IETF QUIC protocol in C. In affected versions acks are not validated before being written to the qlog leading to a buffer overflow. In `ngtcp2_conn::conn_recv_pkt` for an ACK, there was new logic that got added to skip `conn_recv_ack` if an ack has already been processed in the payload. However, this causes us to also skip `ngtcp2_pkt_validate_ack`. The ack which was skipped still got written to qlog. The bug occurs in `ngtcp2_qlog::write_ack_frame`. It is now possible to reach this code with an invalid ack, suppose `largest_ack=0` and `first_ack_range=15`. Subtracting `largest_ack - first_ack_range` will lead to an integer underflow which is 20 chars long. However, the ngtcp2 qlog code assumes the number written is a signed integer and only accounts for 19 characters of overhead (see `NGTCP2_QLOG_ACK_FRAME_RANGE_OVERHEAD`). Therefore, we overwrite the buffer causing a heap overflow. This is high priority and could potentially impact many users if they enable qlog. qlog is disabled by default. Due to its overhead, it is most likely used for debugging purpose, but the actual use is unknown. ngtcp2 v1.9.1 fixes the bug and users are advised to upgrade. Users unable to upgrade should not turn on qlog."
},
{
"lang": "es",
"value": "El proyecto ngtcp2 es un esfuerzo por implementar el protocolo IETF QUIC en C. En las versiones afectadas, los acks no se validan antes de escribirse en el qlog, lo que genera un desbordamiento de b\u00fafer. En `ngtcp2_conn::conn_recv_pkt` para un ACK, se agreg\u00f3 una nueva l\u00f3gica para omitir `conn_recv_ack` si ya se proces\u00f3 un ack en el payload. Sin embargo, esto hace que tambi\u00e9n omitamos `ngtcp2_pkt_validate_ack`. El ack que se omiti\u00f3 se escribi\u00f3 en qlog. El error ocurre en `ngtcp2_qlog::write_ack_frame`. Ahora es posible acceder a este c\u00f3digo con un ack no v\u00e1lido, supongamos que `largest_ack=0` y `first_ack_range=15`. Restar `largest_ack - first_ack_range` generar\u00e1 un desbordamiento de enteros de 20 caracteres. Sin embargo, el c\u00f3digo qlog de ngtcp2 asume que el n\u00famero escrito es un entero con signo y solo tiene en cuenta 19 caracteres de sobrecarga (consulte `NGTCP2_QLOG_ACK_FRAME_RANGE_OVERHEAD`). Por lo tanto, sobrescribimos el b\u00fafer y provocamos un desbordamiento del mont\u00f3n. Esto es de alta prioridad y podr\u00eda afectar potencialmente a muchos usuarios si habilitan qlog. qlog est\u00e1 deshabilitado de forma predeterminada. Debido a su sobrecarga, lo m\u00e1s probable es que se use con fines de depuraci\u00f3n, pero se desconoce su uso real. ngtcp2 v1.9.1 corrige el error y se recomienda a los usuarios que actualicen. Los usuarios que no puedan actualizar no deben activar qlog."
}
],
"id": "CVE-2024-52811",
"lastModified": "2026-06-17T08:07:40.220",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H",
"version": "3.1"
},
"exploitabilityScore": 3.9,
"impactScore": 4.2,
"source": "security-advisories@github.com",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2024-52811",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2024-11-25T20:14:23.704951Z",
"version": "2.0.3"
}
}
]
},
"published": "2024-11-25T19:15:11.567",
"references": [
{
"source": "security-advisories@github.com",
"url": "https://github.com/ngtcp2/ngtcp2/commit/44b662bd139c23fee1703bf256c13349e2e624a1"
},
{
"source": "security-advisories@github.com",
"url": "https://github.com/ngtcp2/ngtcp2/commit/e550c1a414318d0f3f01fca1a621ae0b0428ca15"
},
{
"source": "security-advisories@github.com",
"url": "https://github.com/ngtcp2/ngtcp2/security/advisories/GHSA-4gmv-gf46-r4g5"
}
],
"sourceIdentifier": "security-advisories@github.com",
"vulnStatus": "Deferred",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-670"
}
],
"source": "security-advisories@github.com",
"type": "Secondary"
}
]
}
},
"redhat_vex": {
"aggregate_severity": "Important",
"current_release_date": "2026-11-04T21:20:54+00:00",
"cve": "CVE-2024-52811",
"id": "CVE-2024-52811",
"initial_release_date": "2024-11-25T18:55:36.279000+00:00",
"product_status:known_not_affected": "29",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "ngtcp2: Acks not validated before logged to qlog leads to buffer overflow in ngtcp2",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-52811.json",
"version": "3"
},
"vulnrichment": {
"containers": {
"adp": [
{
"affected": [
{
"cpes": [
"cpe:2.3:a:ngtcp2:ngtcp2:1.9.0:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"product": "ngtcp2",
"vendor": "ngtcp2",
"versions": [
{
"status": "affected",
"version": "1.9.0"
}
]
}
],
"metrics": [
{
"other": {
"content": {
"id": "CVE-2024-52811",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2024-11-25T20:14:23.704951Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2024-11-25T20:20:42.873Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "ngtcp2",
"vendor": "ngtcp2",
"versions": [
{
"status": "affected",
"version": "= 1.9.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "The ngtcp2 project is an effort to implement IETF QUIC protocol in C. In affected versions acks are not validated before being written to the qlog leading to a buffer overflow. In `ngtcp2_conn::conn_recv_pkt` for an ACK, there was new logic that got added to skip `conn_recv_ack` if an ack has already been processed in the payload. However, this causes us to also skip `ngtcp2_pkt_validate_ack`. The ack which was skipped still got written to qlog. The bug occurs in `ngtcp2_qlog::write_ack_frame`. It is now possible to reach this code with an invalid ack, suppose `largest_ack=0` and `first_ack_range=15`. Subtracting `largest_ack - first_ack_range` will lead to an integer underflow which is 20 chars long. However, the ngtcp2 qlog code assumes the number written is a signed integer and only accounts for 19 characters of overhead (see `NGTCP2_QLOG_ACK_FRAME_RANGE_OVERHEAD`). Therefore, we overwrite the buffer causing a heap overflow. This is high priority and could potentially impact many users if they enable qlog. qlog is disabled by default. Due to its overhead, it is most likely used for debugging purpose, but the actual use is unknown. ngtcp2 v1.9.1 fixes the bug and users are advised to upgrade. Users unable to upgrade should not turn on qlog."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-670",
"description": "CWE-670: Always-Incorrect Control Flow Implementation",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2024-11-25T18:55:36.279Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/ngtcp2/ngtcp2/security/advisories/GHSA-4gmv-gf46-r4g5",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/ngtcp2/ngtcp2/security/advisories/GHSA-4gmv-gf46-r4g5"
},
{
"name": "https://github.com/ngtcp2/ngtcp2/commit/44b662bd139c23fee1703bf256c13349e2e624a1",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/ngtcp2/ngtcp2/commit/44b662bd139c23fee1703bf256c13349e2e624a1"
},
{
"name": "https://github.com/ngtcp2/ngtcp2/commit/e550c1a414318d0f3f01fca1a621ae0b0428ca15",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/ngtcp2/ngtcp2/commit/e550c1a414318d0f3f01fca1a621ae0b0428ca15"
}
],
"source": {
"advisory": "GHSA-4gmv-gf46-r4g5",
"discovery": "UNKNOWN"
},
"title": "Acks not validated before logged to qlog leads to buffer overflow in ngtcp2"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2024-52811",
"datePublished": "2024-11-25T18:55:36.279Z",
"dateReserved": "2024-11-15T17:11:13.443Z",
"dateUpdated": "2024-11-25T20:21:04.408Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.1"
}
}
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
How durations are calculated
Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.
Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.