Github存在本地Git无记录的隐藏提交(安全泄漏)排查求助
排查GitHub仓库孤立敏感提交及黑客获取路径解析
一、找到其他可能存敏感信息的提交
1. 拉取完整仓库历史
如果本地是浅克隆,先执行git fetch --unshallow拉取所有历史记录。要是还找不到目标提交,直接用镜像克隆仓库:
git clone --mirror https://github.com/myorg/somerepo.git
镜像克隆会包含所有分支、标签甚至孤立提交,之后就能用git show 1abcdef查看目标提交。接着可以用关键词搜索所有提交里的敏感内容:
git log --all --grep="API密钥\|用户名\|密码" --oneline
替换关键词成你要找的敏感信息类型即可。
2. 用API遍历所有提交
GitHub的/commits接口默认只返回分支上的提交,但你可以在本地镜像仓库里生成所有提交的SHA列表:
git rev-list --all > all-commits.txt
之后批量用GitHub API查询每个提交的内容,或者用GraphQL API更高效地批量获取仓库所有提交(包括孤立节点),过滤日期和敏感关键词。
3. 检查关联的Fork仓库
既然提示提交可能来自Fork,先列出所有关联Fork:
gh api repos/myorg/somerepo/forks
逐个克隆这些Fork,检查它们的历史提交,看是否有类似的敏感信息泄漏。
4. 启用GitHub秘密扫描
如果仓库没开秘密扫描,赶紧开启——GitHub会自动扫描仓库所有历史提交(包括孤立的),检测内置规则里的敏感信息,比如AWS密钥、OAuth令牌等,扫描结果会直接在仓库的「Security」标签页里显示告警。
二、黑客怎么拿到这类孤立提交?
- GitHub缓存留存:即使提交被从分支移除,GitHub的服务器缓存可能还会保留一段时间,只要知道SHA就能直接访问。
- Fork仓库的历史:原提交如果来自某个Fork,那个Fork可能没清理历史,黑客克隆Fork就能拿到完整提交记录。
- 第三方镜像/归档:有些第三方服务会定期镜像GitHub仓库,这些镜像可能保存了旧的孤立提交,黑客可以从这些渠道获取。
- 已泄露的仓库副本:如果仓库曾经公开过完整历史,哪怕后来设置成私有或清理了历史,可能已经被其他人克隆保存,黑客通过这些副本就能找到孤立提交。
内容的提问来源于stack exchange,提问作者Eric Darchis
相关产品推荐
相关产品推荐

