軟體供應鏈攻擊近年來演變極快,攻擊者不再僅僅依賴簡單的拼字錯誤來欺騙開發者,而是開始採取一種稱為「製造合法性」的策略。近期在 NuGet 和 npm 兩個主流套件生態系中發現的多次攻擊事件,揭示了攻擊者如何精準地瞄準開發者的工作流程,將日常的套件安裝過程轉化為竊取機密金鑰的通道。
針對 Sicoob 銀行 SDK 的 NuGet 惡意套件分析
近期安全研究人員發現了一個名為 Sicoob.Sdk 的惡意 NuGet 套件。Sicoob 是巴西最大的合作金融系統之一,而該套件偽裝成其官方的 C# 軟體開發工具包(SDK),旨在竊取企業與銀行對接時使用的敏感憑證。
這類攻擊的核心目標是 PFX 憑證。PFX 是一種包含公鑰與私鑰的數位憑證格式,在金融自動化操作中,企業需要 PFX 憑證來通過銀行網路的身份驗證,以便執行即時支付或生成 Pix QR Code 等自動化交易。
該惡意套件的運作機制非常直接:當開發者在程式碼中實例化 SicoobClient 並傳入客戶端 ID、PFX 檔案路徑與密碼時,套件會在後台讀取該 PFX 檔案,將其內容進行 Base64 編碼,隨後將這些機密資訊發送到攻擊者控制的外部 Sentry 端點。此外,它還會攔截 Boleto(巴西常見的現金支付方式)的 API 回應,導致交易金額、付款人資訊等敏感數據外洩。
值得關注的是,這次攻擊使用了兩種高明的欺騙手段。首先是來源不一致,攻擊者在 GitHub 上維護一個乾淨的開源倉庫以營造信任感,但上傳到 NuGet 伺服器的編譯後套件卻植入了惡意代碼。其次,由於 Google Search 的 AI 模式將該惡意套件推薦為合法的 C# 函式庫,大大增加了開發者誤信的機率。
npm 生態系的全面性憑證收割
與 NuGet 的單一目標不同,npm 生態系近期遭遇的是大規模的自動化收割攻擊。多組惡意套件透過偽裝成 OpenSearch、ElasticSearch 或 DevOps 相關的工具,利用 preinstall hook(在套件安裝前自動執行的腳本)在開發者主機上啟動憑證收割機。
這些攻擊的主要目標是環境變數(Environment Variables),例如 AWS 憑證、HashiCorp Vault Token、npm Token 以及 CI/CD 流水線中的機密資訊。由於現代開發環境習慣將金鑰儲存在 .env 檔案或系統環境變數中,攻擊者只要能執行簡單的 JavaScript 腳本,就能輕易將這些資訊外傳。
此外,還出現了利用依賴混淆(Dependency Confusion)的手段。攻擊者將惡意套件版本號設定為極高(例如 99.99.99),誘導套件管理工具優先下載該版本,進而執行後安裝腳本來指紋識別主機並下載第二階段的惡意二進位檔案。
從拼字錯誤到製造合法性的演進
過去我們常聽到的 Typosquatting(拼字錯誤攻擊)是指利用使用者打錯字(例如將 requests 打成 requesst)來誘導下載。但目前的趨勢已演變為製造合法性(Manufactured Legitimacy)。
攻擊者現在會採取更精密的手段,例如在合法名稱前後加上前綴或後綴、模擬版本號、或是設計一個看起來在特定工作流程中非常合理的名稱。這種方式讓惡意套件在開發者的視角中顯得「合理且有用」,降低了警覺心。
更危險的是,部分攻擊(如 TeamPCP 的行動)已展現出蠕蟲般的擴散能力。他們不再只是單純植入代碼,而是利用 CI/CD 自動化流程的信任鏈,將污染從一個依賴項擴散到不相關組織的發佈流程中,達成從受害者 A 擴散到受害者 B 的連鎖反應。
實務防禦建議
對於開發人員與 DevOps 工程師,面對日益複雜的供應鏈攻擊,建議採取以下措施:
第一,嚴格審核第三方套件。不要僅依賴搜尋引擎或 AI 推薦,應檢查套件的官方維護者身分、下載量趨勢以及 GitHub 原始碼與發佈版本的一致性。
第二,實施最小權限原則。避免在開發環境中長期儲存高權限的金鑰。建議使用短效期的臨時憑證(Temporary Credentials)或機密管理工具(如 Vault),而非將金鑰寫死在 .env 檔案中。
第三,監控與輪轉。一旦懷疑使用了可疑套件,應立即將所有相關的 PFX 憑證、API Key 與密碼視為已洩漏,立即執行輪轉(Rotation)並檢查 API 存取日誌是否有異常行為。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。