Shai-Hulud投毒竞赛开场,npm639个版本被黑

admin 2026-05-20 05:17:24 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 2026年5月19日微步情报局监测到npm生态系统特大规模供应链投毒事件,攻击者通过沦陷的atool账户发布323个包的639个恶意版本,主要影响@antv系列及echarts-for-react等高流量包。攻击手法包括在package.json植入preinstall脚本执行高强度混淆的恶意代码,系统性窃取开发者主机与CI/CD环境的凭证、Token及敏感数据,并通过HTTPS加密外传或利用GitHubToken创建仓库备份。事件与5月11日TanStack投毒事件高度相似,疑似基于Shai-Hulud攻击源码的模仿犯罪。文档提供详细排查方法(检查依赖、IOCs、网络日志)及处置建议(隔离环境、凭证轮换、代码回滚)。 综合评分: 85 文章分类: 供应链安全,漏洞预警,恶意软件,安全运营,WEB安全


cover_image

Shai-Hulud投毒竞赛开场,npm 639个版本被黑

微步情报局 微步情报局

微步在线研究响应中心

2026年5月19日 16:34 北京

在小说阅读器读本章

去阅读

5月19日,微步情报局监测到一起针对npm生态系统的特大规模供应链投毒事件。攻击者利用被攻陷的npm维护者账户atool,在短时间内批量发布了大量恶意软件包版本,涉及323个独立程序包的639个恶意版本,受影响最严重的是@antv(数据可视化开源品牌)系列包。

影响范围

● 核心受控账户:npm维护者账户 atool。

● 波及数据:在此次攻击活动中,共发现了323个独立程序包的639个恶意版本。

● 主要影响生态:受影响最严重的是 @antv系列包。

● 其他受影响范围:攻击还波及到一些其他的npm包。

● 关键受影响包列表:

echarts-for-react:一个React封装的图表库,周下载量约110万次,是本次攻击中影响最大的包。

@antv 系列核心库:@antv/g2, @antv/g6, @antv/x6, @antv/l7, @antv/s2, @antv/f2, @antv/g, @antv/g2plot, @antv/graphin, @antv/data-set 等。

其他社区包:timeago.js, size-sensor, canvas-nest.js 等。

手法分析

● 初始入侵:在package.json中添加”preinstall” : “bun run index.js”命令,导致在npm包安装时执行该命令,运行恶意脚本。

● 代码混淆:恶意脚本index.js经过高强度混淆处理,使用大字符串数组查找表和运行时字符串解码来隐藏其行为。

● 信息窃取:载荷主要针对开发者主机和CI/CD环境,系统性地搜索和窃取各类高价值敏感信息,包括但不限于:

凭证与Token:GitHub Token, npm Token, AWS Access Key, Vault Token, SSH私钥, Docker认证文件。

CI/CD平台:涵盖GitHub Actions, GitLab CI, CircleCI, Jenkins等18个主流CI/CD平台。

其他关键数据:数据库连接字符串和Kubernetes服务账户材料。

● 数据外传:

主信道:将窃取的数据压缩后,通过 AES-256-GCM 加密,再将密钥用 RSA-OAEP 加密,最终通过HTTPS POST请求发送到

https://t.m-kosche.com:443/api/public/otel/v1/traces。

备用信道:如果载荷成功获取到有效的GitHub Token,它会在受害者账户下创建一个名称带有特定模式的仓库(如<单词>–<单词>–<3位数字>),并将窃取的数据保存在仓库的results/results-*.json文件中。

● 蠕虫式传播:载荷能验证窃取的npm Token有效性,然后下载、篡改并重新发布受害者维护的其他包,表现出极强的自我复制与横向移动能力。

溯源分析

此次攻击方式和恶意代码特征和5月11日针对TanStack的投毒事件高度相似,在TanStack的投毒事件中,攻击者通过污染了Github Actions中的pnpm store cache来将恶意代码在release runner中运行,从而窃取了npm token,导致TanStack一系列的npm包被投毒攻击。

TanStack的投毒事件是Mini Shai-Hulud供应链攻击中的事件之一,该攻击被归属于TeamPCP组织,但是值得注意的是,TeamPCP组织已经开放了Shai-Hulud攻击源码,并且和知名暗网论坛BreachForums一起组织了Shai-Hulud供应链攻击竞赛:

所以此次针对antv的供应链投毒事件可能不是源自TeamPCP组织,而是利用Shai-Hulud攻击源码实现的模仿犯罪。

排查方法

  1. 检查项目依赖:审查项目根目录和node_modules下所有package.json文件,排查是否存在被篡改的preinstall脚本。

  2. 搜索失陷指标(IOCs):在项目中搜索上述提及的网络、文件、代码和行为指标。

  3. 审查网络流量日志:检查CI/CD流水线和开发环境是否有到t.m-kosche.com的DNS解析请求或HTTPS连接记录。

  4. 检查GitHub账户活动:检查组织或个人GitHub账户下,是否出现了来源不明、命名模式可疑的新仓库。

处置建议

● 隔离环境:立即断开受影响机器或容器的网络连接。

● 凭证轮换:立即轮换所有可能暴露的密钥和Token。这包括但不限于npm Token、GitHub Personal Access Token、所有云服务商(AWS等)的Access Key、数据库密码、CI/CD平台密钥等。

● 代码回滚:将受影响的依赖回滚至确认安全的版本,或暂时使用官方提供的安全替代品。

● 彻底清理:删除整个node_modules目录和package-lock.json文件后重新安装依赖。建议在受控环境中进行,防止二次感染。

● 安全审计:对受影响的CI/CD流水线进行全面的安全审计。

IOCs

网络指标

● 恶意域名和URL:

t.m-kosche.com

https://t.m-kosche.com:443/api/public/otel/v1/traces

● 可疑的合法服务API调用(被恶意脚本滥用于验证令牌或证书):

https://fulcio.sigstore.dev/api/v2/signingCert

https://rekor.sigstore.dev/api/v1/log/entries

文件与代码指标

● 恶意npm生命周期脚本:”preinstall” : “bun run index.js”

● 恶意GitHub依赖:

“@antv/setup” : “github:antvis/G2#1916faa365f2788b6e193514872d51a242876569”

行为指标

● GitHub仓库特征:攻击者创建的仓库通常遵循 <单词>–<单词>–<3位数字> 的命名模式,例如 sayyadina-stillsuit-852, atreides-ornithopter-112 等。

● 仓库反标记:仓库描述或README中包含反转的字符串 niagA oG eW ereH :duluH-iahS 或 niaga og ew ereh :duluh-iahs,正序为Shai-Hulud: Here We Go Again。

·END·


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:微步在线研究响应中心 微步情报局 微步情报局《Shai-Hulud投毒竞赛开场,npm 639个版本被黑》

评论:0   参与:  0