Il progetto Rust ha rimosso versioni malevole di tre popolari crate dopo che un account compromesso ha pubblicato release che eseguivano malware in fase di build. Gli sviluppatori sono invitati a fissare versioni sicure e verificare la presenza di file compromessi.
Il progetto Rust ha eliminato da crates.io le versioni compromesse di tre crate molto diffusi, dopo che un account di maintainer violato ha pubblicato release contenenti una dipendenza typosquattata che scaricava ed eseguiva un payload remoto durante la compilazione. Le versioni coinvolte sono arrayref 0.3.10, internment 0.8.7 e append-only-vec 0.1.9, tutte pubblicate il 20 agosto 2026 e rimosse entro 86-107 minuti. Il codice malevolo era inserito nello script di build della dipendenza iniettata: bastava compilare un progetto che la risolvesse per attivare il payload, senza dover richiamare nulla dai crate stessi.
Come è avvenuto l'attacco e quali versioni sono a rischio
Gli sviluppatori sono invitati a cercare file dei crate eliminati nella cartella `~/.cargo/registry/cache` e a fissare arrayref alla versione 0.3.9 o precedenti, dato che il Rust Security Response Team ha "unyankato" le versioni compromesse durante la risposta. Non esistono versioni patchate, non è stato assegnato un CVE e le advisory RustSec non riportano prove di utilizzo delle versioni malevole.
Secondo un recente approfondimento su QWERTYmag, attacchi supply chain simili stanno diventando sempre più sofisticati e diffusi, colpendo anche altri ecosistemi open source.
Dettagli tecnici: dipendenze, payload e indicatori di compromissione
La versione malevola di arrayref aveva una dipendenza diretta da proc-macro1, un typosquat di proc-macro2, che eseguiva uno script di build malevolo. Il codice della libreria era una copia autentica di proc-macro2, quindi la build si concludeva normalmente. Lo script ricomponeva l'indirizzo del server C2 da frammenti base64, disabilitava la validazione TLS e selezionava il payload in base a sistema operativo e architettura. Su Unix e macOS scriveva un eseguibile in /tmp/rust-setup e lo lanciava in background; su Windows creava uno script PowerShell in %TEMP% e lo avviava tramite VBScript, sfuggendo al controllo di Cargo.
La consegna del malware si basava sul fatto che il maintainer aveva "yankato" arrayref 0.3.5-0.3.9 nello stesso minuto della pubblicazione malevola, lasciando la versione compromessa come unica non segnalata da Cargo. Arrayref conta oltre 245 milioni di download totali e più di 53 milioni negli ultimi 90 giorni, con 403 crate che lo utilizzano come dipendenza. La catena di dipendenze coinvolge progetti come winit, tiny-skia e blake3, che hanno rimosso arrayref nelle versioni successive alla scoperta dell'attacco.
Funzionamento del malware e collegamenti con campagne precedenti
L'impianto di secondo stadio comunica via HTTPS POST con il path /49890878, persiste tramite chiavi Run del Registro su Windows, LaunchAgent su macOS e servizio systemd su Linux, e supporta comandi per terminazione, riconfigurazione C2, installazione della persistenza e download/esecuzione di ulteriori script. Secondo Wiz, il malware ruba credenziali browser da Chrome, Brave ed Edge interrogando i database SQLite. L'analisi di Nextron evidenzia che il payload Windows estrae solo origin_url e username_value, ma non password_value, mentre i payload Linux e macOS non sono stati analizzati.
StepSecurity ha pubblicato indicatori di compromissione: indirizzi IP (23.254.165.112:9089 e :443), host (hwsrv-798836.hostwindsdns.com), file (/tmp/rust-setup, %TEMP%\rust-setup.ps1), binari (rust-crate_0.1.0, _0.2.0, ecc.), account coinvolti (dtolney, impersonatore; droundy, legittimo ma compromesso) e email fittizia (rchaitm@gmail.com).
Risposta della comunità e misure di mitigazione
Il Rust Security Response Team ha ricevuto la segnalazione alle 07:15 UTC del 20 agosto e ha confermato la presenza dello script malevolo, ringraziando Nextron Systems GmbH per la scoperta. Non si ritiene che l'autore di arrayref abbia agito in malafede, ma che il suo computer o le sue credenziali siano stati compromessi. Non è stato reso noto come sia avvenuta la compromissione dell'account.
La discussione sulla sicurezza della supply chain open source è sempre più attuale: Microsoft e Google hanno attribuito attacchi simili su npm a gruppi nordcoreani come Sapphire Sleet e MIDNIGHT NEPTUNE, ma nessun vendor ha ancora collegato l'incidente Rust a un attore specifico. Intanto, la proposta di introdurre un "cooldown" sulle nuove dipendenze in Cargo è ancora in fase di revisione, mentre GitHub ha già implementato una misura simile per Dependabot.