+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Krabice Rust spustila malware v době kompilace. 86 minut.

Čtyřmakrová krabice Rust s 260 miliony stažení přidává jednu závislost a `cargo build` spouští cizí binární soubor na vašem počítači.

Čtyřmakrová krabice Rust s 260 miliony stažení přidává jednu závislost a `cargo build` spouští cizí binární soubor na vašem počítači. 20. srpna 2026: arrayref 0.3.10 se objevuje na crates.io, závisí na proc-macro1 – nikoli proc-macro2, tom skutečném – jehož buildovací skript stáhne payload, uloží ho do /tmp/rust-setup a spustí ho odpojený, zatímco se váš projekt kompiluje. Čisté verze jsou staženy, takže vlastní varování Cargu vás navede na tu otrávenou. O 86 minut později je smazána.

Přečtěte si psané vydání (anglicky) ↗

Co toto video pokrývá

  • cargo build spouští cizí binární soubor
  • Důkazy: Rust Blog, SafeDep, Hacker News
  • Toto je The Daily Diff, postmortem
  • Časová osa: 02:11 staging → 07:15 publikováno → 08:41 smazáno
  • Mechanismus: build.rs, žádný sandbox, lákadlo yank

Přeložený přepis

Přeloženo z původního anglického vyprávění. Dostupné audio a titulky jsou řízeny YouTube.

cargo build spouští cizí binární soubor

0:00 Čtyřmakrová krabice Rust se čtvrt miliardou stažení přidává jednu závislost a cargo build spouští cizí binární soubor na vašem počítači. 20. srpna 2026. arrayref 0.3.10 se objevuje na crates.io, závisí na proc-macro1. Ne proc-macro2, ten skutečný: o jednu číslici jiný, a jeho buildovací skript spustí payload, zatímco se váš projekt kompiluje. Bezpečnostní tým Rustu ho smaže o 86 minut později.

Důkazy: Rust Blog, SafeDep, Hacker News

0:22 SafeDep publikuje rozbor. Hacker News: 554 bodů. Jak se to stalo, proč to Cargo dovolí a kdo nese vinu. Toto je The Daily Diff, postmortem. Dvě ráno, UTC.

Toto je The Daily Diff, postmortem

0:33 Účet jménem d-tolney, o jedno písmeno od Davida Tolnaye, který udržuje polovinu Rustu, publikuje proc-macro1 1.0.106: skutečný

Časová osa: 02:11 staging → 07:15 publikováno → 08:41 smazáno

0:41 proc-macro2, přejmenovaný. Staging. 07:11. Verze 1.0.107 přidává buildovací skript, plus base64, TLS a HTTP klienta. Pro tokenový parser. 07:15. Účet správce znovu publikuje arrayref jako 0.3.10 a stahuje každou starší verzi. Cargo tiskne: zvažte aktualizaci na verzi, která není stažena. Jediná zbývající je ta otrávená.

1:02 Varování je lákadlo. Ve stejné minutě to bezpečnostní firma nahlásí Rustu. 07:54, problém RustSec. 08:29, problém na repozitáři; útočník odpoví s 0.3.11 a druhou škodlivou závislostí. 08:41, smazáno. Osmdesát šest minut. Proč? Jedna: Cargo sestaví každou deklarovanou závislost, ať už volanou nebo ne. Jeden řádek manifestu stačí.

1:21 Dva: buildovací skript se spustí na vašem počítači, jako vy, s vašimi SSH klíči a cargo

Mechanismus: build.rs, žádný sandbox, lákadlo yank

1:26 tokenem, než se váš kód zkompiluje. Žádný sandbox, záměrně: takto krabice najdou C knihovny. Tři: uvnitř je skutečný proc-macro2, takže sestavení uspěje. Payload: TLS klient, který důvěřuje jakémukoli certifikátu, stáhne binární soubor, uloží ho do /tmp/rust-setup a spustí ho odpojený. Na Windows se přes wscript obejde Cargoův job objekt, aby unikl; zdrojový komentář to uvádí. Druhá fáze, podle vlákna RustSec: nástroj pro vzdálený přístup zaměřený na

1:52 prohlížeče a kryptopeněženky. Poetické, jelikož největší uživatelé arrayrefu zahrnují secp256k1 a Solanu. git blame. Model Cargu, padesát pět procent: závislosti spouštějí kód na vašem počítači v době kompilace, žádný sandbox, a varování yank navedlo lidi na

git blame — rozdělení

2:07 jed. Jeden účet, třicet: jedno přihlašovací jméno znovu publikuje krabici, které čtvrt miliardy stažení důvěřuje. Číslice jedna, patnáct: jeden stisk klávesy z nejdůvěryhodnější krabice Rustu, a nikdo nečte strom. Rozsah útoku: 2 285 stažení za 86 minut. Pod deset procent provozu, protože většina lockfiles obsahovala 0.3.9. crates.io uvádí žádné důkazy o použití.

Rozsah útoku: 2 285 stažení

2:27 Dva lidé ve vláknu RustSec nesouhlasí; jeden najde službu systemd. Na Hacker News se nejlepší vlákno netýká malwaru. Je to stránka krabice, kde 0.3.10 nyní nikdy neexistoval. Rozsudek, postmortem: NEEDS REVIEW. Osmdesát šest minut na smazání, blogový příspěvek ve stejný den, účet uzamčen: ta část je SHIP IT. Ale stránka krabice nic neukazuje, cargo audit zůstává tichý u cached

Rozsudek + pondělní linka

2:48 kopie a buildovací skripty stále běží jako vy. Pondělí: spusťte příkaz find z blogu Rustu a považujte varování yank za otázku, ne za instrukci. Pošlete mi incident, o kterém stále nesmíte mluvit, v komentářích, nebo na daily diff dot dev. A to je diff pro dnešek. Jsem Niko z Axrisi. Sloučit zodpovědně.

Zdroje

  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

Související videa