Aplikacje HTTP oparte na bibliotece Crow (CrowCpp) w wersji do 1.0+4 włącznie są podatne na błąd use-after-free podczas korzystania z HTTP pipelining. Luka może prowadzić do zdalnego wykonania kodu (RCE) bez żadnego uwierzytelnienia.
▸ Pokaż oryginał (EN)
HTTP applications (servers) based on Crow through 1.0+4 may allow a Use-After-Free and code execution when HTTP pipelining is used. The HTTP parser supports HTTP pipelining, but the asynchronous Connection layer is unaware of HTTP pipelining. Specifically, the Connection layer is unaware that it has begun processing a later request before it has finished processing an earlier request.
Parser HTTP w bibliotece Crow obsługuje HTTP pipelining, jednak warstwa Connection działająca asynchronicznie nie jest świadoma tego mechanizmu. W efekcie warstwa Connection może rozpocząć przetwarzanie kolejnego żądania HTTP, zanim zakończy obsługę poprzedniego. Powoduje to sytuację, w której obiekt związany z wcześniejszym żądaniem może zostać zwolniony z pamięci, podczas gdy jest jeszcze odczytywany lub modyfikowany przez kod obsługujący późniejsze żądanie — klasyczny błąd use-after-free (CWE-416).
Atakujący zdalny, nieuwierzytelniony może doprowadzić do wykonania dowolnego kodu (RCE) na serwerze lub jego destabilizacji poprzez manipulację zwolnioną pamięcią. Skuteczne wykorzystanie luki daje pełną kontrolę nad procesem serwera.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (zob. pull request #524 w repozytorium CrowCpp/Crow na GitHub). Zaleca się aktualizację do wersji zawierającej poprawkę oraz — jako środek tymczasowy — wyłączenie lub ograniczenie obsługi HTTP pipelining na poziomie infrastruktury (np. reverse proxy/firewall).
Aplikacje HTTP (serwery) zbudowane na bibliotece CrowCpp Crow w wersji do 1.0+4 włącznie.
Szczegółowy opis techniczny podatności jest dostępny publicznie w repozytorium GitHub (0xhebi/CVEs) oraz na blogu gynvael.coldwind.pl (wpis o id=753), co zwiększa ryzyko opracowania działającego exploitu.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCrowcpp Crow
APPCrowcpp≤ 1.0\+4
Powiązane podatności
Heap-based buffer overflow w Crow (RCE) przez funkcję qs_parse
HTTP applications (servers) based on Crow through 1.0+4 may reveal potentially sensitive uninitialized data fr...
All versions of the package crow are vulnerable to HTTP Response Splitting when untrusted user input is used t...
This affects the package Crow before 0.3+4. It is possible to traverse directories to fetch arbitrary files fr...
This affects the package Crow before 0.3+4. When using attributes without quotes in the template, an attacker ...