Post-incident review for TanStack npm supply chain ransom incident: No unauthorized access to customer production systems
TL;DR · AI 摘要
Grafana Labs确认TanStack供应链勒索事件未影响客户生产系统,且未支付赎金。
核心要点
- Grafana Labs确认未发生客户生产系统的未授权访问。
- Mandiant独立审计确认无代码篡改或仓库污染。
- Grafana Labs未支付赎金,遵循FBI指导原则。
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- TanStack供应链勒索事件回顾
- 事件概述
- 事件未影响客户生产系统
- Grafana Cloud平台未受影响
- 独立审计
- Mandiant确认无代码篡改
- 审计基于API日志
- 应对措施
- 未支付赎金
- 遵循FBI指导原则
金句 / Highlights
值得收藏与分享的关键句。
Mandiant confirmed that there was “no evidence of code tampering or repository poisoning within public organizations or production repositories delivered to end users.”
We did not pay. We launched our mitigation efforts immediately.
The incident was strictly limited to Grafana Labs' GitHub environment.
标题:针对 TanStack npm 供应链勒索事件的后续审查:客户生产系统未发生未经授权的访问
URL 来源:https://grafana.com/blog/post-incident-review-for-tanstack-npm-supply-chain-ransom-incident/
发布时间:2026-06-23
Markdown 内容: 5月27日,我们完成了对最近 TanStack 供应链勒索事件的内部调查,并确认了我们的初步发现:该事件严格局限于 Grafana Labs 的 GitHub 环境。没有发生对客户生产系统的未经授权访问,Grafana Cloud 平台也未受到影响。
为了进行额外的独立审计,我们聘请了网络安全和事件响应领域的领导者 Mandiant。我们向他们提供了 Grafana Labs 日志环境的 API 访问权限,以便他们对我们的系统进行查询,以进行调查,调查于6月1日开始。Mandiant 确认“在公共组织或提供给终端用户的生产仓库中没有发现代码篡改或仓库中毒的证据。”
自从我们发现该事件以来,Grafana Labs 安全团队一直在运行两个并行的工作流:完成调查并加强我们的安全运营。我们发布这篇博客是为了体现透明度,以分享更多关于我们的事件响应和补救措施的详细信息。
摘要与影响
如果您不想阅读我们之前的更新,而是想要简短版本,以下是 TL;DR:5月11日,通过 Mini Shai-Hulud 活动,TanStack 供应链攻击影响了我们。当时,我们相信我们已经成功轮换了此次事件涉及的所有凭证。但我们漏掉了其中一个。我不会将这一疏忽归咎于自大;当时我们所拥有的数据使我们相信我们的轮换是全面的。我们错了。
一个恶意行为者利用了那个被忽视的凭证,克隆了我们的整个仓库集合。然后他们在5月16日联系了我们,要求支付赎金以防止代码泄露。
由于 Grafana Labs 是一家开源公司,您可能会想知道这为什么是一个问题。虽然我们的大部分源代码是公开的,但我们确实维护了一些私有仓库,用于内部工具和特定的 Grafana Cloud 功能。这是一个艰难的决定,但我们坚持了自己的原则和FBI 的记录指南:我们没有支付赎金。
我们立即启动了缓解措施,并确认没有发生对客户生产系统的未经授权访问,Grafana Cloud 平台也未受到影响。我们还确认虽然我们的代码库被下载了,但并未被篡改。我们的客户和开源用户不需要采取任何行动。
Grafana Labs 的响应
我们是在一个周六得知这一事件的,公司各个团队迅速且果断地采取了行动。(借用我最喜欢的说唱歌手之一 Big Daddy Kane 的一句话:在 Grafana Labs,我们从不半途而废。)
作为回应,Grafana Labs 于 5 月 17 日暂停了所有 GitHub 应用程序,于 5 月 18 日启动了全球范围的代码冻结,并对 Vault、GitHub、Okta、Kubernetes、AWS、GCP 和主机日志进行了跨平台审计,以确认是否没有客户的生产数据遭到泄露。
在接下来的几周中,我们的工程团队参与了一项全面的审计,包括但不限于以下内容:
- 完成了 1,500 次以安全为重点的 PR 审查
- 审计了 280 个 GitHub 应用程序,剥离了权限并移除了其中一些
- 对 1,200 个仓库进行了扫描,寻找任何篡改的迹象
- 对一个关键仓库执行了 2,300 次 PR 审查,寻找未经授权的更改
- 完成了基础设施审计并淘汰了遗留系统
- 进行了广泛的新的访问权限审计
这是一项巨大的任务,但每个团队都以非凡的方式挺身而出,尽自己的一份力。工程、安全和跨职能合作伙伴不辞辛劳地应对这一事件,展示了我们在 Grafana Labs 一直珍视的协作精神和对社区和客户的共同承诺。
在初步评估后,我们发现除了源代码之外,下载的内容还包括一些 Grafana Labs 团队使用的 GitHub 仓库,这些仓库用于协作和存储内部运营信息及其他有关我们业务的细节。例如,这包括在专业场合中会交换的业务联系人姓名和电子邮件地址,以及在一些过去的营销活动中使用过的电子邮件地址。这些信息不是从生产系统或 Grafana Cloud 平台中提取或处理的。
如果您想了解是否识别到了与您域名相关的电子邮件地址,请联系 Grafana Labs 支持团队。
[事件时间线](https://grafana.com/blog/post-incident-review-for-tanstack-npm-supply-chain-ransom-incident/#incident-timeline)
所有时间均为 UTC 时间
- 5 月 11 日 19:21 - Shai Hulud 威胁行为者首次在自托管运行器上执行恶意代码,泄露凭证。已轮换凭证。
- 5 月 14 日 07:21 - 威胁行为者使用 grafana-delivery-bot 提交了第一个恶意提交,该提交来自 Shai Hulud 攻击者。
- 5 月 14 日 13:28 - 开始从仓库中窃取数据。
- 5 月 15 日 20:57 - 数据勒索威胁行为者发布其勒索要求。
- 5 月 16 日 08:30 - Grafana Labs 安全团队得知有关勒索的声明,并开始寻求确认。
- 5 月 16 日 17:39 - 确认受到攻击;事件被正式宣布。
- 5 月 16 日 19:33 - 暂停并轮换所有已知受影响的凭证和 GitHub 应用程序。开始暂停和轮换所有其他 GitHub 应用程序和可访问的凭证。
- 5 月 16 日 21:10 - 完成所有 GitHub 应用程序的暂停。
- 5 月 17 日 16:40 - 识别并撤销了与威胁行为者相关联的 GitHub 应用程序账户所执行的所有代码更改。
- 5 月 17 日 16:52 - 确定根本原因和攻击链。
- 5 月 17 日 17:21 - 确定 DockerHub 凭证未被泄露。
- 5 月 17 日 17:51 - 识别了所有恶意工作流运行。编制了受影响密钥的最终列表并进行了轮换。继续对受影响仓库中的所有其他 ci/common 密钥进行轮换。
- 5月17日23:23 - 最后一个可能可访问的凭证确认已轮换或暂停。
- 5月18日03:08 - 开始冻结所有非关键代码和部署更改。
- 5月25日08:00 - 全工程安全加固周开始。
- 5月26日10:58 - 提交审查完成,服务解冻开始。在解冻之前,仓库必须已经完全审查,并过渡为使用 GitHub 应用程序令牌代理以获取短期、细粒度的凭证。
- 5月27日10:54 - 从仓库直接推送镜像到 DockerHub 转变为推送至 Google Cloud Artifact Registry。
- 5月27日 - 内部调查完成。未发现其他攻击活动或被泄露的凭证。
- 6月2日08:00 - 全工程安全加固周结束。
- 6月3日20:43 - 完成对仓库的数据丢失审查。
- 6月18日 - Mandiant 调查完成,与内部调查结果一致。
[接下来](https://grafana.com/blog/post-incident-review-for-tanstack-npm-supply-chain-ransom-incident/#whats-next)
调查现已结束,但我们在 Grafana Labs 提高安全运营方面的工作将继续进行。陀思妥耶夫斯基曾说过,“当理性失败时,魔鬼会帮忙!”我引用《罪与罚》来强调我们的理念:我们只想实施真正推动安全进展的更改。
在过去的一个月中,我们执行了高影响力的控制措施,包括令牌代理、细粒度访问控制、额外的警报和静态分析。此外,我们已停止使用某些 GitHub Actions,并现在使用范围更小且生命周期较短的令牌执行更严格的 Actions。
我们还已开始对我们的 GitHub 组织进行隔离,并将所有归档的仓库隔离到一个专用组织中,同时禁用 Actions。
在接下来的几周内,我们将分享我们应对努力的概述,以及从我们的事件后审查中我们如何改进安全态势的技术细节。