廣泛使用的 Rust 套件 Arrayref 版本 0.3.10 遭到入侵,引入了拼寫相似的 proc-macro1 依賴項,該依賴項會在建構過程中執行遠端有效載荷。此惡意版本於 2026 年 8 月 20 日發布,並在約 86 分鐘後被移除,但 crates.io 上並未顯示下架通知或安全公告。 此事件突顯了 Rust 生態系統中關鍵的供應鏈漏洞,顯示建構階段指令碼即使原始碼看似無害,仍可執行任意程式碼。這強調了需要更好的依賴項稽核與沙盒機制,以保護開發者免受上游套件遭入侵的影響。 proc-macro1 1.0.107 的有效載荷將伺服器位址儲存為 base64 片段,並在建構時重新組裝以下載並執行遠端二進位檔案。受入侵的 Arrayref 版本已迅速移除,但在這段短暫的時間內並未發現實際使用或資料外洩的證據。

事件背景

Rust 的套件管理員 Cargo 允許套件定義在編譯期間執行的建構指令碼(build.rs)。這些指令碼可以執行編譯 C 程式碼或下載資源等任務,但也具有在開發者機器上執行任意命令的能力。供應鏈攻擊通常針對這些指令碼,因為它們以建構程序的權限執行,使其成為惡意軟體的有效攻擊途徑。

社群觀察

社群成員批評 crates.io 缺乏更細緻的事件管理機制,指出該套件移除後並未發布安全公告。同時,許多人也強烈支持為建構指令碼實施 Cargo 沙盒機制,並採用更「內建即用」的標準函式庫設計,以減少依賴項臃腫的問題。