針對現代軟體開發流程,供應鏈攻擊(Supply Chain Attack)已成為極高風險的威脅。最近被命名為 TrapDoor 的攻擊行動,展示了攻擊者如何同時針對 npm (Node.js)、PyPI (Python) 與 Crates.io (Rust) 三大主流套件管理器,透過散布惡意套件來竊取開發者的敏感資訊。
這類攻擊的核心在於利用開發者的信任。開發者習慣安裝第三方套件來加速開發,而攻擊者則透過偽裝成實用的工具,將惡意代碼潛伏在套件中,一旦被安裝或引用,便能直接獲取該開發機的最高權限。
針對不同語言生態系的滲透手段
TrapDoor 並非單一手段,而是針對不同語言的特性設計了不同的觸發機制,讓惡意代碼在開發者毫不知情的情況下執行。
在 npm 生態系中,攻擊者利用了 postinstall hooks(安裝後鉤子)。這是一種 npm 的機制,允許套件在安裝完成後自動執行特定的腳本。攻擊者將惡意代碼放入其中,讓開發者在執行 npm install 的瞬間就觸發感染。
在 Rust 的 Crates.io 生態系中,攻擊者利用了 build.rs 腳本。在 Rust 中,build.rs 是用來在編譯前執行自定義構建邏輯的腳本。攻擊者將惡意邏輯植入此處,使得開發者在編譯專案時便會執行惡意程式。
在 PyPI 生態系中,攻擊者則利用了 import-time execution(導入時執行)。當開發者在 Python 程式碼中寫下 import 該套件時,Python 會執行該模組的頂層代碼,這使得惡意行為在程式啟動的第一時間就發生。
惡意行為與目標:不僅是偷錢,更是為了橫向移動
TrapDoor 的主要目標集中在加密貨幣、DeFi、Solana 以及 AI 開發社群。其竊取目標極其廣泛,包括加密貨幣錢包、SSH 金鑰、雲端平台憑證(如 AWS、GitHub Tokens)、瀏覽器儲存資料以及環境變數(Environment Variables)。
其中最危險的是其持久化與橫向移動能力。以 npm 的 trap-core.js 為例,它不僅會掃描憑證,還會嘗試透過 SSH 進行橫向移動(Lateral Movement),也就是利用偷到的金鑰嘗試登入同一網路內的其他伺服器。為了確保在系統重啟後依然能控制開發機,它會將自己植入 systemd 服務、cron 定時任務、Git hooks 甚至 shell 配置中。
利用 AI 助手進行社交工程的新手法
TrapDoor 最令人不安的創新在於它嘗試操縱 AI 編碼助手。攻擊者在惡意套件中植入了 .cursorrules 和 CLAUDE.md 等設定檔。這些文件包含隱藏指令,旨在欺騙 AI 助手(如 Cursor 或 Claude)在開發者詢問時,誘導 AI 執行所謂的 安全掃描,而實際上該操作會觸發秘密資訊的發現與外洩。
此外,攻擊者還嘗試透過向知名 AI 開源專案(如 LangChain)提交 Pull Request (PR) 的方式,測試是否能將這些隱藏指令注入到正規的開發流程中,讓使用 AI 工具的開發者在不知不覺中被誘導執行惡意操作。
開發者如何防禦
面對這類攻擊,單純依賴防毒軟體是不夠的,因為惡意代碼運行在開發者信任的工具鏈中。
首先,應對套件名稱保持高度警覺。TrapDoor 使用了類似於 Typosquatting(名稱錯拼)或偽裝成實用工具的策略。安裝新套件前,應檢查其下載量、維護紀錄以及官方來源。
其次,限制開發環境的權限。避免使用 root 權限安裝套件,並對敏感的金鑰(SSH Key, API Token)使用硬體金鑰或加密的金庫管理工具,而非直接存放於環境變數或純文字檔案中。
最後,審視 AI 工具的權限。意識到 AI 助手可能會讀取專案中的設定檔並執行建議的操作,在執行 AI 建議的 shell 指令前,務必先閱讀並理解該指令的真實意圖。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。