CVE-2026-31870

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.37.1, when a cpp-httplib client uses the streaming API (httplib::stream::Get, httplib::stream::Post, etc.), the library calls std::stoull() directly on the Content-Length header value received from the server with no input validation and no exception handling. std::stoull throws std::invalid_argument for non-numeric strings and std::out_of_range for values exceeding ULLONG_MAX. Since nothing catches these exceptions, the C++ runtime calls std::terminate(), which kills the process with SIGABRT. Any server the client connects to — including servers reached via HTTP redirects, third-party APIs, or man-in-the-middle positions can crash the client application with a single HTTP response. No authentication is required. No interaction from the end user is required. The crash is deterministic and immediate. This vulnerability is fixed in 0.37.1.
References
Configurations

Configuration 1 (hide)

cpe:2.3:a:yhirose:cpp-httplib:*:*:*:*:*:*:*:*

History

18 Mar 2026, 15:36

Type Values Removed Values Added
References () https://github.com/yhirose/cpp-httplib/security/advisories/GHSA-39q5-hh6x-jpxx - () https://github.com/yhirose/cpp-httplib/security/advisories/GHSA-39q5-hh6x-jpxx - Exploit, Mitigation, Vendor Advisory
First Time Yhirose cpp-httplib
Yhirose
CPE cpe:2.3:a:yhirose:cpp-httplib:*:*:*:*:*:*:*:*
Summary
  • (es) cpp-httplib es una biblioteca HTTP/HTTPS multiplataforma de un solo archivo y solo de cabecera para C++11. Antes de la versión 0.37.1, cuando un cliente cpp-httplib utiliza la API de streaming (httplib::stream::Get, httplib::stream::Post, etc.), la biblioteca llama directamente a std::stoull() sobre el valor del encabezado Content-Length recibido del servidor sin validación de entrada y sin manejo de excepciones. std::stoull lanza std::invalid_argument para cadenas no numéricas y std::out_of_range para valores que exceden ULLONG_MAX. Dado que nada captura estas excepciones, el tiempo de ejecución de C++ llama a std::terminate(), lo que termina el proceso con SIGABRT. Cualquier servidor al que se conecte el cliente —incluidos los servidores alcanzados a través de redirecciones HTTP, APIs de terceros o posiciones de man-in-the-middle— puede bloquear la aplicación cliente con una única respuesta HTTP. No se requiere autenticación. No se requiere interacción del usuario final. El bloqueo es determinista e inmediato. Esta vulnerabilidad se corrige en la versión 0.37.1.

11 Mar 2026, 18:16

Type Values Removed Values Added
New CVE

Information

Published : 2026-03-11 18:16

Updated : 2026-03-18 15:36


NVD link : CVE-2026-31870

Mitre link : CVE-2026-31870

CVE.ORG link : CVE-2026-31870


JSON object : View

Products Affected

yhirose

  • cpp-httplib
CWE
CWE-248

Uncaught Exception