机密和凭据
机密是授予对敏感系统和数据的访问的凭据,包括 API 密钥、密码、身份验证令牌、证书和加密密钥。 将机密提交到存储库时,它们将成为 Git 历史记录的一部分,即使在从最新提交中删除后仍可访问这些机密。
可以通过自动扫描工具和未经授权的用户发现代码存储库中的机密。 公共存储库特别易受攻击,但来自专用存储库的泄露凭据也可以通过分支、CI/CD 日志或第三方集成进行传播。
公开的机密的安全影响
公开的机密可能导致多种类型的安全事件:
**未经授权的访问和使用情况**
-
泄露的云提供商凭据可用于在帐户上预配基础结构或服务
-
数据库凭据允许访问敏感客户或组织数据
-
服务帐户令牌提供生产系统的入口点
**操作和合规性问题** -
可以使用泄露的凭据修改或删除基础结构
-
由于机密信息泄露导致的数据泄露可能会在 GDPR、CCPA 和其他框架下引发监管处罚。
-
组织面临事件响应、凭据轮换和系统修正的成本
**组织风险** -
公开披露泄露的机密会影响客户信任和组织声誉
-
公开的包注册表令牌可用于发布软件的恶意版本
-
可能会利用专有 API 密钥或服务凭据
暴露的机密的财务影响
机密泄漏可能会导致组织的直接和间接成本,从直接支出到长期业务后果。
**直接成本**
-
来自泄露的 API 密钥的未经授权的云资源使用情况可能会为计算实例、存储或数据传输产生费用
-
对被入侵帐户进行加密挖掘操作可能会导致大量基础设施账单
-
紧急事件响应需要跨系统进行取证调查、安全审核和凭据轮换的资源
**数据泄露成本** -
根据 GDPR、CCPA 和行业特定的法规,数据保护违规的监管罚款可能达到数百万美元
-
法律成本包括调查、通知要求和潜在的诉讼
-
受影响的客户的信用监视和标识保护服务
**运营影响** -
因基础结构受损而导致服务中断导致收入和工作效率下降
-
响应安全事件所用的工程时间将资源从产品开发转移
-
在发生事件后增加了安全工具和监视成本
**长期业务影响** -
客户在公开披露安全事件后流失
-
增加网络责任保险保险费
-
由于安全评估或合规性审核失败,业务机会丢失
常见机密泄漏场景
机密通常通过几种常见模式进入存储库:
**开发工作流**
-
在本地测试期间硬编码并在无意中提交的凭证
-
配置文件中的机密(如
.env文件或基础结构即代码模板) -
包含文档、wiki 或 README 文件中真实令牌的示例凭据
**存储库管理** -
包含被遗忘但仍处于活动状态的凭据的旧存储库
-
GitHub 问题、拉取请求评论、讨论或 gists 中共享的机密
-
外部参与者或承包商引入的凭据
**版本控制挑战** -
即使在从当前代码中删除后,机密仍保留在 Git 历史记录中
-
凭据传播到分叉存储库、备份系统和日志
-
具有公开机密的公共存储库由搜索引擎和专用扫描服务编制索引
使用 GitHub 的秘密安全性
GitHub 提供了有助于防止、检测和修正机密泄漏的工具:
1. 防止泄露新机密
**为存储库启用推送保护**,以便在操作期间`git push`扫描代码,并阻止包含检测到的机密的提交。 这样可以防止凭据进入存储库,同时向开发人员提供实时反馈。
鼓励您的贡献者为他们的个人帐户启用推送保护(此功能称为“用户推送保护”),以保护他们所有推送到其存储库、派生库以及他们参与的 GitHub 上的所有存储库。 这样,单个开发人员就可以防止机密泄露,而无需等待组织级策略。
2.检测现有机密
使用 secret scanning 持续监测存储库中的提交机密,并在检测到凭据时接收警报。 这样,便可以快速撤销和轮换泄露的凭据。
后续步骤
保护组织免受机密泄露:
- 启用推送保护以防止提交新机密。
- 单击 secret scanning 以开始检测机密泄漏。
- 为开发团队建立安全凭据管理做法。