跳至主要内容

机密泄漏风险

提交到仓库的 API 密钥、密码和令牌等机密可能被未授权用户利用,对组织造成安全、合规和财务风险。

什么是机密?

机密是允许访问敏感系统和数据的凭证。常见示例包括

  • 用于与外部服务进行身份验证的 API 密钥和令牌
  • 数据库密码和连接字符串
  • 云供应商凭证和服务账户令牌
  • 证书和加密密钥

当机密被提交到仓库时,它们会成为 硬编码凭证,直接嵌入到源代码或配置文件中。这些硬编码的机密会成为 Git 历史的一部分,即使在最新提交中删除,它们仍然可以被访问。这意味着解决凭证泄露不仅需要删除文件,还必须撤销并更换凭证,以防止未授权访问。

机密是如何被曝光的

机密蔓延指的是凭证在没有集中管理或可视化的情况下在多个仓库、团队和系统中扩散。这使得难以追踪哪些机密存在、它们的使用位置以及是否已被曝光。机密通常通过以下几种常见模式进入仓库。

开发工作流

  • 在本地测试期间添加的硬编码凭证,意外提交
  • 配置文件中的机密,例如 .env 文件或基础设施即代码模板
  • 在文档、维基或 README 文件中包含真实 API 密钥或令牌的示例凭证

仓库管理

  • 包含被遗忘但仍然有效凭证的旧仓库
  • 在 GitHub Issue、Pull Request 评论、讨论或 Gist 中共享的机密
  • 外部贡献者或承包商引入的凭证

版本控制传播

  • 即使在当前代码中移除,机密仍会保留在 Git 历史中。
  • 凭证会传播到分叉仓库、备份系统和 CI/CD 日志中。
  • 公开仓库中泄露的机密会被搜索引擎和专业扫描服务索引。

安全风险

泄露的机密可能导致多种安全事件。

未授权访问

凭证泄露使未授权用户直接访问您的系统。泄露后,硬编码的机密可被利用来

  • 利用泄露的云供应商凭证在您的账户上配置基础设施或服务
  • 通过被泄露的数据库凭证访问敏感的客户或组织数据
  • 通过泄露的服务账户令牌进入生产系统

数据泄露

凭证泄露使未授权用户直接访问您的系统,导致数据泄露。攻击者通过曝光的凭证获取访问权限后,可能会窃取敏感数据、修改或删除关键信息,并破坏客户信任。数据泄露需要立即进行事件响应,包括撤销凭证、系统修复以及评估泄露的范围和影响。

供应链攻击

泄露的包仓库令牌可用于发布恶意版本的软件,影响依赖您包的下游用户和组织。

财务影响

泄露的机密会以多种方式给组织带来费用。

  • 意外的云账单:泄露的 API 密钥让攻击者使用您的云资源。他们可以在您的账户上运行计算实例、存储数据或进行加密货币挖矿,从而产生巨额账单。
  • 事件响应:调查泄露、轮换凭证以及审计系统需要大量的工程时间和资源。
  • 法律费用:数据泄露可能导致罚款、法律费用和通知费用。
  • 长期损害:安全事件公开后,失去客户、保险费用上升以及错失业务机会。

使用 GitHub 的机密安全

GitHub 提供工具帮助您防止、检测并修复机密泄露

1. 防止新的机密被提交

启用 Push protection(推送保护),在 git push 操作期间扫描代码,阻止包含检测到的机密的提交进入仓库。此功能可防止硬编码凭证被添加到代码库,并在风险点向开发者提供实时反馈,覆盖已知服务的提供商模式以及私钥和通用 API 密钥等非提供商模式。

鼓励各位开发者在个人账号上启用推送保护,以保护他们在 GitHub 上的所有推送,无论组织政策如何。这有助于通过在泄露的凭证到达仓库之前捕获它们,防止机密蔓延。

2. 检测已存在的机密

使用 secret scanning(机密扫描)持续监控仓库中的硬编码机密,并在检测到凭证时生成警报,使您能够快速撤销并轮换受损凭证。除了默认的提供商模式检测外,您还可以将扫描扩展到非提供商模式,并为组织特定的机密定义自定义模式。这有助于您了解组织内部机密蔓延的全貌。

后续步骤

保护组织免受机密泄露

  1. 运行免费机密风险评估以了解您当前的曝光情况。运行安全风险评估

  2. 启用推送保护,以防止新的机密被提交。

  3. 启用机密扫描,开始检测已存在的机密泄漏。

  4. 为开发团队建立安全的凭证管理实践。

欲了解 GitHub 机密安全功能概览,请参阅 关于使用 GitHub 的机密安全

© . This site is unofficial and not affiliated with GitHub, Inc.