+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

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

  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 videozapisi