En Rust-crate kjørte skadevare ved kompilering. 86 minutter.
En Rust-crate med fire makroer og 260 millioner nedlastinger legger til én avhengighet, og `cargo build` kjører en fremmeds binær på maskinen din.
En Rust-crate med fire makroer og 260 millioner nedlastinger legger til én avhengighet, og `cargo build` kjører en fremmeds binær på maskinen din. 20. august 2026: arrayref 0.3.10 lander på crates.io og avhenger av proc-macro1 – ikke proc-macro2, den ekte – hvis byggeskript laster ned en nyttelast, slipper den i /tmp/rust-setup og starter den frakoblet mens prosjektet ditt kompilerer. De rene versjonene trekkes tilbake, slik at Cargos egen advarsel leder deg til den forgiftede. 86 minutter senere slettes den.
Les den skriftlige utgaven (engelsk) ↗
Hva denne videoen dekker
- cargo build kjører en fremmeds binær
- Bevisene: Rust Blog, SafeDep, Hacker News
- Dette er The Daily Diff, postmortem
- Tidslinje: 02:11 staging → 07:15 publisert → 08:41 slettet
- Mekanisme: build.rs, ingen sandkasse, yank-lokkefuglen
Oversatt transkripsjon
Oversatt fra den originale engelske fortellingen. Tilgjengelig lyd og undertekster kontrolleres av YouTube.
cargo build kjører en fremmeds binær
0:00 En Rust-crate med fire makroer og en kvart milliard nedlastinger legger til én avhengighet, og cargo build kjører en fremmeds binær på maskinen din. 20. august 2026. arrayref 0.3.10 lander på crates.io og avhenger av proc-macro1. Ikke proc-macro2, den ekte: ett siffer feil, og byggeskriptet kjører en nyttelast mens prosjektet ditt kompilerer. Rusts sikkerhetsteam sletter den 86 minutter senere.
Bevisene: Rust Blog, SafeDep, Hacker News
0:22 SafeDep publiserer analysen. Hacker News: 554 poeng. Hvordan det skjer, hvorfor Cargo tillater det, og hvem som får skylden. Dette er The Daily Diff, postmortem. Klokken to om natten, UTC.
Dette er The Daily Diff, postmortem
0:33 En konto kalt d-tolney, én bokstav fra David Tolnay, som vedlikeholder halvparten av Rust, publiserer proc-macro1 1.0.106: ekte
Tidslinje: 02:11 staging → 07:15 publisert → 08:41 slettet
0:41 proc-macro2, omdøpt. Staging. 07:11. Versjon 1.0.107 legger til et byggeskript, pluss base64, TLS og en HTTP-klient. For en token-parser. 07:15. Vedlikeholderens konto republiserer arrayref som 0.3.10 og trekker tilbake alle eldre versjoner. Cargo skriver ut: vurder å oppdatere til en versjon som ikke er trukket tilbake. Den eneste som er igjen, er den forgiftede.
1:02 Advarselen er lokkefuglen. Samme minutt rapporterer et sikkerhetsfirma det til Rust. 07:54, en RustSec-sak. 08:29, en sak på repoet; angriperen svarer med 0.3.11 og en annen ondsinnet avhengighet. 08:41, slettet. Åtti-seks minutter. Hvorfor? Én: Cargo bygger hver deklarerte avhengighet, kalt eller ikke. Én manifestlinje er nok.
1:21 To: et byggeskript kjører på maskinen din, som deg, med dine SSH-nøkler og cargo
Mekanisme: build.rs, ingen sandkasse, yank-lokkefuglen
1:26 token, før koden din kompilerer. Ingen sandkasse, av design: det er slik crates finner C-biblioteker. Tre: inni er ekte proc-macro2, så byggingen lykkes. Nyttelasten: en TLS-klient som stoler på ethvert sertifikat henter en binær, slipper den i /tmp/rust-setup og starter den frakoblet. På Windows går den via wscript for å unnslippe Cargos jobobject; en kilde- kommentar sier det. Den andre fasen, ifølge RustSec-tråden: et fjernstyringsverktøy rettet mot
1:52 nettlesere og kryptolommebøker. Poetisk, siden arrayrefs største brukere inkluderer secp256k1 og Solana. git blame. Cargos modell, femtifem prosent: avhengigheter kjører kode på maskinen din ved kompilering, ingen sandkasse, og yank-advarselen ledet folk til
git blame — splitten
2:07 giften. Én konto, tretti: ett legitimasjon republiserer en crate som en kvart milliard nedlastinger stoler på. Sifferet én, femten: ett tastetrykk fra Rusts mest betrodde crate, og ingen leser treet. Skaderadius: 2,285 nedlastinger på 86 minutter. Under ti prosent av trafikken, fordi de fleste lockfiler inneholdt 0.3.9. crates.io sier ingen bevis på bruk.
Skaderadius: 2,285 nedlastinger
2:27 To personer på RustSec-tråden er uenige; en finner en systemd-tjeneste. På Hacker News handler den øverste tråden ikke om skadevaren. Det er crate-siden, hvor 0.3.10 nå aldri eksisterte. Dom, postmortem: NEEDS REVIEW. Åtti-seks minutter å slette, et blogginnlegg samme dag, kontoen låst: den delen er SHIP IT. Men crate-siden viser at ingenting skjedde, cargo audit forblir stille på en bufret
Dom + mandagslinjen
2:48 kopi, og byggeskripter kjører fortsatt som deg. Mandag: kjør Rust-bloggens find-kommando, og behandle en yank-advarsel som et spørsmål, ikke en instruksjon. Send meg hendelsen du fortsatt ikke får snakke om, i kommentarene, eller på the daily diff dot dev. Og det er The Daily Diff for i dag. Jeg er Niko fra Axrisi. Slå sammen ansvarlig.
Kilder
- Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)blog.rust-lang.org
- RUSTSEC-2026-0260 (arrayref)github.com
- RustSec issue #3161 (the original report, IOCs, victims)github.com
- SafeDep technical analysissafedep.io
- GitHub issue on the repo (0.3.11 spotted)github.com
- crates.iocrates.io
- Hacker News (554 points)news.ycombinator.com
- BleepingComputerwww.bleepingcomputer.com



