CVE-2026-77358
WysokieCVSS 8.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 21 - wyżej niż 21% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko obejmuje potencjalną awarię lub nieprawidłowe działanie aplikacji korzystających z bezpiecznych połączeń WebSocket, a także możliwość wykorzystania błędu do zdalnego wykonania kodu.
Rekomendacja
Zaleca się natychmiastową aktualizację do wersji 0.50.1 lub nowszej, aby wyeliminować podatność.
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-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-46527Wysokie
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).
- 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++ header-only HTTP/HTTPS library. In versions 0.33.0 through 0.50.0, the TLS-enabled WebSocket client frees the TLS session before closing the WebSocket that still uses it, producing a use-after-free. In WebSocketClient::shutdown_and_close the SSL object is freed and the pointer cleared, but the subsequent WebSocket close still sends a close frame through the SSL socket stream, which holds a raw copy of the now-dangling session pointer and reads from and writes to the freed memory. The same freed-then-used ordering is reachable through the client's destructor and its connect path, so ordinary teardown of a secure WebSocket connection triggers the defect. This issue is fixed in version 0.50.1.

