W menedżerze pakietów Cargo, stosowanym do zarządzania pakietami i budowy projektów w języku Rust, odkryto dwie podatności, które mogą być wykorzystywane podczas pobierania specjalnie przygotowanych pakietów z zewnętrznych repozytoriów (twierdzi się, że użytkownicy oficjalnego repozytorium crates.io nie zostali dotknięci problemem). Pierwsza podatność (CVE-2022-36113) pozwala na nadpisanie pierwszych dwóch bajtów w dowolnym pliku, w zależności od bieżących uprawnień. Druga podatność (CVE-2022-36114) może być wykorzystana do wyczerpania dostępnej przestrzeni na dysku.
Podatności zostaną usunięte w wersji Rust 1.64, planowanej na 22 września. Podatności przypisano niski poziom zagrożenia, ponieważ podobne szkody mogą być spowodowane przy użyciu niezweryfikowanych pakietów z zewnętrznych repozytoriów za pomocą standardowej funkcji uruchamiania własnych handlerów z dostarczanych w pakiecie skryptów budowlanych lub makr proceduralnych. Warto zauważyć, że wyżej wymienione problemy różnią się tym, że ich wykorzystanie odbywa się na etapie odkrycia pakietu po pobraniu (bez budowy).
W szczególności, po pobraniu pakietu cargo rozpakowuje jego zawartość do katalogu ~/cargo i zapisuje wskaźnik pomyślnego rozpakowania w pliku .cargo-ok. Istota pierwszej podatności polega na tym, że twórca pakietu może umieścić w nim dowiązanie symboliczne o nazwie .cargo-ok, co prowadzi do zapisania tekstu „ok” w pliku, na który wskazuje to dowiązanie.
Druga podatność wynika z braku ograniczenia rozmiaru danych wyciąganych z archiwum, co może być wykorzystane do stworzenia „bomby zip” (w archiwum mogą zostać umieszczone dane, które dostarczają maksymalnego stopnia kompresji dla formatu zip - około 28 milionów razy, w tym przypadku, na przykład, specjalnie przygotowany plik zip o rozmiarze 10 MB spowoduje rozpakowanie około 281 TB danych).
Źródło: opennet.ru
