# Una crate Rust ha eseguito malware in fase di compilazione. 86 minuti.

Published: 2026-09-15

Una crate Rust a quattro macro con 260 milioni di download aggiunge una dipendenza, e \`cargo build\` esegue un binario sconosciuto sulla tua macchina. 20 agosto 2026: arrayref 0.3.10 arriva su crates.io dipendente da proc-macro1 — non proc-macro2, quello vero — il cui script di build scarica un payload, lo rilascia in /tmp/rust-setup e lo avvia in modalità detached mentre il tuo progetto compila. Le versioni pulite vengono ritirate in modo che l'avviso di Cargo ti indirizzi a quella infetta. 86 minuti dopo viene eliminato.

Canonical: https://thedailydiff.dev/it/video/2026-09-15-arrayref-proc-macro/

## Contenuto di questo video

- cargo build esegue un binario sconosciuto
- Le ricevute: Rust Blog, SafeDep, Hacker News
- Questo è The Daily Diff, postmortem
- Cronologia: 02:11 staging → 07:15 pubblicato → 08:41 eliminato
- Meccanismo: build.rs, nessuna sandbox, l'esca del ritiro

## Capitoli

- 0:00 cargo build esegue un binario sconosciuto
- 0:20 Le ricevute: Rust Blog, SafeDep, Hacker News
- 0:33 Questo è The Daily Diff, postmortem
- 0:40 Cronologia: 02:11 staging → 07:15 pubblicato → 08:41 eliminato
- 1:25 Meccanismo: build.rs, nessuna sandbox, l'esca del ritiro
- 2:05 git blame — la divisione
- 2:25 Raggio d'azione: 2.285 download
- 2:45 Verdetto + la linea di lunedì

## Trascrizione tradotta

Tradotto dalla narrazione originale inglese. L'audio e i sottotitoli disponibili sono controllati da YouTube.

### cargo build esegue un binario sconosciuto

0:00 Una crate Rust a quattro macro con un quarto di miliardo di download ne aggiunge una dipendenza, e cargo build esegue un binario sconosciuto sulla tua macchina. 20 agosto 2026. arrayref 0.3.10 arriva su crates.io dipendente da proc-macro1. Non proc-macro2, quello vero: una cifra sbagliata, e il suo script di build esegue un payload mentre il tuo progetto compila. Il team di sicurezza di Rust lo elimina 86 minuti dopo.

### Le ricevute: Rust Blog, SafeDep, Hacker News

0:22 SafeDep pubblica la disamina. Hacker News: 554 punti. Come succede, perché Cargo lo permette e di chi è la colpa. Questo è The Daily Diff, postmortem. Le due del mattino, UTC.

### Questo è The Daily Diff, postmortem

0:33 Un account chiamato d-tolney, una lettera da David Tolnay, che mantiene metà di Rust, pubblica proc-macro1 1.0.106: il vero

### Cronologia: 02:11 staging → 07:15 pubblicato → 08:41 eliminato

0:41 proc-macro2, rinominato. Staging. 07:11. La versione 1.0.107 aggiunge uno script di build, più base64, TLS e un client HTTP. Per un parser di token. 07:15. L'account del manutentore ripubblica arrayref come 0.3.10 e ritira ogni versione precedente. Cargo stampa: considera l'aggiornamento a una versione che non è stata ritirata. L'unica rimasta è quella infetta.

1:02 L'avviso è l'esca. Nello stesso minuto, un'azienda di sicurezza lo segnala a Rust. 07:54, un problema RustSec. 08:29, un problema sulla repo; l'attaccante risponde con 0.3.11 e una seconda dipendenza malevola. 08:41, eliminato. Ottantasei minuti. Perché? Uno: Cargo compila ogni dipendenza dichiarata, chiamata o meno. Una riga nel manifesto è sufficiente.

1:21 Due: uno script di build viene eseguito sulla tua macchina, come te, con le tue chiavi SSH e il token di cargo,

### Meccanismo: build.rs, nessuna sandbox, l'esca del ritiro

1:26 prima che il tuo codice compili. Nessuna sandbox, per design: è così che le crate trovano le librerie C. Tre: all'interno c'è il vero proc-macro2, quindi la build riesce. Il payload: un client TLS che si fida di qualsiasi certificato recupera un binario, lo rilascia in /tmp/rust-setup e lo avvia in modalità detached. Su Windows si devia tramite wscript per sfuggire all'oggetto job di Cargo; un commento del codice lo afferma. Il secondo stadio, secondo il thread di RustSec: uno strumento di accesso remoto mirato a

1:52 browser e wallet di criptovalute. Poetico, dato che i maggiori utilizzatori di arrayref includono secp256k1 e Solana. git blame. Il modello di Cargo, cinquantacinque percento: le dipendenze eseguono codice sulla tua macchina in fase di compilazione, nessuna sandbox, e l'avviso di ritiro ha indirizzato le persone al

### git blame — la divisione

2:07 veleno. Un account, trenta: una credenziale ripubblica una crate di un quarto di miliardo di download si fida. La cifra uno, quindici: una battitura dalla crate più fidata di Rust, e nessuno legge l'albero. Raggio d'azione: 2.285 download in 86 minuti. Meno del dieci percento del traffico, perché la maggior parte dei lockfile conteneva 0.3.9. crates.io dice nessuna prova di utilizzo.

### Raggio d'azione: 2.285 download

2:27 Due persone sul thread di RustSec non sono d'accordo; una trova un servizio systemd. Su Hacker News il thread principale non riguarda il malware. È la pagina della crate, dove 0.3.10 ora non è mai esistita. Verdetto, postmortem: NEEDS REVIEW. Ottantasei minuti per eliminare, un post sul blog lo stesso giorno, l'account bloccato: questa parte è SHIP IT. Ma la pagina della crate mostra che nulla è successo, cargo audit rimane in silenzio su una copia

### Verdetto + la linea di lunedì

2:48 cache, e gli script di build vengono ancora eseguiti come te. Lunedì: esegui il comando find del blog di Rust e tratta un avviso di ritiro come una domanda, non un'istruzione. Inviami l'incidente di cui non ti è ancora permesso parlare, nei commenti, o su the daily diff dot dev. E questa è la differenza per oggi. Sono Niko di Axrisi. Unisci responsabilmente.

## Fonti

- [Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)](https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/) — blog.rust-lang.org
- [RUSTSEC-2026-0260 (arrayref)](https://github.com/rustsec/advisory-db/blob/main/crates/arrayref/RUSTSEC-2026-0260.md) — github.com
- [RustSec issue #3161 (the original report, IOCs, victims)](https://github.com/rustsec/advisory-db/issues/3161) — github.com
- [SafeDep technical analysis](https://safedep.io/arrayref-proc-macro1-rust-build-time-malware/) — safedep.io
- [GitHub issue on the repo (0.3.11 spotted)](https://github.com/droundy/arrayref/issues/33) — github.com
- [crates.io](https://crates.io/crates/arrayref) — crates.io
- [Hacker News (554 points)](https://news.ycombinator.com/item?id=49374269) — news.ycombinator.com
- [BleepingComputer](https://www.bleepingcomputer.com/news/security/hackers-poison-arrayref-rust-crate-to-push-infostealer-malware/) — www.bleepingcomputer.com
