+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Rust biblioteka pokrenula malver tokom kompilacije. 86 minuta.

Rust biblioteka sa četiri makroa i 260 miliona preuzimanja dodaje jednu zavisnost, a `cargo build` pokreće binarnu datoteku nepoznate osobe na vašoj mašini.

Rust biblioteka sa četiri makroa i 260 miliona preuzimanja dodaje jednu zavisnost, a `cargo build` pokreće binarnu datoteku nepoznate osobe na vašoj mašini. 20. avgust 2026: arrayref 0.3.10 stiže na crates.io, zaviseći od proc-macro1 – ne proc-macro2, onog pravog – čija skripta za izgradnju preuzima maliciozni teret, smešta ga u /tmp/rust-setup i pokreće ga u pozadini dok se vaš projekat kompajlira. Čiste verzije su povučene (yanked) tako da vas Cargo-ovo sopstveno upozorenje vodi ka zaraženoj. 86 minuta kasnije je izbrisana.

Pročitajte pisano izdanje (engleski) ↗

Šta ovaj video pokriva

  • cargo build pokreće binarnu datoteku nepoznate osobe
  • Dokazi: Rust Blog, SafeDep, Hacker News
  • Ovo je The Daily Diff, postmortem
  • Vremenska linija: 02:11 staging → 07:15 objavljeno → 08:41 izbrisano
  • Mehanizam: build.rs, bez sandboxa, "yank" mamac

Preveden transkript

Prevedeno sa originalne engleske naracije. Dostupan audio i titlovi kontrolisani su od strane YouTube-a.

cargo build pokreće binarnu datoteku nepoznate osobe

0:00 Rust biblioteka sa četiri makroa i četvrt milijarde preuzimanja dodaje jednu zavisnost, a cargo build pokreće binarnu datoteku nepoznate osobe na vašoj mašini. 20. avgust 2026. arrayref 0.3.10 stiže na crates.io, zaviseći od proc-macro1. Ne proc-macro2, onaj pravi: jedna cifra razlike, a njegova skripta za izgradnju pokreće maliciozni teret dok se vaš projekat kompajlira. Rust-ov sigurnosni tim briše je 86 minuta kasnije.

Dokazi: Rust Blog, SafeDep, Hacker News

0:22 SafeDep objavljuje analizu. Hacker News: 554 poena. Kako se to dešava, zašto Cargo to dozvoljava i ko je kriv. Ovo je The Daily Diff, postmortem. Dva ujutru, UTC.

Ovo je The Daily Diff, postmortem

0:33 Nalog pod imenom d-tolney, jedna slovna greška od David Tolnay-a, koji održava pola Rust-a, objavljuje proc-macro1 1.0.106: pravi

Vremenska linija: 02:11 staging → 07:15 objavljeno → 08:41 izbrisano

0:41 proc-macro2, preimenovan. Staging. 07:11. Verzija 1.0.107 dodaje skriptu za izgradnju, plus base64, TLS i HTTP klijent. Za parser tokena. 07:15. Nalog održavaoca ponovo objavljuje arrayref kao 0.3.10 i povlači (yanks) svaku stariju verziju. Cargo ispisuje: razmislite o ažuriranju na verziju koja nije povučena. Jedina preostala je ona zaražena.

1:02 Upozorenje je mamac. Istog minuta, sigurnosna firma to prijavljuje Rust-u. 07:54, RustSec problem. 08:29, problem na repozitorijumu; napadač odgovara sa 0.3.11 i drugom malicioznom zavisnošću. 08:41, izbrisano. Osamdeset šest minuta. Zašto? Prvo: Cargo izgrađuje svaku deklarisanu zavisnost, pozvanu ili ne. Jedan red u manifestu je dovoljan.

1:21 Drugo: skripta za izgradnju se pokreće na vašoj mašini, kao vi, sa vašim SSH ključevima i cargo

Mehanizam: build.rs, bez sandboxa, "yank" mamac

1:26 tokenom, pre nego što se vaš kod kompajlira. Bez sandboxa, po dizajnu: tako biblioteke pronalaze C biblioteke. Treće: unutra je pravi proc-macro2, tako da je izgradnja uspešna. Teret: TLS klijent koji veruje bilo kom sertifikatu preuzima binarnu datoteku, smešta je u /tmp/rust-setup i pokreće je u pozadini. Na Windows-u, zaobilazi se kroz wscript da bi se izbegao Cargo-ov "job object"; izvor komentar to potvrđuje. Druga faza, prema RustSec niti: alat za daljinski pristup namenjen

1:52 preglednicima i kripto novčanicima. Poetično, budući da najveći korisnici arrayref-a uključuju secp256k1 i Solana. git blame. Cargo-ov model, pedeset pet posto: zavisnosti pokreću kod na vašoj mašini tokom kompilacije, bez sandboxa, a upozorenje o povlačenju (yank) je vodilo ljude ka

git blame — podela

2:07 otrovu. Jedan nalog, trideset: jedan akreditiv ponovo objavljuje biblioteku kojoj četvrt milijarde preuzimanja veruje. Cifra jedan, petnaest: jedan pritisak na taster od najpouzdanije Rust biblioteke, i niko ne čita stablo. Opseg štete: 2.285 preuzimanja za 86 minuta. Manje od deset posto saobraćaja, jer je većina lockfile-ova držala 0.3.9. crates.io kaže da nema dokaza o korišćenju.

Opseg štete: 2.285 preuzimanja

2:27 Dve osobe na RustSec niti se ne slažu; jedna pronalazi systemd servis. Na Hacker News-u, glavna nit nije o malveru. To je stranica biblioteke, gde 0.3.10 sada nikada nije ni postojala. Presuda, postmortem: NEEDS REVIEW. Osamdeset šest minuta za brisanje, blog post istog dana, nalog zaključan: taj deo je SHIP IT. Ali stranica biblioteke pokazuje da se ništa nije dogodilo, cargo audit ostaje nem na keširanoj

Presuda + ponedeljna linija

2:48 kopiji, a skripte za izgradnju se i dalje pokreću kao vi. Ponedeljak: pokrenite komandu za pronalaženje sa Rust bloga i tretirajte upozorenje o povlačenju (yank) kao pitanje, a ne kao instrukciju. Pošaljite mi incident o kojem još uvek ne smete da pričate, u komentarima, ili na the daily diff dot dev. I to je diff za danas. Ja sam Niko iz Axrisi. Spajajte odgovorno.

Izvori

  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

Povezani video snimci