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

Published: 2026-09-15

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

Canonical: https://thedailydiff.dev/cs/video/2026-09-15-arrayref-proc-macro/

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

## Kapitoly

- 0:00 cargo build spouští cizí binární soubor
- 0:20 Důkazy: Rust Blog, SafeDep, Hacker News
- 0:33 Toto je The Daily Diff, postmortem
- 0:40 Časová osa: 02:11 staging → 07:15 publikováno → 08:41 smazáno
- 1:25 Mechanismus: build.rs, žádný sandbox, lákadlo yank
- 2:05 git blame — rozdělení
- 2:25 Rozsah útoku: 2 285 stažení
- 2:45 Rozsudek + pondělní linka

## 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)](https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/) — blog.rust-lang.org
- [RUSTSEC-2026-0260 (arrayref)](https://github.com/rustsec/advisory-db/blob/main/crates/arrayref/RUSTSEC-2026-0260.md) — github.com
- [RustSec issue #3161 (the original report, IOCs, victims)](https://github.com/rustsec/advisory-db/issues/3161) — github.com
- [SafeDep technical analysis](https://safedep.io/arrayref-proc-macro1-rust-build-time-malware/) — safedep.io
- [GitHub issue on the repo (0.3.11 spotted)](https://github.com/droundy/arrayref/issues/33) — github.com
- [crates.io](https://crates.io/crates/arrayref) — crates.io
- [Hacker News (554 points)](https://news.ycombinator.com/item?id=49374269) — news.ycombinator.com
- [BleepingComputer](https://www.bleepingcomputer.com/news/security/hackers-poison-arrayref-rust-crate-to-push-infostealer-malware/) — www.bleepingcomputer.com
