新聞宏觀經濟協調式供應鏈攻擊以建置期惡意軟體入侵熱門 Rust crates

協調式供應鏈攻擊以建置期惡意軟體入侵熱門 Rust crates

作者: Metaverse Post·

重點速覽

  • Rust crates arrayref、internment 與 append-only-vec 的惡意版本遭竄改,改為依賴 proc-macro1——一個仿冒 proc-macro2 的拼字搶註套件,會在 Cargo 建置期間執行惡意軟體。
  • 該跨平台植入程式感染 Linux、macOS 與 Windows 系統,蒐集系統資訊與 Chromium 瀏覽資料,同時建立持久性並與命令與控制端點通訊。
  • Rust 安全回應團隊移除了遭污染的發行版本並鎖定維護者帳號,結論是開發者的電腦或發布憑證很可能已遭入侵,而非維護者本身懷有惡意。
  • arrayref 先前累積約 1.52 億次下載,且出現在包含 Solana 相關元件的依賴樹中,對開發者機器與 CI/CD 基礎設施構成廣大攻擊面。
  • 由於 Cargo 在計算全新依賴樹時會略過已撤回版本,但仍會沿用已記錄在 Cargo.lock 檔案中的版本,實際暴露程度取決於各專案鎖定的鎖定檔。
協調式供應鏈攻擊以建置期惡意軟體入侵熱門 Rust crates

2026年8月20日,資安研究人員發現一起針對 crates.io 上三個廣泛使用的 Rust crates 的協調式供應鏈攻擊。遭入侵的套件——arrayref 0.3.10 版、internment 0.8.7 版與 append-only-vec 0.1.9 版——遭到竄改,加入了會在標準編譯期間執行遠端程式碼的惡意依賴項。Rust 安全回應團隊迅速移除受影響的發行版本並鎖定維護者帳號,並表示正牌開發者的電腦或發布憑證很可能已遭入侵,而非維護者本身懷有惡意。

仿冒依賴項投遞惡意載荷

該攻擊利用了一個名為 proc-macro1 的拼字搶註 crate,假冒正牌的 proc-macro2 函式庫。當 Cargo 解析該依賴項時,會自動執行一個惡意建置腳本,從以 Base64 混淆的資料中重組命令與控制位址、停用 TLS 驗證,並從攻擊者控制的伺服器下載特定平台的攻擊載荷。由於入侵發生在建置期間,只要編譯一個間接依賴任一惡意 crate 的專案,就可能感染開發者工作站或持續整合主機,即使應用程式碼從未直接呼叫任何可疑函式也一樣。

這次仿冒瞄準了 Rust 生態中最無所不在的基礎元件之一——proc-macro2 支撐著大量已發布 crates 的巨集處理——而 crates.io、npm 與 PyPI 等套件庫均以「先到先得」方式分配套件名稱,這項政策長期以來使拼字搶註成為各語言生態中常見的供應鏈攻擊手法。

跨平台後門行為

該惡意軟體可在 Linux、macOS 與 Windows 上運作。在 Linux 與 macOS 上,它會將一個可執行檔投放至暫存目錄並以分離模式啟動;在 Windows 上,則部署 PowerShell 與 Visual Basic 腳本以繞過執行原則並執行隱藏程序。第二階段後門隨後對受感染系統進行側寫,蒐集使用者名稱、主機名稱、已安裝應用程式,以及來自 Chromium 系瀏覽器的瀏覽資料。它還透過登錄檔 Run 機碼、systemd 使用者服務或 macOS LaunchAgents 建立使用者層級的持久性,與命令與控制端點保持通訊,並支援遠端指令以進行後續執行與設定變更。

資安公司 Socket 在 X 上記錄了這起入侵事件:

Popular Rust crates compromised: Affected versions of arrayref, internment, and append-only-vec were modified to depend on proc-macro1, a malicious typosquat of proc-macro2. Its build script downloaded and executed malware during Cargo builds. Analysis:

— Socket (@SocketSecurity), August 20, 2026

更廣泛的生態暴露面與補救措施

這起事件對 Rust 生態及相鄰的區塊鏈基礎設施具有重要影響。僅 arrayref 在遭入侵前就累積了約 1.52 億次下載,且位於包含 Solana 相關元件與熱門圖形介面框架的依賴樹中。儘管下游專案除非明確解析並建置了惡意版本,否則並未直接受害,但該 crate 廣泛的傳遞性使用仍形成涵蓋開發環境、CI/CD 管線與自動化發布基礎設施的廣大攻擊面,而這些環境通常存放著敏感權杖與簽署材料。

此次事件也正值套件庫遭入侵的更廣泛浪潮。2025年8月,一個被追蹤為 rk0x 的攻擊行動利用竊取的維護者憑證發布摻入惡意軟體的熱門 Rust crates 版本,竊取瀏覽器憑證與加密貨幣錢包;npm 與 PyPI 也曾多次遭受拼字搶註與帳號接管攻擊。2024年3月的 XZ Utils 後門事件同樣顯示,單一廣泛使用的開源程式庫可能成為影響大量下游系統的關鍵瓶頸。

調查人員還發現其他由攻擊者控制的中繼 crates——proc-macro-en、aovine、arone、aronenao 與 tinymember——這些套件隨後已從套件庫移除。威脅行為者還將 arrayref 先前的正牌版本撤回,可能藉此在管理員介入前,誘使依賴解析導向惡意發行版本。依據 Cargo 的解析規則,計算全新依賴樹時會略過已撤回的版本,但已記錄在 Cargo.lock 中的版本仍會繼續建置,因此實際暴露程度取決於各專案鎖定的鎖定檔,而非僅套件庫狀態。

各組織應審查 Cargo.lock 檔案、依賴項清單與建置日誌,以找出受影響版本及相關指標。任何曾編譯任一惡意發行版本的系統都應視為可能已遭入侵,需要輪替建置環境可存取的機密資訊、針對已知網路與主機痕跡進行鑑識調查,並從經驗證的乾淨環境重建軟體。防禦者也應監控與已識別命令與控制基礎設施的連線,以及與該植入程式相關的確定性網域生成演算法輸出。生態工具亦支援此類分類排查:cargo tree 可列出傳遞依賴項以供檢視,而透過 cargo audit 使用的 RustSec 諮詢資料庫則收錄已知存在漏洞的 crate 版本。

來源:Metaverse Post