Biblioteka cpp-httplib w wersjach wykorzystujących backend Mbed TLS lub wolfSSL pomija walidację łańcucha certyfikatów podczas połączeń z hostami podanymi jako adresy IP. Umożliwia to atakującemu pozycjonowanemu jako man-in-the-middle przechwycenie i modyfikację szyfrowanego ruchu HTTPS.
▸ Pokaż oryginał (EN)
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. In affected Mbed TLS backend versions from 0.31.0 through 0.46.1 and wolfSSL backend versions from 0.33.0 through 0.46.1, when cpp-httplib is built with CPPHTTPLIB_MBEDTLS_SUPPORT or CPPHTTPLIB_WOLFSSL_SUPPORT and a client connects to an IP-literal host with server certificate verification enabled, SSLClient and Client in HTTPS mode skip certificate chain validation and WebSocketClient on the Mbed TLS backend skips verification altogether, allowing a man-in-the-middle attacker positioned to intercept traffic to present a crafted certificate and read or modify the traffic. This issue is fixed in version 0.47.0.
Gdy cpp-httplib jest zbudowane z obsługą Mbed TLS (CPPHTTPLIB_MBEDTLS_SUPPORT) lub wolfSSL (CPPHTTPLIB_WOLFSSL_SUPPORT) i klient nawiązuje połączenie z hostem podanym w formie literału adresu IP (np. https://192.168.1.1), klasy SSLClient oraz Client w trybie HTTPS pomijają weryfikację łańcucha certyfikatów serwera. Dodatkowo klasa WebSocketClient na backendzie Mbed TLS całkowicie rezygnuje z weryfikacji. Atakujący umieszczony na ścieżce sieciowej może wówczas podstawić spreparowany certyfikat, który zostanie przyjęty bez błędu, i uzyskać dostęp do przesyłanych danych lub je zmodyfikować.
Atakujący przeprowadzający atak man-in-the-middle może odczytać oraz zmodyfikować ruch HTTPS, który aplikacja uważa za szyfrowany i uwierzytelniony, co prowadzi do naruszenia poufności i integralności danych.
Należy zaktualizować cpp-httplib do wersji 0.47.0, w której opisany problem został naprawiony. Patch dostępny jest w repozytorium GitHub producenta (tag v0.47.0).
Yhirose cpp-httplib z backendem Mbed TLS w wersjach od 0.31.0 do 0.46.1 oraz z backendem wolfSSL w wersjach od 0.33.0 do 0.46.1, skompilowane z flagą CPPHTTPLIB_MBEDTLS_SUPPORT lub CPPHTTPLIB_WOLFSSL_SUPPORT
Podatność dotyczy wyłącznie scenariuszy, w których klient łączy się z hostem podanym jako literał adresu IP (np. https://1.2.3.4) przy włączonej weryfikacji certyfikatu serwera. Połączenia do hostów podanych jako nazwy domenowe nie są objęte tym błędem.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:NYhirose Cpp Httplib
APPYhirose0.31.0 – 0.47.0 (bez)
Powiązane podatności
cpp-httplib: HTTP response splitting poprzez header injection (CRLF injection)
cpp-httplib: spoofing nagłówków HTTP umożliwia bypass autoryzacji i zatrucie logów
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.44.0, When the se...
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.39.0, the cpp-htt...
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.37.2, when a cpp-...