4月22日,Bitwarden命令列介面的惡意版本以官方套件名稱 @bitwarden/[email protected] 出現在npm上。在長達93分鐘的時間裡,任何透過npm下載CLI的人都會收到一個植入後門的替代工具。
Bitwarden偵測到此次入侵,移除了該套件,並發表聲明表示未發現攻擊者存取終端用戶保險庫資料或入侵生產系統的證據。
安全研究公司JFrog分析了惡意載荷,發現其對Bitwarden保險庫並無特別興趣,而是以GitHub權杖、npm權杖、SSH金鑰、Shell歷史記錄、AWS憑證、GCP憑證、Azure憑證、GitHub Actions機密以及AI工具配置文件為目標。
這些憑證掌控著團隊建置、部署及存取基礎設施的方式。
| 目標機密/資料類型 | 通常存放位置 | 運營上的重要性 |
|---|---|---|
| GitHub權杖 | 開發者筆記型電腦、本地配置、CI環境 | 可啟用儲存庫存取、工作流程濫用、機密列舉,以及透過自動化進行橫向移動 |
| npm權杖 | 本地配置、發佈環境 | 可用於發佈惡意套件或變更發佈流程 |
| SSH金鑰 | 開發者機器、建置主機 | 可開啟對伺服器、內部儲存庫及基礎設施的存取 |
| Shell歷史記錄 | 本地機器 | 可揭露貼上的機密、命令、內部主機名稱及工作流程細節 |
| AWS憑證 | 本地配置文件、環境變數、CI機密 | 可暴露雲端工作負載、儲存空間及部署系統 |
| GCP憑證 | 本地配置文件、環境變數、CI機密 | 可暴露雲端專案、服務及自動化管道 |
| Azure憑證 | 本地配置文件、環境變數、CI機密 | 可暴露雲端基礎設施、身份識別系統及部署路徑 |
| GitHub Actions機密 | CI/CD環境 | 可提供對自動化、建置產出物、部署及下游機密的存取 |
| AI工具/配置文件 | 專案目錄、本地開發環境 | 可暴露API金鑰、內部端點、模型設定及相關憑證 |
Bitwarden服務超過50,000家企業及1,000萬名用戶,其官方文件將CLI描述為存取和管理保險庫的「強大、功能完整」方式,包括在使用環境變數進行身份驗證的自動化工作流程中。
Bitwarden將npm列為對已熟悉該套件庫的用戶而言最簡單且首選的安裝方式。自動化用途、開發者機器安裝及npm官方發佈三者的結合,使CLI恰好處於高價值基礎設施機密常駐之處。
JFrog的分析顯示,惡意套件將preinstall鉤子及bw二進位入口點均重新導向至一個載入器,該載入器會獲取Bun執行環境並啟動混淆載荷。此入侵在安裝時及執行時均會觸發。
組織可能在未接觸任何已儲存密碼的情況下執行含後門的CLI,而惡意軟體則系統性地收集掌控其CI管道、雲端帳戶及部署自動化的憑證。
安全公司Socket表示,此次攻擊似乎利用了Bitwarden CI/CD管道中一個遭入侵的GitHub Action,這與Checkmarx研究人員一直追蹤的模式一致。
Bitwarden確認此事件與更大範圍的Checkmarx供應鏈攻擊活動有所關聯。
Npm建立其受信任發佈模型,正是為了應對此類風險。
透過以基於OIDC的CI/CD身份驗證取代長期有效的npm發佈權杖,此系統消除了攻擊者劫持套件庫發佈最常用的路徑之一,npm推薦受信任發佈並將其視為重要的進步。
更難防範的層面是發佈邏輯本身,例如呼叫發佈步驟的工作流程及Actions。npm官方文件建議採用超越OIDC的控制措施,例如需要手動審批的部署環境、標籤保護規則及分支限制。
| 信任鏈中的層級 | 理應保障的內容 | 仍可能出現的問題 |
|---|---|---|
| 原始碼儲存庫 | 預期的程式碼庫存在於預期的儲存庫中 | 攻擊者可能根本無需直接修改主要程式碼庫 |
| CI/CD工作流程 | 自動化儲存庫的建置與發佈 | 若遭入侵,可產生並發佈惡意成品 |
| GitHub Actions/發佈邏輯 | 執行建置及發佈軟體的步驟 | 受污染的Action或被濫用的工作流程可將合法的發佈路徑變為惡意 |
| OIDC受信任發佈 | 以短期身份驗證取代長期有效的套件庫權杖 | 它證明的是授權工作流程發佈了套件,而非工作流程本身是安全的 |
| npm官方套件路徑 | 以預期套件名稱發佈軟體 | 若官方發佈路徑遭入侵,用戶仍可能收到惡意軟體 |
| 開發者機器/CI執行器 | 使用官方套件 | 安裝時或執行時的惡意軟體可收割本地、雲端及自動化機密 |
GitHub的環境設定允許組織要求審查者在工作流程部署前進行簽核。SLSA框架更進一步,要求消費者驗證來源是否符合預期參數,例如正確的儲存庫、分支、標籤、工作流程及建置配置。
Bitwarden事件表明,更難解決的問題在於工作流程層。若攻擊者能夠利用發佈工作流程本身,「官方」標識仍會伴隨惡意套件一同出現。
受信任發佈將信任負擔向上轉移至呼叫它的工作流程及Actions的完整性,而這一層面是組織普遍忽視的。
對於開發者和基礎設施團隊而言,遭入侵的發佈工作流程會暴露CI管道、自動化基礎設施及掌控它們的憑證。
JFrog的分析顯示,惡意軟體一旦獲得GitHub權杖,便可驗證該權杖、列舉可寫入的儲存庫、列出GitHub Actions機密、建立分支、提交工作流程、等待其執行、下載產生的成品,然後清除痕跡。
獲取權杖後,會建立一條自動化鏈,將單一被盜憑證轉化為對組織整個自動化基礎設施的持久存取。
安裝了受污染官方套件的開發者筆記型電腦,成為從主機本地憑證存放區到GitHub存取,再到該GitHub權杖所能觸及之一切的橋梁。
Bybit事件是一個結構上高度類似的案例。遭入侵的開發者工作站讓攻擊者污染了受信任的上游介面,進而影響到受害者的操作流程。
差異在於Bybit涉及被篡改的Safe網頁UI,而Bitwarden涉及被篡改的官方npm套件。
在加密貨幣、金融科技或託管環境中,這條路徑可以從憑證存放區延伸至發佈簽署者、雲端存取及部署系統,而無需接觸任何保險庫條目。
在60天內,Checkmarx披露了遭入侵的GitHub Actions工作流程及OpenVSX插件,而雲端安全聯盟警告TeamPCP攻擊活動正積極入侵開源專案及CI/CD自動化組件。
JFrog記錄了遭入侵的Trivy GitHub Action如何竊取LiteLLM的發佈權杖並啟用惡意PyPI發佈,Axios亦披露兩個惡意npm版本透過遭入侵的維護者帳戶流通約三小時。
Sonatype統計,僅2025年就新增超過454,600個惡意套件,累計總數突破120萬。Bitwarden加入了一系列事件,進一步確認發佈工作流程和套件庫是主要攻擊面。
| 日期/時期 | 事件 | 遭入侵的信任節點 | 重要性 |
|---|---|---|---|
| 2026年3月23日 | Checkmarx披露遭入侵的GitHub Actions工作流程及OpenVSX插件 | GitHub Actions工作流程、開發者工具發佈渠道 | 顯示攻擊者以上游自動化及受信任工具渠道為目標 |
| 同一攻擊活動期間 | JFrog記錄的Trivy/LiteLLM攻擊鏈 | 遭入侵的GitHub Action導致權杖被盜及惡意PyPI發佈 | 展示一個受污染的自動化組件如何連鎖引發套件發佈濫用 |
| 2026年3月31日 | Axios惡意npm版本 | 遭入侵的維護者帳戶 | 顯示官方套件名稱可透過帳戶層級入侵成為攻擊媒介 |
| 2026年4月22日 | Bitwarden CLI惡意npm發佈 | 安全工具的npm官方發佈路徑 | 顯示受信任套件可在不接觸保險庫內容的情況下暴露基礎設施機密 |
| 2025年全年 | Sonatype惡意軟體統計 | 開源套件生態系統整體 | 說明惡意套件活動的規模,以及為何套件庫信任現已成為戰略性風險 |
確切的根本原因尚未公開,Bitwarden已確認與Checkmarx攻擊活動有所關聯,但尚未發佈攻擊者如何獲取發佈管道存取權限的詳細說明。
對防禦者而言,此事件最重要的影響是加速重新定義「官方」的含義。
目前,受信任發佈為每個發佈的套件附加來源資料,從而在套件庫中確認發佈者身份。SLSA明確記錄了更高標準,要求驗證者檢查來源是否符合預期的儲存庫、分支、工作流程及建置參數。
若該標準成為消費者的預設行為,「官方」將開始意味著「由正確工作流程在正確約束下建置」,而入侵了某個Action但無法滿足所有來源約束的攻擊者,其產生的套件在落地前就會被自動化消費者拒絕。
更可能發生的近期走向則相反。攻擊者已透過60天內至少4起事件證明,針對發佈工作流程、Action依賴項及維護者相關憑證能以相對低的成本獲得高價值結果。
每次後續事件都為一份公開的攻擊手冊增添了另一項已記錄的技術,包括Action入侵、從CI輸出竊取權杖、維護者帳戶劫持及受信任發佈路徑濫用。
除非來源驗證成為消費者的預設行為,而非可選的政策層,否則官方套件名稱所獲得的信任將超過其發佈流程所能承擔的程度。
本文首發於CryptoSlate:在長達93分鐘的時間裡,安裝Bitwarden「官方」CLI將筆記型電腦變成劫持GitHub帳戶的跳板。


