# Крэйт Rust запусціў шкоднаснае ПЗ падчас кампіляцыі. 86 хвілін.

Published: 2026-09-15

Крэйт Rust з чатырма макрасамі і 260 мільёнамі загрузак дадае адну залежнасць, і \`cargo build\` запускае чужы двайковы файл на вашай машыне. 20 жніўня 2026 г.: arrayref 0.3.10 з'яўляецца на crates.io, які залежыць ад proc-macro1 — не proc-macro2, сапраўднага — чый скрыпт зборкі загружае шкоднасную праграму, змяшчае яе ў /tmp/rust-setup і запускае яе ў асобным працэсе, пакуль ваш праект кампілюецца. Чыстыя версіі выдаляюцца, так што ўласнае папярэджанне Cargo накіроўвае вас да заражанай версіі. Праз 86 хвілін яна выдаляецца.

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

## Што ахоплівае гэта відэа

- cargo build запускае чужы двайковы файл
- Квітанцыі: Rust Blog, SafeDep, Hacker News
- Гэта The Daily Diff, пасляаварыйны разбор
- Храналогія: 02:11 падрыхтоўка → 07:15 апублікавана → 08:41 выдалена
- Механізм: build.rs, без пясочніцы, прынада "yank"

## Раздзелы

- 0:00 cargo build запускае чужы двайковы файл
- 0:20 Квітанцыі: Rust Blog, SafeDep, Hacker News
- 0:33 Гэта The Daily Diff, пасляаварыйны разбор
- 0:40 Храналогія: 02:11 падрыхтоўка → 07:15 апублікавана → 08:41 выдалена
- 1:25 Механізм: build.rs, без пясочніцы, прынада "yank"
- 2:05 git blame — падзел
- 2:25 Радыус паражэння: 2285 загрузак
- 2:45 Вердыкт + лінія панядзелка

## Перакладзеная стэнаграма

Перакладзена з арыгінальнай англійскай агучкі. Даступнае аўдыя і субтытры кантралююцца YouTube.

### cargo build запускае чужы двайковы файл

0:00 Крэйт Rust з чатырма макрасамі і чвэрцю мільярда загрузак дадае адну залежнасць, і cargo build запускае чужы двайковы файл на вашай машыне. 20 жніўня 2026 года. arrayref 0.3.10 з'яўляецца на crates.io, які залежыць ад proc-macro1. Не proc-macro2, сапраўдны: на адну лічбу адрозніваецца, і яго скрыпт зборкі запускае шкоднасную праграму, пакуль ваш праект кампілюецца. Каманда бяспекі Rust выдаляе яго праз 86 хвілін.

### Квітанцыі: Rust Blog, SafeDep, Hacker News

0:22 SafeDep публікуе дэтальнае апісанне. Hacker News: 554 балы. Як гэта адбываецца, чаму Cargo гэта дазваляе і хто вінаваты. Гэта The Daily Diff, пасляаварыйны разбор. Дзве гадзіны ночы, па UTC.

### Гэта The Daily Diff, пасляаварыйны разбор

0:33 Акаўнт пад назвай d-tolney, на адну літару адрозніваецца ад David Tolnay, які падтрымлівае палову Rust, публікуе proc-macro1 1.0.106: сапраўдны

### Храналогія: 02:11 падрыхтоўка → 07:15 апублікавана → 08:41 выдалена

0:41 proc-macro2, перайменаваны. Падрыхтоўка. 07:11. Версія 1.0.107 дадае скрыпт зборкі, а таксама base64, TLS і кліент HTTP. Для парсера токенаў. 07:15. Акаўнт распрацоўшчыка перавыдае arrayref як 0.3.10 і выдаляе ўсе старыя версіі. Cargo друкуе: разгледзьце абнаўленне да версіі, якая не была выдаленая. Адзіная, што засталася, гэта заражаная.

1:02 Папярэджанне - гэта прынада. У тую ж хвіліну фірма па бяспецы паведамляе пра гэта Rust. 07:54, праблема RustSec. 08:29, праблема ў рэпазіторыі; зламыснік адказвае версіяй 0.3.11 і другой шкоднаснай залежнасцю. 08:41, выдалена. Восемдзесят шэсць хвілін. Чаму? Першае: Cargo будуе кожную аб'яўленую залежнасць, незалежна ад таго, выклікана яна ці не. Адной радку ў маніфесце дастаткова.

1:21 Другое: скрыпт зборкі запускаецца на вашай машыне, ад вашага імя, з вашымі SSH-ключамі і токенам cargo,

### Механізм: build.rs, без пясочніцы, прынада "yank"

1:26 да таго, як ваш код скампілюецца. Без пясочніцы, па задуме: так крэйты знаходзяць бібліятэкі C. Трэцяе: унутры знаходзіцца сапраўдны proc-macro2, таму зборка праходзіць паспяхова. Пайлоад: кліент TLS, які давярае любому сертыфікату, забірае бінарны файл, скідае яго ў /tmp/rust-setup і запускае яго ў асобным працэсе. На Windows ён абыходзіць праз wscript, каб пазбегнуць аб'екта задання Cargo; крыніца каментар так кажа. Другі этап, згодна з веткай RustSec: інструмент аддаленага доступу, накіраваны на

1:52 браўзеры і крыптакашалькі. Паэтычна, бо сярод найбуйнейшых карыстальнікаў arrayref ёсць secp256k1 і Solana. git blame. Мадэль Cargo, пяцьдзесят пяць працэнтаў: залежнасці выконваюць код на вашай машыне падчас кампіляцыі, без пясочніцы, і папярэджанне аб выдаленні накіроўвала людзей да

### git blame — падзел

2:07 атруты. Адзін акаўнт, трыццаць: адна ўліковая запіс перавыдае крэйт, якому чвэрць мільярда загрузак давяраюць. Лічба адзін, пятнаццаць: адзін націск клавішы ад самага надзейнага крэйта Rust, і ніхто не чытае дрэва. Радыус паражэння: 2285 загрузак за 86 хвілін. Менш за дзесяць працэнтаў трафіку, бо большасць lockfiles утрымлівалі 0.3.9. crates.io кажа, што доказаў выкарыстання няма.

### Радыус паражэння: 2285 загрузак

2:27 Два чалавекі ў тэме RustSec не згодныя; адзін знаходзіць службу systemd. На Hacker News галоўная тэма не пра шкоднаснае ПЗ. Гэта старонка крэйта, дзе 0.3.10 цяпер ніколі не існавала. Вердыкт, пасляаварыйны разбор: NEEDS REVIEW. Восемдзесят шэсць хвілін на выдаленне, пост у блогу ў той жа дзень, заблакіраваны акаўнт: гэтая частка - SHIP IT. Але старонка крэйта паказвае, што нічога не адбылося, cargo audit маўчыць аб кэшаванай

### Вердыкт + лінія панядзелка

2:48 копіі, і скрыпты зборкі ўсё яшчэ запускаюцца ад вашага імя. Панядзелак: запусціце каманду пошуку блога Rust і разглядайце папярэджанне аб выдаленні як пытанне, а не інструкцыю. Дасылайце мне інцыдэнт, пра які вам усё яшчэ не дазволена гаварыць, у каментарах або на daily diff dot dev. І гэта ўвесь "diff" на сёння. Я Ніка з Axrisi. Злівайце адказна.

## Крыніцы

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