研究发现,GitHub 的“oops commits”中包含了数千条已泄露的秘密信息h

B站影视 电影资讯 2025-09-17 15:35 5

摘要:安全研究员 Sharon Brizinov 与 Truffle Security 合作,对 GitHub 的“oops commits”进行了全面调查,这类提交指的是通过强制推送或已删除但仍被存档的提交,他们揭露了数千条遗留的秘密信息,包括高价值的令牌和管理员

作者 | Craig Risi

译者 | 张卫滨

安全研究员 Sharon Brizinov 与 Truffle Security 合作,对 GitHub 的“oops commits”进行了全面调查,这类提交指的是通过强制推送或已删除但仍被存档的提交,他们揭露了数千条遗留的秘密信息,包括高价值的令牌和管理员级别的凭证。团队还发布了一个开源工具,帮助其他人扫描他们自己的仓库,以发现此类隐藏的秘密泄露。

GitHub 会保留每一个公共提交,即使是开发者试图通过强制推送来擦除的提交,也会作为其存档中的“零提交” PushEvents。Brizinov 使用来自 GitHub Archive 的数据,扫描自 2020 年以来的所有这类提交,发现了价值大约 25,000 美元漏洞赏金的秘密信息,尤其是暴露了可能导致广泛供应链攻击的 GitHub PATs 和 AWS 凭证。

为了强化社区的力量,Truffle Security 和 Brizinov 共同开发了 Force Push Scanner,这是一个开源工具,可以识别并扫描 GitHub 组织或用户账户中的孤立提交。它使用 BigQuery 挖掘 GH Archive 数据集,并应用 TruffleHog 扫描来发现隐藏的秘密和漏洞。

调查结果令人震惊:在.env 和常见配置文件中发现了大量活跃的秘密信息,如 MongoDB 凭证和 API 令牌。其中有一个特别令人担忧的案例涉及具有对 Istio 仓库管理员权限的 GitHub 个人访问令牌,这可能导致供应链的重大影响,尽管在负责任的披露后,该令牌已被迅速撤销了。

社区反应展现出了更广泛的影响:开发者和安全专业人士指出,计划删除的提交通常仍然可以访问。一位用户评论 说,“一旦提交离开你的机器,就没有一种可行的方法可以删除提交……你必须假设它被永久暴露了”,这凸显了假定删除可以实现所带来的风险。

这项研究挑战了强制推送的 Git 历史是私有的观念。任何提交的秘密信息,即使是无意中提交的,也应该被视为已泄露,并应立即撤销。Truffle Security 的 Force Push Scanner 新增了检测先前提交中持续存在的漏洞的工具,以免它们造成广泛的损害。

为了防止秘密信息泄露,开发者应该优先使用秘密管理工具和环境变量,而不是硬编码凭证。在像 HashiCorp Vault、AWS Secrets Manager 或 Azure Key Vault 这样的安全平台上存储秘密信息,确保敏感数据永远不会进入代码库,同时提供对访问的集中控制。除此之外,在多个阶段强制进行秘密信息扫描,包括本地的预提交钩子和 CI/CD 流水线,这也是至关重要的。像 TruffleHog、Gitleaks 或 Detect Secrets 这样的工具可以及早发现暴露的凭证,定期的历史扫描有助于发现隐藏在旧提交中的秘密信息。

当秘密信息暴露时,就应该将其视为已泄露。通过自动化流程或动态秘密系统立即撤销和轮换凭证,此举可以最小化风险窗口。这应该与严格的访问控制相结合,遵循最小权限原则,确保开发者和服务只访问他们真正需要的凭证。此外,启用 GitHub 的推送保护可以防止秘密信息被提交,而像 git filter-repo 这样的历史清理工具可以在政策允许的情况下谨慎使用。

除了工具和自动化之外,建立强大的安全文化至关重要。团队应该接受培训,认识到提交秘密信息的风险,并采用安全处理实践,如安全存储、定期扫描和密钥轮换。结合技术保障和文化变革,团队可以显著降低秘密暴露的风险,并将安全编码实践作为工作流程的默认组成部分。

原文链接:

Researcher Unearths Thousands of Leaked Secrets in GitHub’s “Oops Commits”(https://www.infoq.com/news/2025/09/github-leaked-secrets/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

来源:InfoQ

相关推荐