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
- 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



