从配置错误的Grafana到507私有元数据仓库错误:一个价值15.7万美元的漏洞

admin 2026-06-30 07:46:59 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细描述了从配置错误的Grafana实例到发现507个Meta私有代码库的完整渗透测试链条。关键发现包括TLS证书通配符SAN暴露metafb.cloud影子环境、通过JavaScript包解析发现api.haloworld.xyz域、未经认证的GCP令牌端点漏洞,以及由此引发的GCPSecretManager→Vercel令牌→GitHub令牌的权限升级链。该漏洞最终获得15.7万美元赏金,展示了AI驱动侦察与人工判断结合的有效性。 综合评分: 85 文章分类: 渗透测试,漏洞分析,红队,AI安全,安全工具


cover_image

从配置错误的 Grafana 到 507 私有元数据仓库错误:一个价值 15.7 万美元的漏洞

Pwn1 Pwn1

漏洞集萃

2026年6月8日 08:37 山东

在小说阅读器读本章

去阅读

免责声明 本公众号所发布的文章内容仅供学习与交流使用,禁止用于任何非法用途。

在测试一个私有漏洞赏金计划时,我遇到了一个

太长不看

  • 列表项一个运行开源 Grafana 的公共 Meta IP 扩展成了一条通往 Meta 源代码的五跳链。
  • 关键在于 TLS 证书上的通配符 SAN:*.llm-playground.aws.metafb.cloud,它暴露了 metafb.cloud 背后的一个静默影子环境。
  • 通过解析该环境中的 JavaScript 包,发现了对一个以前从未见过的域的引用:api.haloworld.xyz,这成为了下一个转折点。
  • 使用 Slight(AI 构建的单词列表,给定 JS 包、上下文等)对 api.haloworld.xyz 进行模糊测试,随后暴露了 /_api/gcp-token,这是一个未经身份验证的端点,它分发了一个有效的 GCP OAuth2 令牌。
  • 该链涉及 GCP token、Secret ManagerVercel token、85 个环境变量、GitHub token、507 个具有读/写访问权限的私有存储库。
  • 无需克隆任何文件即可证明爆炸半径。Meta 公司向 Preben 公司支付了 15.7 万美元的赔偿金;报告于 2026 年 3 月 21 日提交,并于 2026 年 3 月 23 日前得到缓解。

出于好奇,每年会尝试几次 Meta 漏洞。它是漏洞赏金计划中最难攻克的项目之一,水平远不及那些全职的 Meta 漏洞猎手。

但是,在 Secretricity 拥有一个 AI 框架,它能完成大部分繁重的工作,只需负责引导。在渗透测试和红队演练中也采用了相同的方法:在人工智能侦察的基础上,结合人工判断。最终,发现了 507 个具有读写权限的 Meta 私有代码库。

第一步:人工智能框架,指出了异常情况

过去一年,为实际的侦察工作构建了智能体框架和自定义模型。不会直接让 Meta 去“查找漏洞”,而是要求它查找异常情况:与基线相比明显不符之处。

在这次排查中,该框架仅用人工团队几周的时间就完成了这项工作。它分析了 Meta 的公共基础设施,构建了正常状态的基准,并提供了不符合标准的主机列表。而整个排查链正是从这些异常标记之一开始的。

步骤 2:一个无聊的 Grafana

被标记的主机之一是一个运行着开源 Grafana 的 IP 地址。没有经过身份验证,就那样暴露在公共互联网上。

第一反应:不错。第二反应(仔细查看后):无聊。开发指标,没什么敏感信息。大多数研究人员会把这种发现归类为低级别的配置错误,然后就此作罢。

框架并没有继续推进。它标记了这家主机是有原因的,尽管它的表面表现并不出色,但框架仍然将其保留在候选名单中。已经准备放弃它了,但是框架就根本不这么认为。这几乎是人为失误的环节。

流水线标记为异常的主机上,运行着一个开放的 Grafana 实例。虽然包含一些开发指标,并不涉及敏感信息,但它占用一个公共的 Meta IP 地址才是真正的警示信号。

步骤 3:TLS 证书

Grafana 本身没什么特别的。真正奇怪的是,它竟然运行在 Meta 显然正在运行的主机上。Meta 的网络管理非常严格;内部服务不会在没有其他因素影响的情况下泄露到公共互联网上。真正的问题不是“这个 Grafana 里有什么?”,而是“为什么这个 IP 地址会暴露出来?”

该框架从 IP 地址获取了 TLS 证书并公开了 SAN。CN:*.llm-playground.aws.metafb.cloud

metafb.cloud 是一个几乎无人知晓的域名。llm-playground 是一个内部人工智能实验环境,其开放程度足以使其拥有公共证书。

通配符 SAN 表明证书的配置者考虑的是一整个主机家族。利用该证书的指纹访问了 crt.sh 脚本,并从中提取出了 20 到 30 个可访问的子域名。

