SAP Credential Digger:机器学习如何将GitHub密钥扫描的误报率削减92%

GitHub May 2026
⭐ 363
来源:GitHub归档:May 2026
SAP开源了Credential Digger,一款结合正则表达式与机器学习分类器的GitHub扫描工具,能大幅降低硬编码凭据检测中的误报率。这一企业级方案有望重塑DevSecOps团队处理秘密泄露防护的方式。

SAP正式发布了Credential Digger,这是一款专门的开源工具,用于扫描GitHub仓库中的硬编码凭据——包括密码、API密钥、令牌及其他秘密信息。其核心创新在于引入机器学习模型,过滤掉传统正则扫描器所产生的大量误报。该工具在GitHub上已获得超过360颗星,直击DevSecOps领域的关键痛点:信噪比问题。安全工程师手动审查TruffleHog或Gitleaks等工具产生的告警,往往耗费数小时,而在许多生产环境中,误报率超过90%。Credential Digger采用混合方法:首先通过一组精心调校的正则表达式识别潜在秘密,然后将每个候选结果送入轻量级机器学习模型进行二次判定。

技术深度解析

Credential Digger的架构是一个两阶段流水线。第一阶段使用50多个手工编写的正则表达式模式,匹配常见的凭据格式:AWS密钥(`AKIA[0-9A-Z]{16}`)、GitHub令牌(`ghp_[0-9a-zA-Z]{36}`)、通用密码、私钥(`-----BEGIN RSA PRIVATE KEY-----`)以及数据库连接字符串。这些模式存储在YAML配置文件中,易于扩展。第二阶段是创新所在:每个正则匹配结果被向量化为一组包含30多个数值和分类特征的特征集,包括:
- 匹配字符串的长度
- 字符熵(字符分布的香农熵)
- 周围注释的存在性(例如,`// password = ` 与 `// placeholder = `)
- 与已知变量名的接近程度(例如,`password`、`secret`、`token` 与 `example`、`test`、`placeholder`)
- 文件扩展名和仓库语言
- 大写/小写/数字/特殊字符的比例
- 包含赋值运算符的周围行数

这些特征被送入一个包含100个估计器的随机森林分类器,该分类器基于约50,000个来自公共GitHub仓库的标注样本进行训练。SAP工程师通过手动验证数千个仓库中的随机正则匹配样本,将每个样本标记为真实凭据或误报(例如,示例代码、文档、测试夹具),从而构建了该数据集。模型输出0到1之间的概率分数;默认阈值为0.7,用于标记告警。

性能基准测试(来自SAP发布的评估):

| 指标 | 仅正则表达式 | 正则+ML(阈值0.7) | 改进幅度 |
|---|---|---|---|
| 精确率 | 12.3% | 87.1% | +74.8个百分点 |
| 召回率 | 93.5% | 91.2% | -2.3个百分点 |
| F1分数 | 21.8% | 89.1% | +67.3个百分点 |
| 每1000次提交的误报数 | 342 | 28 | -91.8% |
| 吞吐量(提交/分钟) | 120 | 95 | -20.8% |

数据要点: ML过滤器将误报率降低了近92%,同时仅牺牲了2.3个百分点的召回率。吞吐量下降对于大多数CI/CD流水线来说是可以接受的,并且如果需要更高的召回率,可以对模型进行调整。

该工具使用Python实现,采用SQLite后端存储扫描结果,并提供轻量级REST API用于集成。GitHub仓库(`SAP/credential-digger`)拥有363颗星,并得到积极维护,最新版本(v4.2.0)增加了对增量扫描拉取请求差异的支持。扫描器可以作为Docker容器部署,也可以通过pip安装。对于CI/CD,它提供了一个GitHub Action,可以自动扫描每次推送和拉取请求,并将结果发布为检查注释。

关键参与者与案例研究

Credential Digger进入了一个竞争激烈的秘密扫描工具市场。主要竞争对手包括:

- TruffleHog(开源,由Dylan Ayrey开发):使用基于熵的检测和正则表达式。最近通过一个名为“TruffleHog Enterprise”的独立项目增加了基于ML的后处理。在GitHub上拥有超过15,000颗星。
- Gitleaks(开源,由Zachary Rice和社区维护):纯正则表达式,高度可配置,拥有超过18,000颗星。没有内置的ML过滤功能。
- GitGuardian(商业产品):提供带有ML误报减少功能的SaaS平台,支持多个Git提供商,并为公共仓库提供免费层。在企业中广泛使用。
- GitHub Secret Scanning(内置于公共仓库和GitHub Enterprise):使用合作伙伴模式和一些启发式方法,但自定义模式的误报率较高。

对比表格:

