
引言
本報告根據近期發現的惡意 npm 套件攻擊,著重探討其技術細節,目的為為開發人員和組織提供深入見解。此攻擊涉及 11 個新惡意套件,總下載次數超過 5,600 次 1 ,顯示出對軟體供應鏈的持續威脅。報告避免提及任何國家信息,專注於技術分析和安全建議。

技術分析
惡意軟件包及其功能
調查發現,這些惡意 npm 套件的功能是作為遠端存取木馬(RAT)加載器。RAT 加載器通過混淆和動態 Payload 執行來規避檢測,並交付第二階段的惡意軟件 1 。以下是關鍵技術細節:
- 下載量和範圍: 這些套件在移除前已被下載超過 5,600 次 1 ,表明其潛在影響範圍廣泛。
- RAT 加載器的作用: 加載器目的為隱藏其真實功能,並通過網路與命令與控制(C2)伺服器通訊,執行進一步的惡意操作 1 。
混淆技術
混淆是此攻擊的核心技術,具體包括:
- 十六進位編碼: 關鍵字串(如模組名稱和 C2 URL)被編碼為十六進位格式 1 。例如,字串 "hello" 可能被表示為 "68 65 6c 6c 6f"(對應其 ASCII 值)。
-
解碼機制:
使用 JavaScript 的
String.fromCharCode
函數解碼這些十六進位值
1
。例如,
String.fromCharCode(0x68, 0x65, 0x6c, 0x6c, 0x6f)
將恢復為 "hello"。 - 效果: 此技術有效隱藏程式碼的真實意圖,使自動掃描工具和手動程式碼審查難以識別惡意行為 1 。
以下表格總結了混淆技術的關鍵方面:
技術 | 描述 | 影響 |
---|---|---|
十六進位編碼 | 將字串轉換為其 ASCII 值的十六進位表示 | 隱藏字串內容,規避檢測 |
String.fromCharCode
|
解碼十六進位值為可讀字串 | 運行時恢復功能,增加複雜性 |
惡意軟件元件
此攻擊與已知的惡意軟件家族有關,包括:
- BeaverTail: 一種 JavaScript 竊取器,主要通過 npm 套件分發,針對加密貨幣錢包和瀏覽器中的信用卡信息。其程式碼高度混淆,以規避檢測。BeaverTail 還作為加載器,交付第二階段惡意軟件 2 。
- InvisibleFerret: 一種 Python 後門,由 BeaverTail 加載,用於資料竊取和遠端控制受害者系統。其程式碼結構複雜,包含超過 100 個函數,目的為保持沉默以避免留下日誌 3 。
此外,攻擊似乎引入了一個新的 RAT 加載器變種,儘管其具體名稱未明確披露,但其功能與現有元件類似,顯示出 Threat actor 的持續創新。
托管平台的變化
Threat actor 正在擴展其基礎設施,不僅依賴 GitHub,還開始使用 Bitbucket 托管惡意程式碼 1 。此策略可能目的為:
- 分散風險: 通過多個平台分發惡意內容,降低單一平台移除的影響。
- 增加複雜性: 使安全研究人員和平台管理員的檢測和回應工作更加困難。
以下表格比較了 GitHub 和 Bitbucket 在此攻擊中的角色:
平台 | 角色 | 潛在影響 |
---|---|---|
GitHub | 傳統上用於托管惡意 npm 套件和相關程式碼 | 易於檢測,但移除後可快速轉移 |
Bitbucket | 新興平台,用於托管部分惡意程式碼 | 增加檢測難度,分散防禦資源 |
威脅團體概況
此攻擊與一個已知的先進持續性威脅(APT)團體有關,該團體展現出持續和適應的策略。他們不斷發布新惡意軟件,使用不同別名,並利用多種托管平台以維持其操作。此團體的攻擊顯示出對軟體供應鏈的長期關注,特別是在開發人員和依賴管理方面 4 。
對開發人員和軟體供應鏈的啟示
此攻擊凸顯了軟體供應鏈攻擊的風險。開發人員和組織應採取以下措施:
- 驗證套件來源: 始終檢查套件作者和維護者的信譽,以確保可信度。
- 使用安全工具: 部署能夠檢測潛在惡意套件的工具,如 Socket 或其他供應鏈安全解決方案。
- 定期審查依賴項: 對專案依賴項進行定期審計,識別任何可疑模式或行為。
- 保持資訊更新: 關注已知的惡意套件列表和威脅情報報告,以及時應對新威脅。
以下表格總結了關鍵建議:
建議 | 描述 | 實施難度 |
---|---|---|
驗證套件來源 | 檢查作者信譽和套件歷史 | 中等 |
使用安全工具 | 部署檢測工具以識別惡意套件 | 低至中等 |
定期審查依賴項 | 審計專案依賴項,識別異常 | 高 |
保持資訊更新 | 訂閱威脅情報,關注惡意套件列表 | 低 |
結論
此惡意 npm 套件攻擊的擴展強調了在軟體開發生命週期中實施強有力安全實踐的重要性。通過理解和減輕供應鏈攻擊的風險,開發人員和組織可以更好地保護其系統和資料免受高級威脅的影響。