如何快速发现泄露的凭证:TruffleHog 凭证检测 3 个高频用法
2026/9/24 8:43:16 网站建设 项目流程

如何快速发现泄露的凭证:TruffleHog 凭证检测 3 个高频用法

【免费下载链接】trufflehogFind, verify, and analyze leaked credentials项目地址: https://gitcode.com/GitHub_Trending/tr/trufflehog

TruffleHog 是一款开源的凭证检测工具,内置 800 多种检测器,能扫描代码、仓库和云存储中的 API 密钥与密码,并逐一调用对应服务验证凭证是否真实有效,帮你在泄露酿成事故前把它揪出来。

某天 CI 突然红,才发现密钥早就进了仓库

想象这个场景:一个实习生把.env提交进了仓库,里面有一把 AWS Access Key。三个月后安全团队审计时才发现——而密钥可能早已被扫描器抓取并滥用。更麻烦的是,即使后来删掉了那行代码,只要仓库没有 force push,历史提交里依然留着它。

git log -p人工翻历史、或者 grep 几个已知关键字,覆盖率低、误报高。这正是 TruffleHog 要解决的问题:自动遍历 Git 历史(包括已删除提交),用 800 多个检测器识别密钥类型,再向对应服务的 API 发起验证请求,告诉你这把 key 是"还活着"还是"已失效"。

它是什么:先分类,再验证

TruffleHog 的定位是凭证的发现、分类、验证、分析一体化扫描器。和只做正则匹配的工具不同,它的核心价值在"验证"这一步:

  • 发现:扫描 Git 仓库、GitHub/GitLab 组织、文件系统、S3/GCS 存储桶、Docker 镜像、stdin 等 18 类数据源
  • 分类:内置 800+ 检测器(AWS、Stripe、GitHub token、私钥、JWT 等),自动识别密钥类型
  • 验证:对识别出的凭证调用其所属服务 API 确认有效性,结果分verified/unverified/unknown三档
  • 分析:trufflehog analyze可对常见凭证进一步检查权限范围和可访问资源

从零到第一条扫描命令

macOS 用户一行装好:

brew install trufflehog

Linux/Windows 或从源码安装,克隆仓库后运行安装脚本:

git clone https://gitcode.com/GitHub_Trending/tr/trufflehog cd trufflehog && ./scripts/install.sh -b /usr/local/bin

第一条能跑通的命令——扫描一个 Git 仓库,只看验证过的结果:

trufflehog git https://github.com/trufflesecurity/test_keys --results=verified

输出会列出检测器类型(如AWS)、命中文件、行号、提交哈希和作者信息,Verified: true表示这把 key 确实还能用。

三个高频用法

用法一:扫描本地仓库和历史提交

在仓库外部的目录执行,本地仓库走file://协议:

trufflehog git file:///path/to/repo --results=verified,unknown

扫描时会克隆仓库到临时目录再分析,天然覆盖历史提交;想限定范围可加--since-commit <commit>--max-depth N。只想扫普通文件目录则用trufflehog filesystem <path>

用法二:接入 CI,卡住每次提交

配合官方 GitHub Action,每次 PR 和 push 到main时只扫描变更提交,发现活密钥即让流水线失败:

- uses: trufflesecurity/trufflehog@main with: extra_args: --results=verified,unknown --fail

--fail会让进程以退出码 183 结束,CI 据此拦截。不想用 Action 也可以直接在流水线里跑 CLI,参考 GitLab CI 示例;想在密钥离开本机前就拦下,可以看 pre-commit 钩子配置。

用法三:写自定义检测器补盲区

内置检测器覆盖不了的自研系统(比如内部网关 token),可以用自定义检测器:一个 YAML 定义正则 + 关键字,再配一个 webhook 做验证,用--config加载。仓库里有两个现成模板可直接改:

trufflehog git file://. --config examples/generic_config_secrets.yml

完整写法见 自定义检测器文档,examples/generic.yml 是带验证 webhook 的示例,examples/generic_config_secrets.yml 则专门用于标记.env.properties里的通用硬编码密码。

容易踩的坑

  • 只看到横幅就以为扫完了:输出只有🐷🔑🐷 TruffleHog. Unearth your secrets.说明没有命中,不是程序报错
  • 验证会消耗真实 API 调用--no-verification可关闭验证提速,但会失去"是否有效"的判断;内网服务可用--verifier指向自定义验证端点
  • 误报太多时用过滤参数--filter-entropy 3.0按香农熵过滤低质量未验证结果;扫描时已知误报可在源码行尾加trufflehog:ignore注释跳过
  • GitHub 组织扫描慢:未带 token 时受 API 限流,加--token(或设GITHUB_TOKEN)提速

常用命令速查

场景命令
扫描远程 Git 仓库trufflehog git <url> --results=verified
扫描本地仓库trufflehog git file://. --since-commit main
扫描文件/目录trufflehog filesystem <path>
扫描 S3 桶trufflehog s3 --bucket=<name>
扫描 Docker 镜像trufflehog docker --image <image:tag>
JSON 输出--json
发现结果即失败(CI 用)--fail(退出码 183)
指定并发数--concurrency N

更多子命令(s3gcssyslogpostmanmulti-scan等)参数可用trufflehog <cmd> --help查看。

凭证泄露往往不是"会不会发生"而是"何时被扫到"的问题。装上 TruffleHog,先给你的仓库跑一次--results=verified,看看历史提交里有没有还活着的 key 🐷

【免费下载链接】trufflehogFind, verify, and analyze leaked credentials项目地址: https://gitcode.com/GitHub_Trending/tr/trufflehog

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询