在現代軟體開發流程中,我們習慣依賴 npm 這樣的套件管理器來加速開發。然而,這種便利性也帶來了供應鏈攻擊(Supply Chain Attack)的風險,意即攻擊者並不直接攻擊你的伺服器,而是將惡意程式碼植入你信任的第三方套件中,讓你在執行安裝指令時不知不覺地將後門帶入系統。
近期安全研究人員發現了一個名為 mouse5212-super-formatter 的惡意 npm 套件。這個套件採取了非常精準的目標定位,專門針對使用 Anthropic 旗下 Claude AI 工具的開發者。
惡意套件的運作機制與偽裝手段
這個套件在表面上偽裝成一個內部使用的存檔部署同步工具,聲稱能驗證 GitHub 儲存庫並同步工作區檔案。對於不熟悉的工程師來說,這種名稱和描述看起來像是某種自動化工具,容易降低警覺。
實際上,該套件利用了 npm 的 postinstall 腳本機制。postinstall 是 npm 在完成套件安裝後會自動執行的指令,這讓攻擊者可以在使用者完全沒有意識到的情況下啟動惡意程式碼。
一旦觸發,該程式會嘗試從使用者的環境中尋找 GitHub Access Token(存取令牌,一種用於 API 驗證的密鑰)。如果找不到環境變數中的 Token,它甚至會使用預設的硬編碼 Token 作為備案。接著,它會檢查目標 GitHub 儲存庫是否存在,若不存在則自動創建,並將受害者的本地檔案遞迴式地全部上傳到攻擊者控制的 GitHub 帳號中。
針對 Claude AI 的精準打擊
這次攻擊最值得關注的是其目標路徑。該套件專門掃描並上傳位於 /mnt/user-data 目錄下的檔案。這個路徑是 Claude AI 用於處理後台上傳與輸出檔案的專用目錄。這意味著攻擊者並非隨機竊取資料,而是精確地想要獲取使用者與 AI 互動時產生的敏感數據或上傳的文件。
為了掩蓋行為,該程式還會生成一份偽造的網路連線日誌,讓開發者在檢查系統日誌時,誤以為程式只是在發送診斷資訊,而非在大量外傳私密檔案。
AI 降低攻擊門檻與安全漏洞
研究人員在分析此惡意套件時發現了一個有趣的現象:攻擊者在程式碼中不小心洩露了自己的 GitHub 私鑰 Token。這種低級的 OPSEC(Operations Security,行動安全)失誤在專業的 APT(進階持續性威脅)組織中極為罕見。
這揭示了一個危險的趨勢:隨著生成式 AI 的普及,即使是不太精通編碼的攻擊者,也能利用 AI 快速產出看似專業的惡意程式碼。雖然程式碼的品質可能較粗糙且漏洞百出,但由於開發門檻大幅降低,未來我們可能會看到更多數量龐大、模仿專業攻擊手法但實則粗糙的惡意套件湧入 npm 等公開倉庫。
工程實務建議
面對這類供應鏈攻擊,工程師應採取以下防禦措施:
首先,審慎檢查套件的來源與下載量。面對名稱奇怪、下載量極低且缺乏社群討論的套件,應避免直接安裝。
其次,限制安裝權限。可以使用 npm install --ignore-scripts 指令來禁用 postinstall 等自動執行腳本,防止安裝過程被植入後門。
最後,嚴格管理機密資訊。絕對不要將 GitHub Token 等敏感金鑰硬編碼在程式碼中,且應對環境變數的存取權限進行最小化管理,避免任何第三方套件都能輕易讀取系統級別的 Token。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。