+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

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

Крэйт Rust з чатырма макрасамі і 260 мільёнамі загрузак дадае адну залежнасць, і `cargo build` запускае чужы двайковы файл на вашай машыне.

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

Чытаць пісьмовае выданне (англійская) ↗

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

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

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

Перакладзена з арыгінальнай англійскай агучкі. Даступнае аўдыя і субтытры кантралююцца 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. Злівайце адказна.

Крыніцы

  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

Звязаныя відэа

postmortem · be · 25 вер 2026 г.

Баг у адну мілісекунду спыніў паветраны рух Вялікабрытаніі. На шэсць гадзін.

У 10:00 у аўторак, 8 верасня, адзін звычайны запыт squawk-кода ў Нацыянальнай паветранай сістэме (NAS) NATS быў перапынены паведамленнем з больш высокім прыярытэтам, пакуль ён знаходзіўся на паўдарогі

3:06 ↗
postmortem · be · 22 вер 2026 г.

Перазагрузка адправіла Telstra ў 2006 год. Дзевяць мільёнаў тэлефонаў.

Інжынер у Мельбурне ўключае шасі сінхранізацыі ў 2:50 раніцы, і да сняданку найбуйнейшая мабільная сетка Аўстраліі пагаджаецца, што гэта лістапад 2006 года. 8 ліпеня 2026 года: карта GPS у шасі NTP Te

3:15 ↗