呢批套件係 Mastra AI 框架嘅一部分——一個好 popular 嘅 TypeScript 框架,專畀開發者用嚟整 AI 應用同智能代理。受影響套件嘅每週總下載量超過 110 萬次 。呢件事震驚晒成個 AI 開發者社群,Microsoft 喺 2026 年 6 月 19 日高度確信呢次攻擊係 Sapphire Sleet 所為 。
成條攻擊鏈其實係網絡安全專家多年嚟不斷警告嘅典型例子——而且正正就係 package registry 而家爭取消滅嗰種 credential 漏洞。
黑客先透過 Social Engineering 成功騎劫咗一個合法嘅 Mastra 維護者帳戶,拎到佢嘅 npm 登入憑證 。呢個被騎劫嘅帳戶叫 "ehindero",有成個 @mastra 範圍嘅發布權限 。
黑客用呢個騎劫返嚟嘅帳戶,喺 88 分鐘內重新發布晒成個 @mastra/* 命名空間嘅所有套件。有啲報告甚至話,呢次大規模發布嘅高峰期只係維持咗 19 分鐘 。咁快嘅速度,明顯係用自動化發布腳本,而唔係人手逐個上傳。
每個被攻陷嘅套件版本都俾人加入咗一個叫 "easy-day-js" 嘅惡意依賴——呢個係一個 typosquat 攻擊,模仿咗一個好常用嘅日期函式庫 "dayjs" 。網絡安全研究人員將呢次行動命名為「easy-day-js 行動」。
惡意代碼係透過 npm 嘅 postinstall 腳本嚟自動執行嘅。任何開發者只要用 npm install 裝咗受影響嘅套件,個 payload 就會即刻執行,唔使執行任何應用程式代碼 。
Payload 執行之後,就會喺開發者嘅電腦同 build 系統度偷取加密貨幣錢包密鑰、雲端憑證同 CI/CD 秘密 。Payload 仲會停用 TLS 驗證,然後從黑客控制嘅基礎設施下載第二階段嘅偷取程式 。
2026 年 6 月 19 日,Microsoft 高度確信呢次攻擊係 Sapphire Sleet 所為——呢個北韓國家級黑客組織主要針對金融同加密貨幣行業。Microsoft 指出,攻擊所用嘅基礎設施同戰術、技術同程序(TTPs)同之前 Sapphire Sleet 嘅行動吻合 。Amazon Threat Intelligence 亦都將 Sapphire Sleet 同之前針對 axios、debug、chalk 同 typo-crypto 呢啲 npm 套件嘅攻擊聯繫埋一齊 。
呢次 Mastra 攻擊令 Microsoft 加快咗幾個本來已經喺度開發嘅安全變更。佢哋宣布咗兩項重大政策轉向,目標係消除 Sapphire Sleet 嗰條 credential 攻擊鏈。
由 2026 年 8 月 17 日 起,Microsoft 將新創建嘅 NuGet.org API 密鑰最長有效期由 365 日大幅縮短至 30 日 。所有喺呢個日期之前創建嘅 API 密鑰,將會喺 2026 年 11 月 1 日 強制到期 。
理由好簡單:長有效期嘅 API 密鑰就好似「容易鬆脫嘅繩」,已經成為供應鏈攻擊嘅主要切入點 。如果黑客偷到一條有效期好長嘅密鑰,佢哋就有好長嘅時間窗去發布有毒嘅套件——呢次 Mastra 事件同最近嘅 NX Console npm 攻擊都係咁 。
Microsoft 強烈建議所有套件維護者轉用 Trusted Publishing——呢個係一個現代化嘅發布工作流程,喺 2025 年 9 月 推出,用短暫嘅 OpenID Connect(OIDC)認證嚟取代長有效期嘅 API 密鑰 。
Trusted Publishing 嘅主要優勢 :
當 CI/CD 工作流程用 Trusted Publishing 執行時,佢會向 Provider(例如 GitHub Actions)要求一個經加密簽署嘅 OIDC token。NuGet.org 會驗證呢個 token,然後發出一個一次性嘅臨時 API 密鑰,只係喺嗰次發布 session 入面有效 。
仲有幾個 npm 同套件管理生態系統嘅補充變更,加強咗 Microsoft 嘅應對:
npm classic tokens 全面廢除:npm 喺 2025 年 12 月永久廢除晒所有傳統長有效期 token。而家 npm login 只會發出 兩小時 session token 。
npm granular token 到期日限制:新創建嘅可寫入 granular access token 而家預設有效期係 7 日,最長 90 日,之前係冇上限同預設 30 日 。
npm staged publishing:呢個功能喺 2026 年 5 月正式推出,需要維護者通過 2FA 驗證,明確批准一個版本之後,佢先會變成公開可安裝 。
呢啲措施加埋一齊,目標就係消除 Sapphire Sleet 今次利用嘅漏洞:一條單一、長有效期、保護唔足夠嘅 npm 維護者 token,仲有晒成個 package scope 嘅發布權限。
即刻輪換你嘅現有 NuGet API 密鑰:如果你有喺 2026 年 8 月 17 日之前創建嘅密鑰,佢哋會喺 2026 年 11 月 1 日到期。快啲喺個 deadline 之前生成新密鑰,或者轉用 Trusted Publishing 。
盡快採用 Trusted Publishing:基於 OIDC 嘅認證方法可以消除喺 CI/CD Pipeline 入面儲存長有效期密鑰嘅需要。NuGet.org、npm 同 PyPI 都支援呢個方法 。
檢視你嘅 npm 發布工作流程:npm 而家用緊短暫 session token、有限有效期嘅 granular token 同 staged publishing。確保你嘅 CI/CD Pipeline 已經更新,用呢啲受支援嘅認證方法 。
鎖定套件版本,避免自動升級依賴:尤其係關鍵基礎設施嘅話,鎖定已知安全嘅版本,可以防止意外裝到有問題嘅套件 。
安裝套件嗰陣停用自動腳本執行:用 npm install --ignore-scripts(或者 global 設定 ignore-scripts = true)嚟防止惡意 postinstall 腳本自動執行 。