用途
secret-leak-detector 旨在保护代码仓库,通过识别硬编码的敏感信息(如 API 密钥、数据库凭据和认证令牌),在提交前或意外推送至历史记录后发现问题。
主要能力
- 扫描源代码和配置文件中的硬编码凭据、API 密钥和令牌。
- 支持扫描 git 历史记录(通过 scan_history: true),可发现已删除但仍存在于 git 日志中的密钥。
- 输出泄漏列表,包含文件路径、行号、密钥类型、风险等级和掩码后的片段(如 sk_live_**********)。
- 输入参数包括:directory_path(目标目录路径)和 scan_history(是否扫描历史记录)。
使用方式
何时使用
- 预提交检查:在提交更改前运行此技能,确保没有引入密钥。
- CI/CD 流水线:集成到自动化流水线中,阻止包含明文密钥的构建。
- 遗留审计:配合 scan_history: true 对项目完整历史进行深度审计,查找已删除但仍在 git 日志中的密钥。
输入输出示例
输入:
directory_path: "./config"
scan_history: false
输出:
{
"leaks": [
{
"file": "config/production.yaml",
"line": 45,
"type": "Stripe Secret Key",
"risk_level": "critical",
"snippet": "sk_live_**********"
}
]
}
适用场景
- 代码仓库提交前的密钥检查。
- CI/CD 自动化流水线中的安全门禁。
- 对历史提交进行深度审计,发现遗留密钥。
限制与注意事项
不适用场景
- 生产日志:该工具面向源代码和配置文件,未针对扫描 TB 级运行时日志进行优化。
- 二进制文件:无法有效检测编译后的二进制文件或加密数据块中的密钥。
错误条件与边界情况
- 误报:测试数据或加密哈希中的高熵字符串可能被标记为密钥。
- 需要 git 仓库:若 scan_history 为 true,目标目录必须是有效的 git 仓库。
- 权限拒绝:若缺少对特定文件或 .git 目录的读取权限,技能将失败。
安全与数据处理
- 无持久化:该技能不存储发现的密钥。
- 掩码处理:输出片段经过掩码,防止工具本身成为日志或终端历史中的泄漏源。
- 本地执行:技能在本地运行,不回传数据,也不将代码上传至第三方服务。