Nel gestore di pacchetti Cargo, utilizzato per la gestione dei pacchetti e la compilazione di progetti in linguaggio Rust, sono state identificate due vulnerabilità che possono essere sfruttate durante il download di pacchetti appositamente creati da repository di terze parti (si afferma che gli utenti del repository ufficiale crates.io non siano stati colpiti dal problema). La prima vulnerabilità (CVE-2022-36113) consente di sovrascrivere i primi due byte di qualsiasi file, a seconda dei diritti di accesso attuali. La seconda vulnerabilità (CVE-2022-36114) può essere utilizzata per esaurire lo spazio libero sul disco.
Le vulnerabilità saranno risolte con il rilascio di Rust 1.64, previsto per il 22 settembre. Queste vulnerabilità sono classificate a basso rischio, poiché un danno simile può essere causato dall'uso di pacchetti non verificati da repository di terze parti, attivando le funzioni standard per eseguire i propri gestori tramite script di build o macro procedurali fornite nel pacchetto. Le problematiche menzionate si differenziano in quanto la loro sfruttabilità avviene in fase di estrazione del pacchetto dopo il download (senza compilazione).
In particolare, dopo il download, cargo estrae il contenuto del pacchetto nella cartella ~/.cargo e segna il successo dell'estrazione nel file .cargo-ok. La prima vulnerabilità consiste nel fatto che il creatore del pacchetto può inserire un collegamento simbolico chiamato .cargo-ok, il che porterà alla scrittura del testo «ok» nel file a cui punta il collegamento.
La seconda vulnerabilità è causata dall'assenza di un limite alla dimensione dei dati che possono essere estratti dall'archivio, il che può essere sfruttato per creare "zip-bombe" (i dati possono essere organizzati in modo da raggiungere il massimo grado di compressione per il formato zip — circa 28 milioni di volte; in questo caso, ad esempio, un file zip appositamente preparato di 10 MB porterà a un'estrazione di circa 281 TB di dati).
Fonte: opennet.ru