| 特性 | Credential Digger | TruffleHog | Gitleaks | GitGuardian |
|---|---|---|---|---|
| ML误报过滤器 | 是(随机森林) | 是(仅企业版) | 否 | 是(专有) |
| 支持的Git平台 | 仅GitHub | GitHub、GitLab、Bitbucket、本地 | GitHub、GitLab、Bitbucket、本地 | GitHub、GitLab、Bitbucket、Azure DevOps |
| 开源许可证 | Apache 2.0 | Apache 2.0 | MIT | 专有(免费层) |
| CI/CD集成 | GitHub Action | GitHub Action、GitLab CI、Jenkins | GitHub Action、GitLab CI、pre-commit | 原生集成 |
| 自定义规则 | 基于YAML的正则 | 自定义正则和熵 | 基于TOML的规则 | 基于GUI的自定义检测器 |
| 企业功能 | 无 | 付费层 | 无 | 完整SaaS,含仪表盘、RBAC |
| GitHub星数 | 363 | 15,000+ | 18,000+ | 不适用(私有) |

数据要点: Credential Digger是唯一一款完全开源且内置ML误报减少功能的工具。然而,其平台限制仅支持GitHub,对于多平台组织来说是一个重大劣势。TruffleHog和Gitleaks拥有更大的社区和更广泛的平台支持,但在其免费版本中缺乏集成的ML过滤功能。

一个值得注意的案例研究来自SAP的内部部署:SAP云平台安全团队将Credential Digger集成到其CI/CD流水线中,覆盖500多个内部仓库。在六个月内,他们扫描了230万次提交,识别出1,847个真实凭据。

更多来自 GitHub

Draw.io:悄然取代Visio的开源图表工具,凭什么?由JGraph维护的开源图表工具Draw.io,已悄然成为全球使用最广泛的图表应用之一。与专有竞品不同,Draw.io是一款纯JavaScript、客户端运行的编辑器,无需后端服务器,支持离线使用,并与GitHub、OneDrive、GooNext AI Draw IO:自然语言如何重塑图表工具开源项目 'dayuanjiang/next-ai-draw-io' 在 GitHub 上迅速走红,已累计获得超过 29,000 颗星,日均增长超过 2,300 颗。这款基于 Next.js 的 Web 应用将 AI 能力直接集成到 draLitestream:流式复制如何将SQLite打造成生产级数据库由 Ben Johnson 创建的 Litestream,已成为开发者基础设施中的关键一环——他们渴望 SQLite 的简洁性,却不愿牺牲数据持久性。该工具通过持续追踪 SQLite 的预写日志(WAL),将增量变更流式传输至任何兼容 S3查看来源专题页GitHub 已收录 1832 篇文章

时间归档

May 20261588 篇已发布文章

延伸阅读

Draw.io:悄然取代Visio的开源图表工具,凭什么?来自JGraph的开源图表编辑器Draw.io,GitHub星标已突破53,000,正成为技术图表绘制的默认选择。AINews深入剖析其架构设计、生态集成与市场博弈,揭示这款纯JavaScript客户端编辑器如何成为微软Visio的十亿美元Next AI Draw IO:自然语言如何重塑图表工具一款名为 next-ai-draw-io 的开源项目正架起自然语言与技术图表之间的桥梁。它通过 Next.js 将 AI 直接嵌入 draw.io 编辑器,让用户仅凭简单文本指令即可生成和修改图表,有望大幅降低非专业用户的图表创作门槛。Litestream:流式复制如何将SQLite打造成生产级数据库Litestream 是一款开源工具,能将 SQLite 数据库变更实时流式传输至 S3 等对象存储,实现近乎实时的灾难恢复,且无需修改应用代码。它填补了 SQLite 单写入者模式下的可靠性短板,使其在边缘计算、嵌入式系统及小型 Web LiteFS on Fly.io:颠覆边缘计算的数据库革命Fly.io 正式发布官方 LiteFS 部署示例,宣称能将 SQLite 从单节点嵌入式数据库,转变为全球分布式、高可用的系统。本文深度剖析其架构、实测性能,并预测它将如何重塑边缘计算格局。

常见问题

GitHub 热点“SAP Credential Digger: How Machine Learning Slashes False Positives in GitHub Secret Scanning”主要讲了什么?

SAP has released Credential Digger, a specialized open-source tool designed to scan GitHub repositories for hardcoded credentials—passwords, API keys, tokens, and other secrets—whi…

这个 GitHub 项目在“SAP Credential Digger vs TruffleHog false positive rate comparison”上为什么会引发关注?

Credential Digger's architecture is a two-stage pipeline. Stage one uses a set of 50+ handcrafted regex patterns designed to match common credential formats: AWS keys (AKIA[0-9A-Z]{16}), GitHub tokens (ghp_[0-9a-zA-Z]{36…

从“how to train custom ML model for Credential Digger”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 363,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。