Biblioteka cpp-httplib w wersjach przed 0.44.0 jest podatna na CRLF injection w nagłówkach HTTP. Atakujący może wstrzyknąć sekwencję \r\n do wartości nagłówków, co umożliwia manipulację odpowiedziami serwera i potencjalnie poważne naruszenie integralności komunikacji.
▸ Pokaż oryginał (EN)
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.44.0, when cpp-httplib's server parses an incoming request, it applies percent-decoding to every header value except Location and Referer. The validity check (is_field_value) is run before decoding, so encoded %0D%0A passes the check and is then expanded to a literal \r\n byte pair inside the stored header value. This vulnerability is fixed in 0.44.0.
Serwer oparty na cpp-httplib przeprowadza walidację wartości nagłówków żądania (funkcja is_field_value) przed wykonaniem dekodowania procentowego (percent-decoding). Zakodowana sekwencja %0D%0A przechodzi walidację bez błędów, ponieważ w formie zakodowanej nie zawiera znaków niedozwolonych. Następnie, po dekodowaniu, sekwencja ta jest rozwijana do literalnej pary bajtów \r\n i zapisywana w wewnętrznej strukturze nagłówka. Pozwala to atakującemu na wstrzyknięcie arbitralnych nagłówków lub podziału odpowiedzi HTTP (HTTP response splitting) poprzez spreparowane żądanie sieciowe.
Atakujący bez żadnego uwierzytelnienia może manipulować nagłówkami odpowiedzi HTTP generowanymi przez serwer, co prowadzi do wysokiego naruszenia integralności, a potencjalnie również do ataków takich jak cache poisoning, cross-site scripting lub podszywania się pod treści serwera.
Należy zaktualizować bibliotekę cpp-httplib do wersji 0.44.0 lub nowszej, w której problem został naprawiony poprzez wykonanie walidacji nagłówków po dekodowaniu procentowym.
Biblioteka cpp-httplib (C++11 single-file header-only HTTP/HTTPS library) w wersjach przed 0.44.0
Podatność dotyczy wyłącznie nagłówków innych niż Location i Referer, które były wyłączone z percent-decoding. Szczegóły dostępne w security advisory repozytorium GitHub: GHSA-xjxg-64p4-vj4m.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:LYhirose Cpp Httplib
APPYhirose< 0.44.0
Powiązane podatności
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-...
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.37.1, when a cpp-...