CVE-2026-103930
NiskieCVSS 3.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 29 - wyżej niż 29% wszystkich znanych CVE
Streszczenie
cpp-httplib to nagłówkowa biblioteka HTTP/HTTPS w C++. Od wersji 0.29.0 do 0.51.0 funkcja Client::open_stream w httplib.h przyjmuje ścieżkę kontrolowaną przez wywołującego, która trafia do detail::write_request_line() bez ochrony detail::encode_path() stosowanej w zwykłej buforowanej ścieżce żądania. Surowe bajty CR i LF w ścieżce mogą podzielić wychodzącą linię żądania HTTP/1.1 i wstrzyknąć metadane żądania ukształtowane przez atakującego.
Ocena ryzyka
Wykorzystanie wymaga przekazania danych wejściowych użytkownika do ścieżki open_stream oraz backendu lub pośrednika interpretującego wstrzyknięte bajty; skutkiem jest modyfikacja danych żądania widocznych dla backendu, bez bezpośredniego wpływu na poufność lub dostępność.
Rekomendacja
Zaktualizuj cpp-httplib do wersji 0.51.0, która naprawia tę 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-102944Wysokie
Biblioteka cpp-httplib przed wersją 0.51.0 nie usuwa nagłówków Cookie przy przekierowaniach cross-origin typu 301, 302, 307 i 308. Funkcja create_redirect_client() usuwa nagłówki Host, Proxy-Authorization i Authorization, ale pozostawia Cookie, przez co ciasteczka sesyjne są wysyłane do celu przekierowania.
- 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-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.
Oryginalny opis (angielski, źródło NVD)
cpp-httplib is a C++ header-only HTTP/HTTPS library. From 0.29.0 until 0.51.0, Client::open_stream in httplib.h accepts a caller-controlled path that reaches detail::write_request_line() without the detail::encode_path() protection used by the ordinary buffered request path. Raw carriage-return and line-feed bytes in the path can therefore split the outbound HTTP/1.1 request line and inject attacker-shaped request metadata. Exploitation requires an embedding application to pass remote user input into the open_stream path and a backend or intermediary that interprets the injected bytes; the established impact is modification of backend-visible request data, not direct confidentiality or availability impact. This issue is fixed in version 0.51.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

