这些受影响的包每周合计下载量超过 110 万次 。攻击事件在 AI 开发者生态中引发强烈震动,并促使微软迅速出台多项安全政策调整。微软于 6 月 19 日高置信度地将此次行动归因于 Sapphire Sleet 。
攻击者首先利用社会工程学手段,锁定并窃取了一名 Mastra 合法维护者的 npm 账号凭证 。被窃取的账号(识别为 ehindero)拥有整个 @mastra 命名空间的发布权限 。
利用被劫持的账号,攻击者在 88 分钟内将 @mastra/* 下的所有包重新发布了一遍。部分安全报告指出,批量发布的爆发期甚至短至 19 分钟 。如此速度暗示攻击者使用了自动化脚本而非手动上传。
每个被篡改的包版本都引入了一个名为 easy-day-js 的恶意依赖——这是一个针对合法流行的日期库 dayjs 的拼写欺诈(typosquat) 包 。安全研究人员将此行动命名为 easy-day-js 活动 。
恶意代码通过 npm 的 postinstall 脚本自动执行。只要开发者运行 npm install 安装被篡改的包,payload 就会立刻触发,无需运行任何应用代码 。
一旦执行,该 payload 便会从受影响的开发者工作站及构建系统中窃取 加密货币钱包密钥、云服务凭据以及 CI/CD 机密 。此外,payload 还会禁用 TLS 验证,并从攻击者控制的服务器下载第二阶段的窃密程序 。
2026 年 6 月 19 日,微软判定此次攻击为 Sapphire Sleet 所为,该组织是主要针对金融和加密货币行业的朝鲜国家行为体。微软指出,其使用的基础设施和攻击手法(TTPs)与此前 Sapphire Sleet 的活动特征完全吻合 。亚马逊威胁情报也证实,Sapphire Sleet 此前曾发起过针对 axios、debug、chalk 和 typo-crypto 等 npm 包的入侵活动 。
Mastra 攻击事件加速了微软早已在筹备的多项安全改革。
微软官方解释称,长期有效的 API 密钥是“容易丢失的松散绳索”,已成为供应链攻击的首要突破口。窃取的密钥会给攻击者提供充裕的时间发布被投毒的包——这正是 Mastra 事件及此前 NX Console 攻击中发生的情况 。
微软强烈建议所有包维护者迁移至可信发布(Trusted Publishing)。该功能于 2025 年 9 月推出,用基于 OpenID Connect (OIDC) 的短时认证替代了传统的长期 API 密钥 。
可信发布的核心优势 :
当 CI/CD 工作流使用可信发布时,它会向 OIDC 提供商(如 GitHub Actions)请求加密签名的令牌。NuGet.org 验证该令牌后,仅颁发一个临时、单次有效的 API 密钥,仅用于此次发布会话 。
npm 生态与包管理器领域的多项配套改革也在同步推进:
npm login 现在只签发两小时会话令牌 。这些措施共同的目标是彻底消除 Sapphire Sleet 此次利用的单一、长期有效且防护薄弱的 npm 维护者发布令牌。
npm install --ignore-scripts(或全局设置 ignore-scripts = true)可以阻止恶意 postinstall 脚本自动执行 。