CVE-2026-45352: cpp-httplib DoS: Negative chunk-size in chunked Transfer-Encoding
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.43.4, negative chunk-size in chunked Transfer-Encoding causes unbounded memory allocation and process crash. The ChunkedDecoder::read_payload function in cpp-httplib (httplib.h) parses the chunk-size field of HTTP chunked transfer encoding using std::strtoul(). Per the C standard (§7.22.1.4), strtoul silently accepts a leading minus sign, performing unsigned wrap-around: strtoul("-2", …, 16) returns ULONG_MAX − 1 (0xFFFFFFFFFFFFFFFE). The library's only guard (line 12833) rejects ULONG_MAX (the result of "-1"), but any other negative value such as "-2" passes validation. The resulting near-maximum value is stored in chunk_remaining and controls how many bytes the server's read loop consumes from the network. This vulnerability is fixed in 0.43.4.
Security readout for executives and security teams
Plain-English summary
Software that embeds vulnerable cpp-httplib can be crashed by malformed chunked HTTP traffic. This is an availability issue, not data theft or code execution, based on the sources. Services directly exposed to the internet or receiving untrusted HTTP requests should prioritize upgrading to fixed version 0.43.4.
Executive priority
Treat this as a timely availability fix for services that embed cpp-httplib, especially public-facing systems. It does not indicate data compromise or code execution from the provided sources, but unauthenticated remote crash risk justifies prompt remediation during the next maintenance window.
Technical view
Before 0.43.4, ChunkedDecoder::read_payload parses chunk-size with std::strtoul(), which accepts leading minus signs and wraps most negative values to near-maximum unsigned values. The guard catches only ULONG_MAX, so other negative values can drive excessive allocation or reads, causing process crash. CVSS 3.1 is 5.3, network exploitable, low complexity, no privileges required.
Likely exposure
Exposure is likely where cpp-httplib versions before 0.43.4 are used in HTTP or HTTPS services that accept untrusted chunked Transfer-Encoding requests. Embedded, single-header dependencies may be copied into source trees, so SBOM-only checks may miss vendored httplib.h copies.
Exploitation context
The source bundle does not show KEV listing or active exploitation evidence. The vulnerability is remotely reachable over the network with no authentication or user interaction, but the documented impact is limited to availability through memory exhaustion or process crash.
Researcher notes
Key evidence is the parser behavior: std::strtoul() accepts a leading minus sign and unsigned-wraps values. The advisory says only one wrapped value is rejected, allowing other negative chunk sizes to control chunk_remaining and trigger excessive resource use. The fixed version is 0.43.4.
Mitigation direction
Upgrade cpp-httplib to version 0.43.4 or later.
Search source trees for vendored httplib.h copies below 0.43.4.
Rebuild and redeploy services that statically embed cpp-httplib.
Review the GitHub advisory for any updated vendor guidance.
Monitor exposed services for unexplained crashes or memory exhaustion.
Validation and detection
Confirm all deployed builds use cpp-httplib 0.43.4 or later.
Check SBOMs and source repositories for cpp-httplib before 0.43.4.
Verify internet-facing services using cpp-httplib have been rebuilt after the upgrade.
Run safe regression tests confirming malformed chunk sizes are rejected without excessive allocation.
Review crash telemetry for availability incidents around HTTP chunked request handling.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-1285: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.