在 JavaScript 生態系中,攻擊者大量使用了 postinstall 勾子(hook)。只要開發者一個不留神安裝了套件,一個名為 trap-core.js、長達約 1,149 行的竊密程式就會自動執行,系統性地掃蕩電腦中的機密檔案並將其外傳 。
這些套件的名稱都經過精心設計,像 token-usage-tracker、prompt-engineering-toolkit 或 eth-wallet-security-auditor 等,對目標社群來說看起來就像是實用的錢包審計、交易監控或 AI 工具 。
TrapDoor 的竊取清單包山包海,全都是開發者的命脈。根據 Socket 的分析,這隻惡意軟體會獵取錢包檔案、SSH 私鑰、GitHub 個人存取權杖、AWS 雲端憑證、環境變數中的 API 金鑰,以及儲存在瀏覽器裡的機密資訊 。
在加密貨幣方面,它特別鎖定了 MetaMask 和 Phantom 這類熱門的瀏覽器擴充錢包 。而 GitHub 權杖的失竊尤其危險,因為攻擊者能藉此存取私有程式碼儲存庫、在 CI/CD 流程中注入惡意程式碼,甚至橫向感染其他開發者的身份
。
TrapDoor 最令人吃驚的技術創舉,是它開創了一種「策反」AI 編碼助理的攻擊路徑。
當惡意套件成功潛入開發環境後,它會試圖修改或植入 .cursorrules 與 CLAUDE.md 這類設定檔。這些檔案是開發者用來為 Cursor、Claude Code 等 AI 工具提供專案特定指引的「操作手冊」。
攻擊者在這些檔案中嵌入了使用「零寬度 Unicode 字元」(例如 U+200B、U+200C、U+FEFF)編寫的隱形指令。這些字元在文字編輯器裡完全看不到,也無法在一般的程式碼審查中被察覺,因此開發者根本不會發現任何異狀 。然而,AI 助理卻能解析完整的 Unicode 文字,並可能將這些隱藏的惡意指令解讀為合法的命令。
這就形成了一種「雙重打擊」的攻擊鏈:套件先直接感染環境並竊取現有的憑證,而被植入後門的 AI 設定檔,則進一步將開發者信賴的 AI 工具變成攻擊者的幫兇,可能在不知不覺中執行竊取憑證、外洩原始碼,甚至是任意系統指令 。相關研究早已證實,包括 Claude Code 和 GitHub Copilot 在內的 AI 代理平台,確實會執行那些藏在技能檔案中的隱形 Unicode 指令
。
如果你或你的團隊曾安裝過來路不明的開發工具,請立刻採取以下行動:
立刻生成新的加密貨幣錢包助記詞,並將資金轉移到新錢包。同時,輪換 AWS IAM 金鑰、GitHub 個人存取權杖、SSH 金鑰對,以及儲存在環境變數中的所有 API 權杖,並撤銷 CI/CD 整合的 OAuth 權杖 。
執行 npm auditpip listCargo.lock 檔案,對照是否包含已知的惡意套件名稱。搜尋 Git 紀錄中這些套件名稱的歷史,移除任何符合的項目,並進行一次全新的乾淨安裝 。
檢查 ~/.bashrc、~/.zshrc、~/.profile 以及 ~/.config/fish/config.fish,看看是否有可疑的別名(alias)或未經註解的 curl、wget 指令,這些都可能是駭客留下的後門 。
檢查每個儲存庫中的 .git/hooks/ 目錄,看看是否有未經授權的 pre-commit、post-commit 或 pre-push 勾子。由於這場攻擊鎖定 GitHub 權杖,帳號層級的儲存庫被入侵的風險極高 。
檢查 .github/workflows/ 中是否有可疑的工作流程檔案、不尋常的 curl 或 wget 步驟,以及未經授權的第三方 Action。同時也要查閱 Actions 的執行紀錄,確認有無異常的外部網路請求。
搜尋所有專案中的 .cursorrules 和 CLAUDE.md 檔案,檢查是否含有零寬度 Unicode 字元。你可以使用以下指令來偵測隱形字元:
grep -P '[\x{200B}-\x{200F}\x{2028}-\x{202F}\x{FEFF}]' .cursorrules CLAUDE.md檢查排程工作(crontab -l~/.config/systemd/user/),或是 macOS 的 LaunchAgents(~/Library/LaunchAgents/)中是否有惡意項目 。
Comments
0 comments