# Peti Rust menjalankan perisian hasad pada masa kompilasi. 86 minit.

Published: 2026-09-15

Peti Rust empat makro dengan 260 juta muat turun menambah satu kebergantungan, dan \`cargo build\` menjalankan binari orang yang tidak dikenali pada mesin anda. 20 Ogos 2026: arrayref 0.3.10 mendarat di crates.io bergantung pada proc-macro1 — bukan proc-macro2, yang sebenar — yang skrip binaannya memuat turun muatan, meletakkannya di /tmp/rust-setup dan memulakannya secara terpisah semasa projek anda dikompilasi. Versi bersih ditarik balik supaya amaran Cargo sendiri membimbing anda ke versi yang tercemar. 86 minit kemudian ia dipadamkan.

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

## Apa yang diliputi video ini

- cargo build menjalankan binari orang yang tidak dikenali
- Resit: Blog Rust, SafeDep, Hacker News
- Ini adalah The Daily Diff, postmortem
- Garis masa: 02:11 staging → 07:15 diterbitkan → 08:41 dipadamkan
- Mekanisme: build.rs, tiada kotak pasir, umpan tarik balik

## Bab

- 0:00 cargo build menjalankan binari orang yang tidak dikenali
- 0:20 Resit: Blog Rust, SafeDep, Hacker News
- 0:33 Ini adalah The Daily Diff, postmortem
- 0:40 Garis masa: 02:11 staging → 07:15 diterbitkan → 08:41 dipadamkan
- 1:25 Mekanisme: build.rs, tiada kotak pasir, umpan tarik balik
- 2:05 git blame — pemisahan
- 2:25 Jejari letupan: 2,285 muat turun
- 2:45 Keputusan + barisan Isnin

## Transkrip terjemahan

Diterjemahkan daripada penceritaan asal Bahasa Inggeris. Audio dan kapsyen yang tersedia dikawal oleh YouTube.

### cargo build menjalankan binari orang yang tidak dikenali

0:00 Peti Rust empat makro dengan suku bilion muat turun menambah satu kebergantungan, dan cargo build menjalankan binari orang yang tidak dikenali pada mesin anda. 20 Ogos 2026. arrayref 0.3.10 mendarat di crates.io bergantung pada proc-macro1. Bukan proc-macro2, yang sebenar: satu digit tersasar, dan skrip binaannya menjalankan muatan semasa projek anda dikompilasi. Pasukan keselamatan Rust memadamkannya 86 minit kemudian.

### Resit: Blog Rust, SafeDep, Hacker News

0:22 SafeDep menerbitkan pembongkaran. Hacker News: 554 mata. Bagaimana ia berlaku, mengapa Cargo membenarkannya, dan siapa yang dipersalahkan. Ini adalah The Daily Diff, postmortem. Pukul dua pagi, UTC.

### Ini adalah The Daily Diff, postmortem

0:33 Akaun bernama d-tolney, satu huruf dari David Tolnay, yang menyelenggara separuh daripada Rust, menerbitkan proc-macro1 1.0.106: real

### Garis masa: 02:11 staging → 07:15 diterbitkan → 08:41 dipadamkan

0:41 proc-macro2, dinamakan semula. Staging. 07:11. Versi 1.0.107 menambah skrip binaan, serta base64, TLS dan klien HTTP. Untuk penganalisis token. 07:15. Akaun penyenggara menerbitkan semula arrayref sebagai 0.3.10 dan menarik balik setiap versi yang lebih lama. Cargo mencetak: pertimbangkan untuk mengemas kini ke versi yang tidak ditarik balik. Satu-satunya yang tinggal adalah yang tercemar.

1:02 Amaran itu adalah umpan. Pada minit yang sama, sebuah firma keselamatan melaporkannya kepada Rust. 07:54, isu RustSec. 08:29, isu pada repo; penyerang membalas dengan 0.3.11 dan kebergantungan berbahaya kedua. 08:41, dipadamkan. Lapan puluh enam minit. Kenapa? Satu: Cargo membina setiap kebergantungan yang diisytiharkan, dipanggil atau tidak. Satu baris manifest sudah cukup.

1:21 Dua: skrip binaan berjalan pada mesin anda, sebagai anda, dengan kunci SSH anda dan cargo

### Mekanisme: build.rs, tiada kotak pasir, umpan tarik balik

1:26 token, sebelum kod anda dikompilasi. Tiada kotak pasir, mengikut reka bentuk: begitulah cara peti mencari perpustakaan C. Tiga: di dalamnya adalah proc-macro2 sebenar, jadi binaan berjaya. Muatan: klien TLS yang mempercayai mana-mana sijil mengambil binari, meletakkannya di /tmp/rust-setup dan memulakannya secara terpisah. Pada Windows ia memutar melalui wscript untuk melepaskan objek kerja Cargo; sebuah sumber komen mengatakan demikian. Peringkat kedua, mengikut utas RustSec: alat akses jauh yang ditujukan untuk

1:52 pelayar dan dompet kripto. Puitis, kerana pengguna terbesar arrayref termasuk secp256k1 dan Solana. git blame. Model Cargo, lima puluh lima peratus: kebergantungan menjalankan kod pada mesin anda pada masa kompilasi, tiada kotak pasir, dan amaran tarik balik membawa orang ke

### git blame — pemisahan

2:07 racun itu. Satu akaun, tiga puluh: satu kelayakan menerbitkan semula peti yang seperempat bilion muat turun dipercayai. Digit satu, lima belas: satu ketukan kekunci dari peti Rust yang paling dipercayai, dan tiada siapa yang membaca pokok itu. Jejari letupan: 2,285 muat turun dalam 86 minit. Kurang sepuluh peratus trafik, kerana kebanyakan lockfile memegang 0.3.9. crates.io mengatakan tiada bukti penggunaan.

### Jejari letupan: 2,285 muat turun

2:27 Dua orang pada utas RustSec tidak bersetuju; satu menemui perkhidmatan systemd. Di Hacker News, utas teratas bukan mengenai perisian hasad. Ia adalah halaman peti, di mana 0.3.10 kini tidak pernah wujud. Keputusan, postmortem: NEEDS REVIEW. Lapan puluh enam minit untuk memadamkan, catatan blog pada hari yang sama, akaun dikunci: bahagian itu adalah SHIP IT. Tetapi halaman peti menunjukkan tiada apa yang berlaku, cargo audit kekal senyap pada salinan

### Keputusan + barisan Isnin

2:48 tersimpan, dan skrip binaan masih berjalan sebagai anda. Isnin: jalankan arahan cari blog Rust, dan layan amaran tarik balik sebagai soalan, bukan arahan. Hantar saya insiden yang anda masih tidak dibenarkan untuk bincangkan, dalam komen, atau di the daily diff dot dev. Dan itulah diff untuk hari ini. Saya Niko dari Axrisi. Gabung dengan bertanggungjawab.

## Sumber

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