W bibliotece Crawl4AI przed wersją 0.9.0 atakujący może poprzez spreparowaną nazwę pliku (path traversal) zapisać dowolny plik poza przeznaczonym katalogiem. Ponieważ zawartość zapisywanego pliku jest również kontrolowana przez atakującego, podatność może eskalować do zdalnego wykonania kodu (RCE).
▸ Pokaż oryginał (EN)
Crawl4AI is an open-source LLM-friendly web crawler and scraper. Prior to 0.9.0, when the crawler saves a downloaded file, the destination filename was taken from attacker-influenced input and joined to the downloads directory with no confinement. A filename containing an absolute path or traversal escaped the downloads directory, giving an arbitrary file write with attacker-controlled contents; the HTTP crawler path uses the response Content-Disposition filename and the browser crawler path uses the download's suggested filename. Because the written bytes are attacker-controlled, this can escalate to remote code execution. This issue is fixed in version 0.9.0.
Podczas zapisywania pobranego pliku biblioteka pobiera docelową nazwę pliku z danych kontrolowanych przez atakującego — w ścieżce HTTP jest to nagłówek Content-Disposition odpowiedzi, a w ścieżce przeglądarkowej sugerowana nazwa pliku pobierania. Nazwa ta jest łączona z katalogiem docelowym bez żadnej weryfikacji ani ograniczenia (path confinement). Użycie ścieżki bezwzględnej lub sekwencji traversal (np. `../../`) pozwala zapisać plik w dowolnym miejscu systemu plików. Ponieważ zarówno nazwa, jak i zawartość pliku są pod kontrolą atakującego, możliwe jest umieszczenie złośliwego kodu wykonywalnego w newralgicznych lokalizacjach, co prowadzi do RCE.
Atakujący może zapisać dowolny plik w dowolnym miejscu systemu plików dostępnym dla procesu aplikacji, a dzięki kontroli nad zawartością pliku może doprowadzić do zdalnego wykonania kodu (RCE) na serwerze hostującym Crawl4AI.
Należy zaktualizować Crawl4AI do wersji 0.9.0 lub nowszej, w której problem został naprawiony. Szczegóły dostępne są w oficjalnym security advisory projektu (GHSA-2jq4-q6vv-4cp3) oraz w powiązanym commicie naprawczym na GitHub.
Kidocode Crawl4AI w wersjach poprzedzających 0.9.0
Podatność dotyczy zarówno ścieżki HTTP (nagłówek Content-Disposition), jak i ścieżki przeglądarkowej (sugerowana nazwa pliku pobierania). Fix został wprowadzony commitem 60886d1a0c52682e4c83a7cef9dfac417fff6bd2.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:HKidocode Crawl4ai
APPKidocode< 0.9.0
Powiązane podatności
SSRF w Crawl4AI — brak walidacji adresów webhook w Docker API
Crawl4AI: RCE przez wstrzyknięcie argumentów Chromium w Docker API
Crawl4AI: Dowolne wykonanie JavaScript przez endpoint /execute_js
Crawl4AI: zapis dowolnych plików poza katalogiem przez path traversal i TOCTOU
RCE w Crawl4AI — ucieczka z sandbox poprzez atrybuty generatorów Python