-
-
Shai-Hulud投毒竞赛开场,npm639个版本被黑
-
发表于: 11小时前 158
-
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请求发送到
6c6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1i4K6u0W2L8g2)9J5k6r3E0G2M7$3y4Z5k6g2)9J5k6h3y4G2L8g2)9K6b7e0b7@1x3#2)9J5c8X3q4H3K9g2)9J5c8Y4m8#2j5X3I4A6j5#2)9J5c8X3!0@1k6h3I4Q4x3V1k6$3x3g2)9J5c8Y4c8J5j5h3y4W2M7#2!0q4x3#2)9^5x3q4)9^5x3R3`.`.
备用信道:如果载荷成功获取到有效的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
bb5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1i4K6u0W2L8g2)9J5k6r3E0G2M7$3y4Z5k6g2)9J5k6h3y4G2L8g2)9K6b7e0b7@1x3#2)9J5c8X3q4H3K9g2)9J5c8Y4m8#2j5X3I4A6j5#2)9J5c8X3!0@1k6h3I4Q4x3V1k6$3x3g2)9J5c8Y4c8J5j5h3y4W2M7H3`.`.
● 可疑的合法服务API调用(被恶意脚本滥用于验证令牌或证书):
4e6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6X3N6h3I4U0K9h3!0Q4x3X3g2K6K9h3N6K6N6r3!0J5k6g2)9J5k6h3c8W2N6W2)9J5c8X3q4H3K9g2)9J5c8Y4j5J5i4K6u0r3M7$3W2Y4L8X3W2F1k6@1y4W2M7Y4b7`.
5fdK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6h3E0G2M7W2)9J5k6i4y4A6k6%4y4@1L8%4u0W2i4K6u0W2k6r3g2$3i4K6u0r3j5i4m8A6i4K6u0r3N6U0q4Q4x3V1k6D9L8$3N6Q4x3V1k6W2L8Y4c8J5K9h3g2K6
文件与代码指标
● 恶意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·
[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
赞赏
- Shai-Hulud投毒竞赛开场,npm639个版本被黑 159
- 这个边界还要咋整,才能安全? 196
- 从OA进,靠AI横移,半数都是RCE:2026红队攻击彻底变了 190
- macOS,正在大规模失陷 908
- [分享]微步EDR,双第一! 1105