CRITICAL🇬🇧 English

CVE-2025-66570

cpp-httplib: spoofing nagłówków HTTP umożliwia bypass autoryzacji i zatrucie logów

CVSS 10.0v3.1pub. 2025-12-05upd. 2025-12-10

Biblioteka cpp-httplib przed wersją 0.27.0 pozwala atakującemu na wstrzyknięcie spreparowanych nagłówków HTTP (REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT), które są traktowane jako wiarygodne metadane po stronie serwera. Podatność umożliwia spoofing adresu IP, zatrucie logów oraz obejście mechanizmów autoryzacji bez żadnego uwierzytelnienia.

Pokaż oryginał (EN)

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can inject headers named REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT that are parsed into the request header multimap via read_headers() in httplib.h (headers.emplace), then the server later appends its own internal metadata using the same header names in Server::process_request without erasing duplicates. Because Request::get_header_value returns the first entry for a header key (id == 0) and the client-supplied headers are parsed before server-inserted headers, downstream code that uses these header names may inadvertently use attacker-controlled values. Affected files/locations: cpp-httplib/httplib.h (read_headers, Server::process_request, Request::get_header_value, get_header_value_u64) and cpp-httplib/docker/main.cc (get_client_ip, nginx_access_logger, nginx_error_logger). Attack surface: attacker-controlled HTTP headers in incoming requests flow into the Request.headers multimap and into logging code that reads forwarded headers, enabling IP spoofing, log poisoning, and authorization bypass via header shadowing. This vulnerability is fixed in 0.27.0.

🤖 Analiza AI
Jak działa

Funkcja read_headers() w pliku httplib.h parsuje wszystkie nagłówki przychodzącego żądania HTTP do wspólnej struktury multimap, w tym nagłówki o nazwach zarezerwowanych dla wewnętrznych metadanych serwera (REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT). Następnie Server::process_request dopisuje własne wartości tych samych nagłówków, ale bez uprzedniego usunięcia wcześniej wstawionych wpisów. Ponieważ Request::get_header_value zwraca pierwszy pasujący wpis (id == 0), a nagłówki dostarczone przez klienta są parsowane przed metadanymi serwera, kod aplikacji odczytuje wartości kontrolowane przez atakującego zamiast rzeczywistych wartości systemowych. Dotyczy to również kodu logującego w pliku docker/main.cc (funkcje get_client_ip, nginx_access_logger, nginx_error_logger).

Skutki

Atakujący może sfałszować widoczny po stronie serwera adres IP klienta (IP spoofing), zatruć logi aplikacji podstawionymi wartościami (log poisoning) oraz ominąć mechanizmy autoryzacji opierające się na tych nagłówkach (authorization bypass via header shadowing).

Mitygacja

Należy zaktualizować bibliotekę cpp-httplib do wersji 0.27.0 lub nowszej, w której problem został naprawiony (commit ac9ebb0ee333ce8bf13523f487bdfad9518a2aff). Do czasu aktualizacji zaleca się wdrożenie filtrowania nagłówków przychodzących żądań na poziomie reverse proxy lub WAF, tak aby blokować nagłówki o nazwach REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR i LOCAL_PORT zanim dotrą do aplikacji.

Kogo dotyczy

Biblioteka Yhirose cpp-httplib (httplib.h) we wszystkich wersjach przed 0.27.0

Uwagi

Podatność dotyczy jednolikowego pliku nagłówkowego (single-file header-only library), co oznacza, że każdy projekt osadzający httplib.h w dowolnej wersji poniżej 0.27.0 jest potencjalnie narażony — również w kontenerach Docker (plik docker/main.cc jest wprost wymieniony jako dotknięty). CVSS 10.0 wynika z braku wymagań co do uwierzytelnienia, sieci jako wektora ataku i pełnego wpływu na poufność oraz integralność w zmienionym zakresie (S:C).

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
  • Yhirose Cpp Httplib

    APP
    Yhirose
    < 0.27.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Container
CWE
Referencje

Powiązane podatności

CVE-2026-45372CRITICAL9.9PL ✓ten sam produkt

cpp-httplib: HTTP response splitting poprzez header injection (CRLF injection)

CVE-2026-46527HIGH8.7ten sam produkt

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.44.0, When the se...

CVE-2026-33745HIGH7.4ten sam produkt

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.39.0, the cpp-htt...

CVE-2026-32627HIGH8.7ten sam produkt

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.37.2, when a cpp-...

CVE-2026-31870HIGH7.5ten sam produkt

cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.37.1, when a cpp-...