+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

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

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.

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.

Llegeix l'edició escrita (anglès) ↗

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

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

  1. Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)blog.rust-lang.org
  2. RUSTSEC-2026-0260 (arrayref)github.com
  3. RustSec issue #3161 (the original report, IOCs, victims)github.com
  4. SafeDep technical analysissafedep.io
  5. GitHub issue on the repo (0.3.11 spotted)github.com
  6. crates.iocrates.io
  7. Hacker News (554 points)news.ycombinator.com
  8. BleepingComputerwww.bleepingcomputer.com

Vídeos relacionats