针对Nx“s1ngularity”NPM供应链攻击的调查揭示了严重后果:数千个账户令牌和仓库密钥遭泄露。
Wiz研究人员的事后评估显示,此次Nx入侵事件分三个阶段影响了2180个账户和7200个仓库。Wiz强调,事件影响范围仍在扩大,大量泄露的密钥至今有效。
Nx“s1ngularity”供应链攻击详情
Nx是一款流行的开源构建系统和单体仓库管理工具,广泛应用于企业级JavaScript/TypeScript生态,在NPM包索引上每周下载量超550万次。
2025年8月26日,攻击者利用Nx仓库中存在缺陷的GitHub Actions工作流,在NPM上发布恶意版本包,内含post-install恶意脚本(telemetry.js )。
该脚本是针对Linux和macOS系统的凭证窃取器,试图窃取GitHub令牌、npm令牌、SSH密钥、.env文件、加密货币钱包,并将机密上传至名为“s1ngularity-repository”的公共GitHub仓库。
此次攻击的独特之处在于,凭证窃取器利用已安装的Claude、Q、Gemini等AI平台命令行工具,通过LLM提示词搜索和收集敏感凭证。
Wiz报告指出,攻击者在攻击过程中持续调整提示词以提高成功率:“提示词的演变显示攻击者在攻击中快速探索提示词优化,引入角色提示和不同技术细节,这些变化对恶意软件的成功率产生了实际影响——例如加入‘渗透测试’短语后,LLM拒绝参与此类活动的情况明显增加。”
攻击影响范围
第一阶段(8月26-27日):
受感染的Nx包直接影响1700名用户,泄露超2000个唯一密钥,并暴露20000个系统文件。尽管GitHub在8小时内下架攻击者创建的仓库,但数据已被复制。
第二阶段(8月28-29日):
攻击者利用泄露的GitHub令牌将私有仓库转为公开,并在名称中加入“s1ngularity”字符串。这导致480个账户(主要为组织账户)进一步受损,6700个私有仓库被公开暴露。
第三阶段(8月31日起):
攻击者针对单个受害组织,利用两个被入侵账户额外公开了500个私有仓库。
Nx团队的响应措施
Nx团队在GitHub发布详细根本原因分析,指出攻击源于拉取请求(PR)标题注入,结合对pull_request_target
的不安全使用,使攻击者得以以高权限执行任意代码,触发Nx发布流水线并窃取npm发布令牌。
目前,恶意包已被移除,泄露令牌已吊销并轮换,所有发布者账户均启用双因素认证。为防止类似事件重演,Nx项目已采用NPM的“可信发布者”模型(消除令牌发布机制),并为PR触发的工作流添加人工审批环节。
发表评论
您还未登录,请先登录。
登录