Gitleaks Git 密钥扫描器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/git-secret-scanner-gitleaks 到 AI 助手。
技能介绍
解决的问题
Git 仓库一旦推送到远程,历史提交中的密钥就难以真正清除。.git 目录保存着每次 commit 的快照,即使删除当前文件中的密钥,git log 仍能还原旧版本。攻击者通过爬取公开仓库历史来窃取凭证的成本极低,而从 git blame 中找出 AKIA... 开头的 AWS Access Key、硬编码的数据库连接字符串、PEM 私钥片段是常见攻击路径。这类泄露往往在数月后才被发现,此时密钥可能已用于横向渗透或数据外传。
工作原理
该技能以 Gitleaks 为主引擎,结合 TruffleHog 与自定义正则规则,对仓库的完整 commit 历史执行扫描。Gitleaks 基于熵值检测和规则集匹配,能识别高熵字符串(如随机生成的 token)以及已知凭据格式;TruffleHog 侧重于从历史提交中提取并验证凭证是否仍然有效;自定义正则则用于补充内部密钥格式或业务特定的敏感字段。
扫描时,工具会遍历每条 commit 的 diff,提取新增行中的疑似密钥,输出命中的文件路径、commit 哈希和规则编号,便于开发者定位泄露来源并决定轮换策略。
适用边界与注意点
- 不能替代前置防护:仓库内出现密钥说明开发流程存在缺口,扫描是事后补救,应在 CI 中集成
pre-commit钩子做入库前拦截。 - 历史越长成本越高:大型仓库执行全历史扫描耗时显著,可按需限制扫描范围或使用浅克隆(shallow clone)做定向排查。
- 规则覆盖有限:未收录的自定义密钥格式需要编写正则补充,否则可能漏报。
- 误报需要人工确认:熵值检测对随机字符串敏感,测试数据或占位符可能产生噪音,需结合上下文判断是否真正轮换。
使用场景
- 发现仓库中曾存在 AWS Access Key,需要定位泄露的具体 commit 并评估影响范围
- 发布新开源库前,排查示例代码或测试夹具中是否误传了 PEM 私钥
- 仓库曾被外部人员克隆,需全量检查数据库连接字符串是否出现在历史提交中
- 团队引入自定义 token 格式,需要编写正则规则并扫描公开仓库历史中是否已有泄露
适合人员
- 负责老代码库安全审计的后端工程师,需要定位历史提交中的密钥泄露来源
- 开源项目维护者,在发布新仓库前确认没有凭证随示例代码一并推入远程
- 处理凭证泄露事件的 SRE,需要快速确认是哪些 commit 引入了可复用的密钥
- 平台工程师,需要为内部专用 token 格式编写检测规则并纳入 CI 扫描