Podatność typu heap-based buffer overflow w bibliotece Crow przed wersją 1.0+4 umożliwia zdalne wykonanie dowolnego kodu (RCE) bez uwierzytelnienia. Ze względu na sieciowy wektor ataku i brak wymagań wstępnych stanowi krytyczne zagrożenie dla aplikacji webowych opartych na tej bibliotece.
▸ Pokaż oryginał (EN)
Crow before 1.0+4 has a heap-based buffer overflow via the function qs_parse in query_string.h. On successful exploitation this vulnerability allows attackers to remotely execute arbitrary code in the context of the vulnerable service.
Błąd wynika z nieprawidłowej obsługi granic bufora (CWE-193 – off-by-one error) w funkcji qs_parse znajdującej się w pliku query_string.h. Poprzez spreparowane zapytanie HTTP zawierające odpowiednio sformułowany ciąg query string, atakujący może doprowadzić do przepełnienia bufora na stercie (heap). Skuteczne przepełnienie pozwala na nadpisanie pamięci procesu i przejęcie kontroli nad jego wykonaniem.
Atakujący może zdalnie wykonać dowolny kod w kontekście podatnej usługi, co w praktyce oznacza pełne przejęcie kontroli nad procesem serwera. W zależności od uprawnień uruchomionej usługi możliwe jest uzyskanie dostępu do danych, eskalacja uprawnień lub kompromitacja całego systemu.
Należy zaktualizować bibliotekę Crow do wersji 1.0+4 lub nowszej, w której błąd został naprawiony (patrz: https://github.com/CrowCpp/Crow/releases/tag/v1.0%2B4 oraz pull request #486). W przypadku braku możliwości natychmiastowej aktualizacji zaleca się ograniczenie dostępu do usługi na poziomie firewall oraz monitorowanie ruchu HTTP pod kątem anomalii w query string.
Crowcpp Crow w wersjach przed 1.0+4
Dostępny jest publiczny raport PoC pod adresem https://github.com/0xhebi/CVE-2022-34970/blob/master/report.md, co może ułatwić potencjalnym atakującym opracowanie 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
Use-After-Free w Crow (CrowCpp) przy HTTP pipelining — możliwy RCE
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 ...