Gli sviluppatori del linguaggio Rust hanno avvertito dell'identificazione nel repository crates.io del pacchetto rustdecimal, contenente codice dannoso. Il pacchetto si basava su un pacchetto legittimo chiamato rust_decimal e per la diffusione utilizzava un nome simile (typosquatting), contando sul fatto che l'utente non avrebbe notato l'assenza del carattere di sottolineatura durante la ricerca o la selezione del modulo dall'elenco.
È notevole che la suddetta strategia si sia rivelata efficace, con il pacchetto fasullo che ha raggiunto quasi lo stesso numero di download dell'originale (~111.000 download rustdecimal 1.23.1 e 113.000 dell'originale rust_decimal 1.23.1). La maggior parte dei download riguardava, però, un clone innocuo, privo di codice dannoso. Le modifiche dannose sono state aggiunte il 25 marzo nella versione rustdecimal 1.23.5, che, fino all'identificazione del problema e all'arresto del pacchetto, è stata scaricata circa 500 volte (si presume che la maggior parte dei download della versione dannosa sia stata effettuata da bot) e non è stata utilizzata nelle dipendenze di altri pacchetti presenti nel repository (non si esclude che il pacchetto dannoso fosse presente nelle dipendenze delle applicazioni finali).
Le modifiche dannose consistevano nell'aggiunta di una nuova funzione Decimal::new, la cui implementazione conteneva codice offuscato per il download da una fonte esterna server e l'esecuzione di un file eseguibile. Durante la chiamata della funzione veniva controllata la variabile d'ambiente GITLAB_CI, che in caso di attivazione caricava un file da un server esterno su /tmp/git-updater.bin. Il gestore dannoso supportava il funzionamento su Linux e macOS (la piattaforma Windows non era supportata).
Si presumeva che la funzione dannosa fosse eseguita durante i test sui sistemi di integrazione continua. Dopo il blocco di rustdecimal, gli amministratori di crates.io hanno effettuato un'analisi del contenuto del repository per rilevare eventuali inserimenti dannosi simili, senza identificare problemi in altri pacchetti. Si consiglia ai proprietari dei sistemi di integrazione continua basati su GitLab di assicurarsi che i progetti testati non utilizzino nelle loro dipendenze il pacchetto rustdecimal. server Gli sviluppatori del linguaggio Rust hanno avvertito dell'identificazione nel repository crates.io del pacchetto rustdecimal, contenente codice dannoso.
Fonte: opennet.ru
