Luki w menedżerze pakietów Cargo używanym w projektach Rust

W menedżerze pakietów Cargo, służącym do zarządzania pakietami i budowania projektów w języku Rust, zidentyfikowano dwie luki, które można wykorzystać podczas pobierania specjalnie zaprojektowanych pakietów z repozytoriów stron trzecich (stwierdza się, że użytkownicy oficjalnego repozytorium crates.io problem nie dotyczy). Pierwsza luka (CVE-2022-36113) umożliwia nadpisanie pierwszych dwóch bajtów dowolnego pliku, o ile pozwalają na to aktualne uprawnienia. Druga luka (CVE-2022-36114) może zostać wykorzystana do wyczerpania miejsca na dysku.

Luki zostaną naprawione wraz z wydaniem Rusta 1.64, które zaplanowano na 22 września. Lukom przypisano niski poziom ważności, ponieważ podobne szkody mogą zostać wyrządzone podczas korzystania z niezweryfikowanych pakietów z repozytoriów stron trzecich przy użyciu standardowej możliwości uruchamiania niestandardowych programów obsługi ze skryptów asemblera lub makr proceduralnych dostarczonych w pakiecie. Jednocześnie powyższe problemy różnią się tym, że są wykorzystywane na etapie otwierania paczki po pobraniu (bez montażu).

W szczególności cargo po pobraniu paczki rozpakowuje jej zawartość do katalogu ~/.cargo i zapisuje informację o pomyślnym rozpakowaniu w pliku .cargo-ok. Istota pierwszej luki polega na tym, że twórca pakietu może umieścić w środku dowiązanie symboliczne o nazwie .cargo-ok, co spowoduje zapisanie tekstu „ok” do pliku wskazywanego przez odnośnik.

Druga podatność spowodowana jest brakiem ograniczenia rozmiaru danych pobieranych z archiwum, które można wykorzystać do tworzenia „bomb zip” (archiwum może zawierać dane pozwalające na osiągnięcie maksymalnego współczynnika kompresji dla formatu ZIP - ok. 28 milionów razy, w tym przypadku np. specjalnie przygotowany plik zip o wielkości 10 MB spowoduje dekompresję około 281 TB danych).

Źródło: opennet.ru

Dodaj komentarz