就在「s1ngularity」攻擊事件將 AI 助理變成攻擊武器的幾個禮拜之後,NPM 生態系又再次遭遇更大的威脅:一個名為「Shai-Hulud」的自我散播蠕蟲。在一項有關這項快速升級攻擊技巧的驚人展示當中,蠕蟲入侵超過了 187 個套件,其中還包括網路資安廠商 CrowdStrike 所發表的多種開發人員導向工具。
呼叫器與蠕蟲:兩階段升級
這兩起不同的事件,共同描繪出一個全新且正在加速的開放原始碼供應鏈威脅樣貌,讓我們來分析一下它如何演變。
第 1 階段:s1ngularity 攻擊事件將 AI 變成竊取登入憑證的武器
首先一開始是一個熱門的 NPM 套件遭到入侵,s1ngularity 將惡意程式植入開發人員的電腦上。該惡意程式採用一種新穎的方式挾持了本機上安裝的 AI 指令列 (CLI) 工具,例如 Gemini 和 Claude 的工具。接著,透過程式下提示給 AI 助理,要求它手掃描受害者的整個檔案系統是否有登入憑證、SSH 金鑰,以及加密錢包。這使得開發人員自己的生產力工具在不知情的狀況下變成了強大的資料竊盜共犯,創造了一種大規模搜刮機密的全新方法。
第 2 階段:「Shai-Hulud」放出自動化蠕蟲
就在 s1ngularity 攻擊發生的幾週之後,威脅又猛然升級。駭客利用一些維護人員的帳號 (很可能是經由其他廣泛性網路釣魚攻擊得來),釋放出一個會自我散播的蠕蟲,叫做「Shai-Hulud」。
這就是最後的災難性階段,該蠕蟲會利用一些正常工具 (如 TruffleHog) 作為武器,尋找受害環境當中的 NPM 發布權杖 (publishing token)。接著,它會利用這些權杖來自動感染並重新發布多達 20 個由維護人員掌控的其他套件,掀起一波快速自動擴散的供應鏈攻擊,完全無需人為介入。
啟示:沒有人可以倖免
CrowdStrike 的開發人員套件遭駭客入侵可說是一記強烈的警鐘:在自動化攻擊事件當中,沒有人可以倖免於難。這一次並非 CrowdStrike 的核心平台 Falcon 或企業網路遭到入侵,而是蠕蟲無差別的自動化攻擊邏輯所導致。一旦某個程式的發布權杖遭到竊取,該蠕蟲就會自動散布。這起事件充分證明了一件事:在環環相扣的開放原始碼世界裡,即使是最了解資安的公司,也可能暴露於系統性的供應鏈風險。
自動化攻擊時代的未來
Shai-Hulud 蠕蟲稱得上是一種典範轉移,想要防範這種不斷自動擴大的攻擊行動,我們必須從資安態勢上做根本的改變。
- 能對抗網路釣魚的多重認證 (MFA) 勢在必行:以時間為基礎的一次性密碼 (TOTP) 雙重認證 (2FA) 的時代已經過去,因為驗證碼很容易被駭客騙取。現在,將認證與實體裝置綁定的硬體安全金鑰 (FIDO2/WebAuthn) 已成為任何擁有發布權限的開發人員必備的工具。
- 採取「防範第一」的心態:光靠靜態的相依性掃描已經不夠,因為它無法偵測執行時期的惡意行為。我們需要在 CI/CD 流程當中加入主動式防護來偵測異常活動,例如:建構流程突然試圖利用 TruffleHog 來掃描檔案系統。
- 將開發人員身分視為特權存取:開發人員的帳號以及他們的權杖可說是新型態的網域管理帳號,它們擁有進入寶庫的鑰匙 ─ 也就是您的原始程式碼以及發布內容的權限,因此必須採取最低授權原則以及暫時性登入憑證的來加以管理。
- 建置主動式登入憑證掃描:別等到攻擊發生。將 TruffleHog 這類工具整合至您自己的開發循環當中,這樣一來,您就能預先找出並撤銷暴露在外的機密,不讓駭客有機會使用同樣的方法入侵。
自動化供應鏈攻擊的時代已經來臨,現在的問題已經不再是我們是否做好準備,而是我們能多快因應。