步骤 4a:人工智能构建词表

metafb.cloud 的大部分子域名都很乏味。为了找到一些有趣的内容,需要一个智能的词表,而不是通用的词表。而且还需要找到一个地方来指向它。

该框架一直在解析能够访问的子域名中的 JavaScript 包,提取它找到的每个 URL 和主机名。其中一个引用指向一个从未见过的域名:api.haloworld.xyz。它不在 metafb.cloud 上,不在证书中,也不在 Meta 的任何公开接口中。它只是一个隐藏在 JavaScript 代码中的不起眼的引用。

有了新的目标,重新开始执行编排工作。根据侦察阶段已经掌握的信息,为这个主机构建了一个上下文感知词表:JavaScript 包中的路由、抓取的页面中的单词和标记、以及同级子域名的命名模式。这种词表人也能整理出来,但是耗时太长。

步骤 4b:人类(实际上是工具)模糊

将词表输入模糊测试器,并逐个遍历子域名。一些低危和中危的漏洞被排除。然后,遇到了一个彻底改变一切的漏洞:GET [https://api.haloworld.xyz/_api/gcp-token]

该未经身份验证的端点会向任何请求者发放有效的 GCP OAuth2 令牌。无需身份验证,也没有速率限制。

未经身份验证。该端点会向所有请求者返回有效的 GCP OAuth2 访问令牌。GCP 访问令牌是一把钥匙,它能解锁的内容完全取决于它所代表的身份。而此令牌代表的身份错误。

第五步:链条

逐个进行只读调用,检查令牌的功能。

该令牌拥有对 GCP Secret Manager 的读取权限。Secret Manager 内部包含一个 Vercel API 令牌。该 Vercel 令牌暴露了组织内 85 个项目环境变量。这些环境变量中包含多个 GitHub 个人访问令牌。其中一个 GitHub 令牌拥有对 507 个私有仓库的读写权限。

步骤 6:停止

当 GitHub 令牌显示有 507 个私有仓库时,只进行了一次谨慎的查询,确认了数量后便关闭了标签页。没有克隆任何内容,没有搜索代码,也没有浏览任何文件树。

这项工作的目的是证明影响,而不是提取影响。一旦能够证明爆炸半径,就应该立即提交报告。举报了这条链条;Meta 的安全团队轮换了凭证并展开了调查。最终,Meta 向 Preben Ver Eecke 支付了 15.7 万美元的赔偿金。

能从中得到什么启示呢?

难点不在于模型或漏洞本身,而在于搭建框架、设置提示、构建反馈循环、串联处理一系列小漏洞,以及判断哪些标记值得深入调查。在这方面已经投入了大量精力,而这项发现正是原因之一。

这条由人主导、人工智能驱动的发现链已向 Setricity 客户开放。

Meta 的回应

经审查,决定发放 15 万美元的赏金。以下是赏金金额的说明。Meta 通过 Bugcrowd 平台发放赏金。

报告揭示了一系列漏洞,这些漏洞使人能够访问一组密钥,从而使人能够以特权身份访问服务。

经过全面调查,决定发放 15 万美元的赏金。已修复漏洞,并且没有发现任何滥用行为的证据。感谢一直以来为保障服务安全和用户安全所做的努力,期待未来再次合作。

再次感谢报告。期待未来收到更多的报告!

以及 5% 的耐心奖励:

感谢在调查此报告期间的耐心等待。由于距离提供重现漏洞所需的最后信息已过去 37 天,将额外奖励原支付金额的 5%。

时间线

  • 2026 年 3 月 21 日:已报道
  • 2026 年 3 月 23 日:已进行分类和缓解
  • 2026 年 4 月 29 日:奖励

距离首次发现 Meta 数据库已经过去了将近十年,那是一个平淡无奇的 IDOR,最终却登上了比利时国家新闻。十年后,站在台北的讲台上,讲述着这条始于开放 Grafana 数据库、最终延伸至 507 个私有代码库的链,感觉这不失为一个纪念周年的好方式。

来源:

https://sectricity.com/blog/misconfigured-grafana-507-private-meta-repos/?utm_source=bugbountydaily.com&utm_medium=referral

觉得本文内容对您有启发或帮助? 点个关注➕,获取更多深度分析与前沿资讯!

👉 往期精选

逻辑漏洞:邮箱注册 tips #11

一种利用 HTTP 重定向循环的新型 SSRF 技术

个人资料/配置页检查清单

【译】入侵谷歌支持系统:泄露数百万条客户记录(赏金 1.4 万美元)


免责声明:

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

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

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

本文转载自:漏洞集萃 Pwn1 Pwn1《从配置错误的 Grafana 到 507 私有元数据仓库错误:一个价值 15.7 万美元的漏洞》

评论:0   参与:  0