# Un 'crate' de Rust va executar programari maliciós en temps de compilació. 86 minuts.

Published: 2026-09-15

Un 'crate' de Rust de quatre macros amb 260 milions de descàrregues afegeix una dependència, i \`cargo build\` executa el binari d'un desconegut a la vostra màquina. 20 d'agost de 2026: arrayref 0.3.10 arriba a crates.io depenent de proc-macro1 — no proc-macro2, el real — el seu script de construcció descarrega una càrrega útil, la deixa a /tmp/rust-setup i l'engega desvinculada mentre el vostre projecte compila. Les versions netes són retirades, de manera que el propi avís de Cargo us condueix a la version enverinada. 86 minuts més tard és esborrada.

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

## Què cobreix aquest vídeo

- cargo build executa el binari d'un desconegut
- Els rebuts: Rust Blog, SafeDep, Hacker News
- Aquest és The Daily Diff, anàlisi post-mortem
- Cronologia: 02:11 en fase → 07:15 publicat → 08:41 eliminat
- Mecanisme: build.rs, sense 'sandbox', l'esquer de la retirada

## Capítols

- 0:00 cargo build executa el binari d'un desconegut
- 0:20 Els rebuts: Rust Blog, SafeDep, Hacker News
- 0:33 Aquest és The Daily Diff, anàlisi post-mortem
- 0:40 Cronologia: 02:11 en fase → 07:15 publicat → 08:41 eliminat
- 1:25 Mecanisme: build.rs, sense 'sandbox', l'esquer de la retirada
- 2:05 git blame — la divisió
- 2:25 Radi de blast: 2.285 descàrregues
- 2:45 Veredicte + la línia del dilluns

## Transcripció traduïda

Traduït de la narració original en anglès. L'àudio i els subtítols disponibles estan controlats per YouTube.

### cargo build executa el binari d'un desconegut

0:00 Un 'crate' de Rust de quatre macros amb un quart de mil milions de descàrregues afegeix una dependència, i cargo build executa el binari d'un desconegut a la vostra màquina. 20 d'agost de 2026. arrayref 0.3.10 arriba a crates.io depenent de proc-macro1. No proc-macro2, el real: un dígit de diferència, i el seu script de construcció executa una càrrega útil mentre el vostre projecte compila. L'equip de seguretat de Rust l'esborra 86 minuts després.

### Els rebuts: Rust Blog, SafeDep, Hacker News

0:22 SafeDep publica la descomposició. Hacker News: 554 punts. Com passa, per què Cargo ho permet i qui en té la culpa. Aquest és The Daily Diff, anàlisi post-mortem. Dues del matí, UTC.

### Aquest és The Daily Diff, anàlisi post-mortem

0:33 Un compte anomenat d-tolney, una lletra de David Tolnay, que manté la meitat de Rust, publica proc-macro1 1.0.106: real

### Cronologia: 02:11 en fase → 07:15 publicat → 08:41 eliminat

0:41 proc-macro2, reanomenat. En fase. 07:11. La versió 1.0.107 afegeix un script de construcció, a més de base64, TLS i un client HTTP. Per a un analitzador de tokens. 07:15. El compte del mantenidor torna a publicar arrayref com a 0.3.10 i retira totes les versions anteriors. Cargo imprimeix: considereu actualitzar a una versió que no estigui retirada. L'única que queda és la enverinada.

1:02 L'advertiment és l'esquer. El mateix minut, una empresa de seguretat ho informa a Rust. 07:54, un problema de RustSec. 08:29, un problema al repositori; l'atacant respon amb 0.3.11 i una segona dependència maliciosa. 08:41, eliminat. Vuitanta-sis minuts. Per què? Un: Cargo construeix totes les dependències declarades, siguin cridades o no. Una línia al manifest és suficient.

1:21 Dos: un script de construcció s'executa a la vostra màquina, com vosaltres, amb les vostres claus SSH i el token de Cargo,

### Mecanisme: build.rs, sense 'sandbox', l'esquer de la retirada

1:26 abans que el vostre codi es compili. Sense 'sandbox', per disseny: és així com els 'crates' troben biblioteques C. Tres: a dins hi ha el veritable proc-macro2, de manera que la construcció té èxit. La càrrega útil: un client TLS que confia en qualsevol certificat obté un binari, el deixa a /tmp/rust-setup i l'engega desvinculat. A Windows, desvia a través de wscript per escapar de l'objecte de treball de Cargo; un comentari del codi font ho diu. La segona etapa, segons el fil de RustSec: una eina d'accés remot dirigida a

1:52 navegadors i carteres de criptomonedes. Poètic, ja que els usuaris més grans d'arrayref inclouen secp256k1 i Solana. git blame. El model de Cargo, cinquanta-cinc per cent: les dependències executen codi a la vostra màquina en temps de compilació, sense 'sandbox', i l'advertiment de retirada va conduir la gent al

### git blame — la divisió

2:07 verí. Un compte, trenta: una credencial torna a publicar un 'crate' en el qual confien un quart de mil milions de descàrregues. El dígit u, quinze: un sol tecleig del 'crate' més confiat de Rust, i ningú llegeix l'arbre. Radi de blast: 2.285 descàrregues en 86 minuts. Menys del deu per cent del tràfic, perquè la majoria dels fitxers de bloqueig tenien 0.3.9. crates.io diu que no hi ha proves d'ús.

### Radi de blast: 2.285 descàrregues

2:27 Dues persones al fil de RustSec no hi estan d'acord; una troba un servei systemd. A Hacker News el fil principal no tracta sobre el programari maliciós. És la pàgina del 'crate', on 0.3.10 ara mai va existir. Veredicte, anàlisi post-mortem: NEEDS REVIEW. Vuitanta-sis minuts per esborrar, una entrada de blog el mateix dia, el compte bloquejat: aquesta part és SHIP IT. Però la pàgina del 'crate' no mostra res, cargo audit roman en silenci sobre una

### Veredicte + la línia del dilluns

2:48 còpia en memòria cau, i els scripts de construcció encara s'executen com vosaltres. Dilluns: executeu l'ordre de cerca del blog de Rust, i tracteu un advertiment de retirada com una pregunta, no una instrucció. Envieu-me l'incident del qual encara no se us permet parlar, als comentaris, o a the daily diff dot dev. I aquesta és la diferència per avui. Sóc Niko d'Axrisi. Fusiona amb responsabilitat.

## Fonts

- [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
