CVE-2026-46527
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 25 - wyżej niż 25% wszystkich znanych CVE
Streszczenie
cpp-httplib to biblioteka HTTP/HTTPS w C++11. Przed wersją 0.44.0, gdy serwer używa Server::set_trusted_proxies() z niepustą listą zaufanych proxy, atakujący może wysłać żądanie HTTP z nagłówkiem X-Forwarded-For, którego wartość nie zawiera prawidłowych segmentów IP. Kod wywołuje get_client_ip(), który wywołuje front() na pustym std::vector, co jest niezdefiniowanym zachowaniem w C++. Na typowych implementacjach objawia się to nieprawidłowym zakończeniem procesu (odmowa usługi).
Ocena ryzyka
Atakujący może spowodować awarię serwera HTTP, prowadząc do przerwania działania usługi (DoS).
Rekomendacja
Należy zaktualizować cpp-httplib do wersji 0.44.0 lub nowszej, która zawiera poprawkę.
Inne podatności w cpp-httplib
Zobacz wszystkie- CVE-2026-22776Wysokie
cpp-httplib przed wersją 0.30.1 zawiera podatność na atak DoS związaną z niebezpiecznym obsługiwaniem skompresowanych treści żądań HTTP. Biblioteka sprawdza maksymalny rozmiar ładunku na podstawie skompresowanych danych, ale nie ogranicza rozmiaru zdekompresowanych danych przechowywanych w pamięci.
- CVE-2026-21428Wysokie
cpp-httplib przed wersją 0.30.0 nie sprawdza znaków CR i LF w nagłówkach dostarczanych przez użytkownika, co pozwala na wstrzykiwanie dodatkowych nagłówków i modyfikację treści żądania. Może to prowadzić do ataku SSRF, szczególnie w połączeniu z serwerami obsługującymi pipelining HTTP/1.1. Wersja 0.30.0 naprawia ten problem.
- CVE-2026-45372Krytyczne
Biblioteka cpp-httplib przed wersją 0.44.0 nieprawidłowo waliduje nagłówki HTTP, co pozwala na wstrzyknięcie znaków nowej linii przez zakodowane wartości nagłówków.
- CVE-2025-66570Krytyczne
cpp-httplib przed wersją 0.27.0 zawiera podatność, która pozwala atakującemu kontrolować nagłówki HTTP wpływające na metadane widoczne dla serwera, logowanie i decyzje autoryzacyjne. Atakujący może wstrzyknąć nagłówki REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT, które są parsowane do multimapy nagłówków żądania, a serwer później dodaje własne metadane wewnętrzne bez usuwania duplikatów, co może prowadzić do użycia wartości kontrolowanych przez atakującego.
- CVE-2026-77358Wysokie
cpp-httplib to biblioteka HTTP/HTTPS w C++ tylko z nagłówkami. W wersjach od 0.33.0 do 0.50.0 klient WebSocket z obsługą TLS zwalnia sesję TLS przed zamknięciem WebSocket, który nadal jej używa, co powoduje użycie po zwolnieniu (use-after-free). Problem został naprawiony w wersji 0.50.1.
- CVE-2026-77341Średnie
cpp-httplib w wersji 0.49.0 nie waliduje nazw i wartości nagłówków w trailerach odpowiedzi chunked, co pozwala na wstrzyknięcie CRLF i podział odpowiedzi HTTP. Aplikacje umieszczające dane sterowane przez atakującego w trailerach mogą wysyłać kontrolowane przez atakującego CRLF. Problem naprawiono w wersji 0.50.0.
- CVE-2026-54919Wysokie
Biblioteka cpp-httplib w wersjach od 0.31.0 do 0.46.1 (dla backendu Mbed TLS) oraz od 0.33.0 do 0.46.1 (dla backendu wolfSSL) pomija walidację łańcucha certyfikatów podczas połączeń HTTPS z adresem IP zamiast nazwy domeny. Podatność umożliwia atakującemu typu man-in-the-middle przedstawienie spreparowanego certyfikatu i przechwycenie lub modyfikację ruchu.
- CVE-2026-45352Średnie
cpp-httplib przed wersją 0.43.4 zawiera podatność związaną z ujemnym rozmiarem fragmentu w kodowaniu Transfer-Encoding chunked. Funkcja ChunkedDecoder::read_payload parsuje pole chunk-size za pomocą std::strtoul(), które akceptuje znak minus, powodując zawinięcie do wartości bliskiej maksymalnej. Biblioteka odrzuca tylko wynik -1, ale inne ujemne wartości, jak -2, przechodzą walidację, co prowadzi do nieograniczonej alokacji pamięci i awarii procesu.
- CVE-2026-34441Średnie
cpp-httplib jest podatne na przemycanie żądań HTTP (HTTP Request Smuggling). Serwer nie konsumuje treści żądania GET, a na połączeniach keep-alive nieprzeczytane bajty są interpretowane jako nowe żądanie.
Oryginalny opis (angielski, źródło NVD)
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::set_trusted_proxies() 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 get_client_ip(), 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.

