代码仓库里藏着多少秘密?Gitleaks 敏感信息泄露排查实战
原创
小C学安全
小C学安全
FreeSec安全实验室
2026年10月19日 10:24
重庆
去阅读
一段代码提交、一份调试配置、一个被遗忘的.env文件,都可能让敏感信息暴露在代码仓库中。
常见风险包括云平台 Access Key、数据库密码、API Token、JWT 签名密钥、SSH 私钥,以及写在代码里的内部接口地址。
更麻烦的是:即使开发者后来删除了敏感内容,它也可能仍然存在于 Git 历史记录中。
这篇文章从检测对象、自动化扫描到泄露处置,介绍一套适用于自有项目和已获授权代码仓库的排查流程。
一、重点检查哪些敏感信息?
| 检测对象 | 常见位置或形式 | | --- | --- | | 云平台凭证 | Access Key、Secret Key、云服务 Token | | 身份认证信息 | Authorization、Bearer、JWT 密钥 | | 数据库凭证 | 数据库连接串、用户名和密码 | | 私钥文件 | SSH 私钥、PEM、RSA 私钥 | | 应用密钥 | api_key、client_secret、appSecret | | 内部资产信息 | 内网 IP、管理后台地址、内部 API | | 配置与日志 | .env、配置文件、调试日志、备份文件 |
需要注意:发现疑似敏感字符串,不等于已经确认凭证泄露。 内部地址、公开测试密钥和脱敏示例也可能触发规则,必须结合上下文判断。
二、实战:使用 Gitleaks 扫描代码仓库
Gitleaks 是一款开源敏感信息检测工具,可用于检查工作目录及 Git 历史中的疑似凭证。
先进入自己有权检查的项目目录。
- 扫描当前代码目录
gitleaks dir . --report-format json --report-path gitleaks-report.json
适合检查当前工作目录中的文件。
- 扫描 Git 历史
gitleaks git . --report-format json --report-path git-history-report.json
适合排查已经提交到 Git 历史中的疑似敏感信息。
- 查看帮助,确认本机版本参数
gitleaks versiongitleaks dir --helpgitleaks git --help
不同版本的命令选项可能存在差异,运行前应核对当前版本文档。
三、扫描结果如何判断?
建议按照以下流程逐条复核:
- 看上下文: 检查命中内容是否位于示例、测试数据或真实配置中。
- 看凭证类型: 判断它是密钥、令牌、私钥,还是普通标识符。
- 看有效性: 通过凭证所属平台的官方控制台或安全接口确认状态,不要将密钥发送到不可信的在线检测网站。
- 看暴露范围: 判断是否提交到远程仓库、是否公开可访问、是否被其他分支或提交保留。
- 看实际权限: 由授权管理员核实凭证具备的权限及可能影响的资源。
例如,代码中出现 api_key=\"YOUR_API_KEY\",可能只是占位符;而配置文件中的真实生产凭证,则应按潜在泄露事件处理。
不要为了验证凭证是否有效,就直接使用它访问生产数据。
四、发现真实凭证泄露,应该怎么办?
建议按照以下顺序处置:
第一步:立即吊销或轮换凭证
通过对应平台的官方控制台禁用泄露凭证,重新生成密钥,并更新合法使用该凭证的服务。
第二步:检查异常使用记录
查看登录、API 调用、资源访问和权限变更日志,评估是否存在未授权访问。
第三步:排查 Git 历史和远程副本
检查相关提交、分支、标签及远程仓库,评估其他副本是否仍然保留敏感内容。
第四步:修复并复测
清理代码中的硬编码凭证,改用环境变量或密钥管理服务,重新扫描并记录处置结果。
五、删除代码,不代表删除了泄露
Git 保存的是提交历史。即使当前文件已经删除密钥,旧提交中仍可能保留它。
可先查看最近提交记录:
git log --oneline --all
查看某个文件的历史:
git log --all -- path/to/config.env
如果确认需要清理历史,应先备份仓库,并与仓库管理员制定方案。可使用 git filter-repo 重写历史,但这可能影响提交哈希、分支和协作人员的本地副本。
关键提醒:重写 Git 历史不能替代凭证吊销。 已经被复制、缓存或下载的内容,未必能随着历史清理而消失。
六、建立长期防护机制
- 使用
.gitignore排除.env、私钥和本地配置文件。 - 在提交前集成 Gitleaks 等扫描工具。
- 在 CI/CD 流水线中增加敏感信息检测。
- 生产凭证使用独立权限、定期轮换和集中管理。
- 对误报进行有依据的复核,不要简单关闭所有告警。
- 对公开仓库持续监测新提交,并为疑似真实泄露设置告警。
七、工具获取
公众号回复“20261019”
欢迎在评论区分享你的经验。
关注 FreeSec 安全实验室,持续分享网络安全工具、技术实战与防护思路。
扫码关注
-END-
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论