CVE-2026-105297
Resumen
Antes de la versión 0.8.1, el servidor HTTP/2 de Pingora utilizaba los límites predeterminados del crate h2, salvo que la aplicación estableciera su propio límite de 16 MiB para el tamaño de la lista de cabeceras descodificadas y no impusiera límite alguno al número de flujos concurrentes. Un cliente remoto y sin autenticar puede enviar referencias HPACK de 1 byte a una cabecera casi vacía, lo que obliga al servidor a asignar cientos de miles de campos de cabecera por flujo, a través de un número ilimitado de flujos en una misma conexión, y a utilizar el control de flujo de HTTP/2 para mantener abiertos esos flujos. Esto puede agotar la memoria y degradar o terminar el proceso de Pingora.
Leer descripción completaMostrar menos
Impacto
Denegación de servicio (DoS) remota y sin autenticar contra cualquier servicio de Pingora que termine HTTP/2 (h2 o h2c) sin establecer explícitamente max_header_list_size y max_concurrent_streams. El informante demostró que una única conexión podía provocar que un proceso de Pingora con un límite de memoria de 2 GiB fuera terminado por falta de memoria (OOM-killed).
Tenga en cuenta que los clientes de la CDN de Cloudflare no se vieron afectados, ya que los servicios internos de Pingora de Cloudflare no tienen clientes HTTP/2.
Mitigación:
Actualice a pingora 0.8.1 o posterior (corrección: https://github.com/cloudflare/pingora/commit/d193c8d49b8b7c1c1ede93183759caa4f6906bbd ). Cuando no se proporcionan H2Options, Pingora ahora anuncia y aplica un límite de 64 KiB para la lista de cabeceras descodificadas y un máximo de 100 flujos concurrentes por conexión.
Las aplicaciones que proporcionen sus propias H2Options no quedan cubiertas por estos valores predeterminados y deben establecer max_header_list_size y max_concurrent_streams explícitamente (esto también funciona en versiones anteriores a la 0.8.1), o, en la 0.8.1 y posteriores, partir de pingora_core::protocols::http::v2::server::default_h2_options(). H2Options::default() no incluye estos límites.
Detalles técnicos trazas, registros y código del informe original
* *
Traducción automática del texto original de NVD (en inglés).
CVSS
- Puntuación base
- 7.5
- Versión
- 3.1
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días
- 0.34 %
- Percentil entre todas las CVEs puntuadas
- 26
- Fecha de la puntuación
- 20/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1190Exploit Public-Facing Applicationinitial access95 % - Impacto principal
T1499Endpoint Denial of Serviceimpact85 %
Vector AV:N/PR:N/UI:N explota HTTP/2 sin autenticar; el texto indica agotamiento de memoria y caída o degradación del proceso Pingora (DoS remoto).
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-770
Referencias
Mostrar las 1 referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-105297",
"cveTags": [],
"metrics": {
"cvssMetricV31": [
{
"type": "Secondary",
"source": "cna@cloudflare.com",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 7.5,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "NONE",
"confidentialityImpact": "NONE"
},
"impactScore": 3.6,
"exploitabilityScore": 3.9
}
]
},
"affected": [
{
"source": "cna@cloudflare.com",
"affectedData": [
{
"repo": "https://github.com/cloudflare/pingora",
"vendor": "Cloudflare",
"product": "https://github.com/cloudflare/pingora",
"versions": [
{
"status": "affected",
"version": "0.1.0",
"lessThan": "0.8.1",
"versionType": "semver"
}
],
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-10-20T01:17:09.613",
"references": [
{
"url": "https://github.com/cloudflare/pingora",
"source": "cna@cloudflare.com"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Secondary",
"source": "cna@cloudflare.com",
"description": [
{
"lang": "en",
"value": "CWE-770"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Summary\n\n\n\nBefore version 0.8.1, Pingora's HTTP/2 server used the h2 crate's default limits unless the application set its own 16 MiB decoded header-list size and no limit on concurrent streams. A remote, unauthenticated client can send 1-byte HPACK references to a near-empty header, making the server allocate hundreds of thousands of header fields per stream across an unlimited number of streams on one connection, and use HTTP/2 flow control to keep those streams open. This can exhaust memory and degrade or terminate the Pingora process.\n\n\n\n\nImpact\n\n\n\nRemote, unauthenticated denial of service against any Pingora service that terminates HTTP/2 (h2 or h2c) without explicitly setting max_header_list_size and max_concurrent_streams. The reporter showed that a single connection could get a Pingora process with a 2 GiB memory limit OOM-killed.\n\n\n\n\nNote that Cloudflare CDN customers were unaffected, as internal Pingora services at Cloudflare do not have HTTP/2 clients.\n\n\n\nMitigation:\n\n * \n\nUpgrade to pingora 0.8.1 or later (fix: https://github.com/cloudflare/pingora/commit/d193c8d49b8b7c1c1ede93183759caa4f6906bbd ). When no H2Options are supplied, Pingora now advertises and enforces a 64 KiB decoded header-list limit and at most 100 concurrent streams per connection.\n\n\n * \n\nApplications that supply their own H2Options are not covered by these defaults and must set max_header_list_size and max_concurrent_streams explicitly (this also works on versions before 0.8.1), or, on 0.8.1 and later, start from pingora_core::protocols::http::v2::server::default_h2_options(). H2Options::default() does not include these limits."
}
],
"lastModified": "2026-10-20T15:03:59.857",
"sourceIdentifier": "cna@cloudflare.com"
}