S1ngularity 泄漏:GitHub 和 NPM 受到影响🚨
最近,针对 Nx 供应链攻击事件“s1ngularity”的调查揭示了大规模凭证泄露:数千个账户令牌和存储库机密被泄露,影响了事件的多个阶段。Wiz 的一份事后报告记录了此次事件的范围,并深入分析了此次数据泄露的演变过程及其影响。🚨📊
根据 Wiz 研究人员发布的评估,此次泄露事件导致 2,180 个账户和 7,200 个存储库分三个阶段暴露,其中许多秘密仍然有效, 持续损害的风险白皮书提供了有关时间线、攻击者的技术以及泄露机密的性质的详细信息。🔍📈
Nx 供应链攻击⚠️🚀
Nx 是一个开源的单仓库构建和管理系统,广泛应用于企业级 JavaScript/TypeScript 生态系统。NPM 仓库每周下载量达数百万次,一个被盗用的软件包会对众多集成和开发流程造成深远影响。⚙️
入侵媒介和事件日期📅
2025 年 8 月 26 日,攻击者利用 Nx 仓库中存在漏洞的 GitHub Actions 工作流程,将软件包的恶意版本发布到 NPM。该软件包包含一个名为“telemetry.js”的恶意安装后脚本,该脚本在受影响的系统上充当凭证提取器恶意软件。🔥
telemetry.js 恶意软件的工作原理
telemetry.js 恶意软件在 Linux 和 macOS 上充当凭证窃取程序,试图窃取 GitHub 令牌、npm 令牌、SSH 密钥、.env 文件、加密货币钱包和其他机密信息,然后将它们上传到名为“s1ngularity-repository”的公共 GitHub 存储库。这种模式使攻击者能够集中并公开被盗信息。🔐

资料来源:Wiz
攻击者还集成了 AI 平台(例如 Claude、Q 和 Gemini)的命令行工具,以便使用定向提示自动进行搜索和数据收集。Wiz 记录了该提示在攻击过程中的演变过程,包括优化提取并规避某些指令的模型拒绝,这反映了攻击者对 LLM 技术的积极运用。✨💡
影响范围:伤害半径和阶段📈🔥
此次事件分为三个阶段。第一阶段,即8月26日至27日,受感染的Nx版本直接影响了1700名用户,泄露了超过2000个机密信息,此外还暴露了受感染系统中约2万个文件。GitHub随后进行了干预,但大部分数据已被复制。
- 🔹 第一阶段(8月26日至27日): 1,700 名用户受到影响,约 2,000 个机密被泄露,20,000 个文件被盗。
- 🔸 第二阶段(8月28日至29日): 使用泄露的令牌将私有存储库转换为公共存储库;另外 480 个帐户遭到入侵,6,700 个存储库遭到暴露。
- 🔹 第三阶段(8月31日起): 针对受害组织的攻击,使用 账户被盗发布 500多个私人存储库。
在第二阶段,攻击者利用窃取的 GitHub 令牌公开私有存储库,并将其重命名为字符串“s1ngularity”,从而扩大了曝光度。在第三阶段,攻击者利用特定目标发布了数百个额外的私有存储库,展现了攻击者的持久性和升级性。🎯

资料来源:Wiz
Nx 项目响应和缓解措施
Nx 团队在 GitHub 上发布了一份根本原因分析报告,解释了如何在拉取请求的标题中注入代码,并结合 pull_request_target 的不安全使用,从而允许以提升的权限执行任意代码,触发发布管道并导致 npm 发布令牌的泄露。🛠️
已实施的措施包括移除恶意软件包、撤销和轮换受损令牌,以及强制所有发布者账户进行双因素身份验证。此外,Nx 采用了 NPM 的“受信任发布者”模型,并添加了 PR 触发工作流的手动审批功能。🔐📌
快速提示和要点✏️
- ✅ 如果怀疑存在泄露,请立即审查并轮换令牌和机密。
- 📌 避免不安全地使用 pull_request_target 并对敏感流程强制执行手动批准。
- 🔧 实施多因素身份验证和可信发布模型,如 Trusted Publisher。
- ⚡ 监控公共存储库并执行自动秘密搜索以便尽早发现。
定义片段和常见问题解答✨
什么是 telemetry.js?
telemetry.js 是受感染的 Nx 软件包版本中包含的恶意安装后脚本的名称;它在 Linux 和 macOS 系统上充当凭证窃取程序,以收集机密并将其泄露到攻击者控制的公共存储库中。🔍
有多少帐户和存储库受到影响?
根据 Wiz 的报告,此次攻击在事件记录的三个阶段中暴露了 2,180 个帐户和 7,200 个存储库,许多秘密仍然有效,并且存在持续影响的风险。📊