# Крейт 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/ru/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 Радиус поражения: 2 285 загрузок
- 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 он обходит job object Cargo через wscript; так говорится в комментарии к исходному коду. Вторая стадия, согласно ветке RustSec: инструмент удаленного доступа, нацеленный на

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

### git blame — разделение

2:07 яду. Один аккаунт, тридцать: одна учетная запись переиздает крейт, которому доверяет четверть миллиарда загрузок. Цифра один, пятнадцать: одно нажатие клавиши от самого доверенного крейта Rust, и никто не читает дерево. Радиус поражения: 2 285 загрузок за 86 минут. Менее десяти процентов трафика, потому что большинство lockfile содержали 0.3.9. crates.io говорит, что нет доказательств использования.

### Радиус поражения: 2 285 загрузок

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

### Вердикт + понедельничная линия

2:48 копии, а скрипты сборки по-прежнему запускаются от вашего имени. Понедельник: запустите команду поиска из блога Rust и относитесь к предупреждению yank как к вопросу, а не к инструкции. Присылайте мне инцидент, о котором вам до сих пор не разрешено говорить, в комментариях или на 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
