Rust "crate" pokrenuo je zlonamjerni softver tijekom kompilacije. 86 minuta.
Rust "crate" s četiri makronaredbe i 260 milijuna preuzimanja dodaje jednu ovisnost, a `cargo build` pokreće binarnu datoteku stranca na vašem računalu.
Rust "crate" s četiri makronaredbe i 260 milijuna preuzimanja dodaje jednu ovisnost, a `cargo build` pokreće binarnu datoteku stranca na vašem računalu. 20. kolovoza 2026.: arrayref 0.3.10 stiže na crates.io, ovisno o proc-macro1 — ne proc-macro2, pravom — čija skripta za izgradnju preuzima "payload", sprema ga u /tmp/rust-setup i pokreće ga u pozadini dok se vaš projekt kompilira. Čiste verzije su uklonjene, tako da vas Cargo-ovo vlastito upozorenje vodi do zlonamjerne. 86 minuta kasnije je izbrisana.
Pročitajte pisano izdanje (engleski) ↗
Što ovaj video pokriva
- cargo build pokreće binarnu datoteku stranca
- Dokazi: Rust Blog, SafeDep, Hacker News
- Ovo je The Daily Diff, postmortem
- Vremenska crta: 02:11 postavljanje → 07:15 objavljeno → 08:41 izbrisano
- Mehanizam: build.rs, bez sandboxa, mamac za uklanjanje
Prevedeni transkript
Prevedeno iz izvornog engleskog pripovijedanja. Dostupni zvuk i titlovi kontroliraju se putem YouTubea.
cargo build pokreće binarnu datoteku stranca
0:00 Rust "crate" s četiri makronaredbe i četvrt milijarde preuzimanja dodaje jednu ovisnost, a cargo build pokreće binarnu datoteku stranca na vašem računalu. 20. kolovoza 2026. arrayref 0.3.10 stiže na crates.io ovisno o proc-macro1. Ne proc-macro2, pravom: jedna znamenka pogrešna, a njegova skripta za izgradnju pokreće payload dok se vaš projekt kompilira. Rust-ov sigurnosni tim briše ga 86 minuta kasnije.
Dokazi: Rust Blog, SafeDep, Hacker News
0:22 SafeDep objavljuje analizu. Hacker News: 554 boda. Kako se to događa, zašto Cargo to dopušta i tko je kriv. Ovo je The Daily Diff, postmortem. Dva ujutro, UTC.
Ovo je The Daily Diff, postmortem
0:33 Račun pod nazivom d-tolney, jedno slovo od David Tolnaya, koji održava polovicu Rust-a, objavljuje proc-macro1 1.0.106: pravi
Vremenska crta: 02:11 postavljanje → 07:15 objavljeno → 08:41 izbrisano
0:41 proc-macro2, preimenovan. Postavljanje. 07:11. Verzija 1.0.107 dodaje skriptu za izgradnju, plus base64, TLS i HTTP klijent. Za parser tokena. 07:15. Račun održavatelja ponovno objavljuje arrayref kao 0.3.10 i uklanja svaku stariju verziju. Cargo ispisuje: razmislite o ažuriranju na verziju koja nije uklonjena. Jedina preostala je zlonamjerna.
1:02 Upozorenje je mamac. Iste minute, sigurnosna tvrtka prijavljuje to Rustu. 07:54, problem s RustSecom. 08:29, problem na repozitoriju; napadač odgovara s 0.3.11 i drugom zlonamjernom ovisnošću. 08:41, izbrisano. Osamdeset šest minuta. Zašto? Prvo: Cargo gradi svaku deklariranu ovisnost, pozvanu ili ne. Jedan redak manifesta je dovoljan.
1:21 Drugo: skripta za izgradnju pokreće se na vašem računalu, kao vi, s vašim SSH ključevima i cargo
Mehanizam: build.rs, bez sandboxa, mamac za uklanjanje
1:26 tokenom, prije nego što se vaš kod kompilira. Nema sandboxa, po dizajnu: tako crates pronalazi C biblioteke. Treće: unutar je stvarni proc-macro2, tako da izgradnja uspijeva. Payload: TLS klijent koji vjeruje bilo kojem certifikatu dohvaća binarnu datoteku, sprema je u /tmp/rust-setup i pokreće je u pozadini. Na Windowsima zaobilazi kroz wscript kako bi pobjegao Cargo-ovom objektu posla; izvor komentar to kaže. Druga faza, prema RustSec temi: alat za daljinski pristup namijenjen
1:52 preglednicima i kripto novčanicima. Poetično, budući da najveći korisnici arrayrefa uključuju secp256k1 i Solanu. git blame. Cargo-ov model, pedeset pet posto: ovisnosti pokreću kod na vašem računalu u vrijeme kompilacije, bez sandboxa, a upozorenje o uklanjanju je vodilo ljude do
git blame — podjela
2:07 otrovanja. Jedan račun, trideset: jedan vjerodajnica ponovno objavljuje crate kojem vjeruje četvrtina milijarde preuzimanja. Znamenka jedan, petnaest: jedan pritisak tipke s najpouzdanijeg Rust cratea, i nitko ne čita stablo. Opseg štete: 2.285 preuzimanja u 86 minuta. Manje od deset posto prometa, jer je većina lockfileova imala 0.3.9. crates.io kaže da nema dokaza o korištenju.
Opseg štete: 2.285 preuzimanja
2:27 Dvije osobe na RustSec temi se ne slažu; jedna pronalazi systemd uslugu. Na Hacker Newsu glavna tema nije o zlonamjernom softveru. To je stranica cratea, gdje 0.3.10 sada nikada nije postojala. Presuda, postmortem: NEEDS REVIEW. Osamdeset šest minuta za brisanje, blog objava istog dana, račun zaključan: taj dio je SHIP IT. Ali stranica cratea pokazuje da se ništa nije dogodilo, cargo audit ostaje tih na spremljenoj
Presuda + linija ponedjeljka
2:48 kopiji, a skripte za izgradnju i dalje se pokreću kao vi. Ponedjeljak: pokrenite Rust blogovu naredbu za pretragu i tretirajte upozorenje o uklanjanju kao pitanje, a ne uputu. Pošaljite mi incident o kojem još uvijek ne smijete govoriti, u komentarima, ili na the daily diff dot dev. I to je "diff" za danas. Ja sam Niko iz Axrisija. Spajajte odgovorno.
Izvori
- 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



