OESA-2026-2586

Source
https://www.openeuler.org/en/security/security-bulletins/detail/?id=openEuler-SA-2026-2586
Import Source
https://repo.openeuler.org/security/data/osv/OESA-2026-2586.json
JSON Data
https://api.osv.dev/v1/vulns/OESA-2026-2586
Upstream
Published
2026-06-05T11:11:31Z
Modified
2026-08-18T01:20:03.539565140Z
Severity
  • 9.9 (Critical) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:L CVSS Calculator
Summary
cpp-httplib security update
Details

A C++11 single-file header-only cross platform HTTP/HTTPS library. It's extremely easy to setup. Just include httplib.h file in your code!

Security Fix(es):

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::readpayload 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 ULONGMAX − 1 (0xFFFFFFFFFFFFFFFE). The library's only guard (line 12833) rejects ULONGMAX (the result of "-1"), but any other negative value such as "-2" passes validation. The resulting near-maximum value is stored in chunkremaining and controls how many bytes the server's read loop consumes from the network. This vulnerability is fixed in 0.43.4.(CVE-2026-45352)

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.44.0, when cpp-httplib's server parses an incoming request, it applies percent-decoding to every header value except Location and Referer. The validity check (isfieldvalue) is run before decoding, so encoded %0D%0A passes the check and is then expanded to a literal \r\n byte pair inside the stored header value. This vulnerability is fixed in 0.44.0.(CVE-2026-45372)

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.44.0, When the server has called Server::settrustedproxies() with a non-empty trusted-proxy list, an attacker can send an HTTP request that includes an X-Forwarded-For header whose value parses to no valid IP segments. The code path then executes getclientip(), which calls front() on an empty std::vector—undefined behavior in C++. On typical implementations this manifests as abnormal process termination (denial of service). With Sanitizers enabled, you get an explicit runtime diagnostic. This vulnerability is fixed in 0.44.0.(CVE-2026-46527)

Database specific
{
    "severity": "Critical"
}
References

Affected packages

openEuler:24.03-LTS-SP1 / cpp-httplib

Package

Name
cpp-httplib
Purl
pkg:rpm/openEuler/cpp-httplib&distro=openEuler-24.03-LTS-SP1

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
0.46.0-1.oe2403sp1

Ecosystem specific

{
    "x86_64": [
        "cpp-httplib-0.46.0-1.oe2403sp1.x86_64.rpm",
        "cpp-httplib-debuginfo-0.46.0-1.oe2403sp1.x86_64.rpm",
        "cpp-httplib-debugsource-0.46.0-1.oe2403sp1.x86_64.rpm",
        "cpp-httplib-devel-0.46.0-1.oe2403sp1.x86_64.rpm"
    ],
    "aarch64": [
        "cpp-httplib-0.46.0-1.oe2403sp1.aarch64.rpm",
        "cpp-httplib-debuginfo-0.46.0-1.oe2403sp1.aarch64.rpm",
        "cpp-httplib-debugsource-0.46.0-1.oe2403sp1.aarch64.rpm",
        "cpp-httplib-devel-0.46.0-1.oe2403sp1.aarch64.rpm"
    ],
    "src": [
        "cpp-httplib-0.46.0-1.oe2403sp1.src.rpm"
    ]
}

Database specific

source
"https://repo.openeuler.org/security/data/osv/OESA-2026-2586.json"