Podatność w bibliotece Crawl4AI (wersje przed 0.8.7) umożliwia atakującemu zdalne wykonanie dowolnego kodu (RCE) bez uwierzytelnienia. Wynika z niekompletnej walidacji wyrażeń AST w funkcji _safe_eval_expression(), co pozwala na ucieczkę z sandboxa.
▸ Pokaż oryginał (EN)
Crawl4AI is an open-source LLM friendly web crawler & scraper. Prior to 0.8.7, the _safe_eval_expression() function in the computed fields feature uses an AST validator that only blocks attributes starting with underscore. Python generator and frame object attributes (gi_frame, f_back, f_builtins) do NOT start with underscore, enabling a complete sandbox escape to achieve arbitrary code execution. The attack requires no authentication (JWT disabled by default) and is triggered via POST /crawl with a crafted extraction schema. This vulnerability is fixed in 0.8.7.
Funkcja _safe_eval_expression() stosowana w mechanizmie computed fields waliduje wyrażenia AST, blokując jedynie atrybuty rozpoczynające się od podkreślnika. Atrybuty obiektów generatorów i ramek Pythona (gi_frame, f_back, f_builtins) nie zaczynają się od podkreślnika, przez co nie są blokowane przez validator. Atakujący może spreparować schemat ekstrakcji zawierający złośliwe wyrażenie i przesłać go żądaniem POST na endpoint /crawl, co prowadzi do pełnej ucieczki z sandboxa i wykonania dowolnego kodu na serwerze. Ponieważ JWT jest domyślnie wyłączone, atak nie wymaga żadnego uwierzytelnienia.
Atakujący uzyskuje możliwość wykonania dowolnego kodu na serwerze z uprawnieniami procesu aplikacji, co może skutkować pełnym przejęciem systemu, ujawnieniem danych oraz naruszeniem integralności i dostępności usługi.
Należy zaktualizować Crawl4AI do wersji 0.8.7 lub nowszej, w której podatność została naprawiona. Jako środek tymczasowy zaleca się ograniczenie dostępu sieciowego do endpointu POST /crawl oraz włączenie uwierzytelnienia JWT.
Kidocode Crawl4AI w wersjach przed 0.8.7
Podatność została zgłoszona i naprawiona przez producenta; szczegóły dostępne w oficjalnym security advisory GitHub (GHSA-qxjp-w3pj-48m7).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HKidocode Crawl4ai
APPKidocode< 0.8.7
Powiązane podatności
Crawl4AI: zapis dowolnych plików poza katalogiem przez path traversal i TOCTOU
SSRF w Crawl4AI — ominięcie blokady adresów wewnętrznych przez IPv6-mapped IPv4
Obejście uwierzytelnienia w Crawl4AI przez zakodowany klucz JWT
RCE w Crawl4AI — wykonanie kodu przez endpoint /crawl bez uwierzytelnienia
Path Traversal w Crawl4AI — odczyt dowolnych plików przez file:// URL