Rust 的一個 crate 在編譯時執行了惡意軟體。86 分鐘。
一個擁有 2.6 億次下載量的四巨集 Rust crate 增加了一個依賴項,然後 `cargo build` 在您的機器上執行一個陌生人的二進位檔。
一個擁有 2.6 億次下載量的四巨集 Rust crate 增加了一個依賴項,然後 `cargo build` 在您的機器上執行一個陌生人的二進位檔。2026 年 8 月 20 日:arrayref 0.3.10 登陸 crates.io,它依賴於 proc-macro1 —— 而不是真正的 proc-macro2 —— 其建置腳本下載一個有效負載,將其放在 /tmp/rust-setup 中,並在您的專案編譯時以分離模式啟動它。乾淨的版本被撤回,因此 Cargo 自己的警告會引導您到被感染的版本。86 分鐘後它被刪除。
本影片重點
- cargo build 執行陌生人的二進位檔
- 收據:Rust 部落格、SafeDep、Hacker News
- 這是 The Daily Diff,事後分析
- 時間線:02:11 暫存 → 07:15 發布 → 08:41 刪除
- 機制:build.rs,無沙箱,撤回誘餌
翻譯文字稿
譯自英文原版旁白。可用的音訊和字幕由 YouTube 控制。
cargo build 執行陌生人的二進位檔
0:00 一個擁有 2.5 億次下載量的四巨集 Rust crate 增加了一個 依賴項,然後 cargo build 在您的機器上執行陌生人的二進位檔。 2026 年 8 月 20 日。 arrayref 0.3.10 登陸 crates.io,依賴於 proc-macro1。 不是真正的 proc-macro2:差一個數字,其建置腳本在您的專案編譯時執行一個 有效負載。 Rust 的安全團隊在 86 分鐘後將其刪除。
收據:Rust 部落格、SafeDep、Hacker News
0:22 SafeDep 發布了詳細分析。 Hacker News:554 分。 它如何發生,Cargo 為何允許,以及誰該負責。 這是 The Daily Diff,事後分析。 世界標準時間凌晨兩點。
這是 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 用戶端。 用於一個 token 解析器。 07:15。維護者的帳戶將 arrayref 重新發布為 0.3.10,並 撤回了所有舊版本。 Cargo 輸出:考慮更新到一個未被撤回的版本。 唯一剩下的就是被感染的版本。
1:02 警告就是誘餌。 同一分鐘,一家安全公司向 Rust 報告。 07:54,一個 RustSec 問題。 08:29,repo 上的一個問題;攻擊者以 0.3.11 和第二個 惡意依賴項回應。08:41,已刪除。 八十六分鐘。為什麼? 第一:Cargo 會建置所有已聲明的依賴項,無論是否呼叫。 一行清單就足夠了。
1:21 第二:建置腳本在您的機器上執行,以您的身份,帶著您的 SSH 金鑰和 cargo
機制:build.rs,無沙箱,撤回誘餌
1:26 token,在您的程式碼編譯之前。 沒有沙箱,這是設計如此:這是 crate 尋找 C 函式庫的方式。 第三:內部是真正的 proc-macro2,所以建置成功。 有效負載:一個信任任何憑證的 TLS 用戶端獲取一個二進位檔, 將其放在 /tmp/rust-setup 中,並以分離模式啟動它。 在 Windows 上,它透過 wscript 繞道以逃避 Cargo 的作業物件;一個原始碼 註解如此說明。 第二階段,根據 RustSec 線程:一個針對瀏覽器和加密錢包的遠端存取工具。
1:52 富有詩意,因為 arrayref 的最大使用者包括 secp256k1 和 Solana。 git blame。Cargo 的模型,百分之五十五:依賴項在編譯時在您的 機器上執行程式碼,沒有沙箱,而撤回警告將人們引導到 毒藥。一個帳戶,三十:一個憑證
git blame — 分裂
2:07 重新發布了一個擁有數億次下載量的 crate 所信任的 版本。 數字一,十五:與 Rust 最受信任的 crate 差一個按鍵, 而沒有人閱讀樹狀結構。 影響範圍:86 分鐘內 2,285 次下載。 不到流量的百分之十,因為大多數 lockfile 都保留了 0.3.9。 crates.io 說沒有使用證據。
影響範圍:2,285 次下載
2:27 RustSec 線程上的兩個人不同意;其中一人發現了一個 systemd 服務。 在 Hacker News 上,最熱門的線程不是關於惡意軟體。 它是 crate 頁面,現在 0.3.10 從未存在過。 判決,事後分析:NEEDS REVIEW。 八十六分鐘刪除,當天部落格發文,帳戶鎖定:這 部分是 SHIP IT。 但是 crate 頁面顯示什麼也沒發生,cargo audit 對於快取的
判決 + 週一線
2:48 副本保持沉默,而建置腳本仍然以您的身份執行。 週一:執行 Rust 部落格的查找命令,並將撤回警告視為一個 問題,而不是指示。 將您仍然不被允許談論的事件寄給我, 在評論中,或寄到 the daily diff dot dev。 這就是今天的差異。 我是 Axrisi 的 Niko。 負責任地合併。
來源
- Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)blog.rust-lang.org
- RUSTSEC-2026-0260 (arrayref)github.com
- RustSec issue #3161 (the original report, IOCs, victims)github.com
- SafeDep technical analysissafedep.io
- GitHub issue on the repo (0.3.11 spotted)github.com
- crates.iocrates.io
- Hacker News (554 points)news.ycombinator.com
- BleepingComputerwww.bleepingcomputer.com



