GitHub · AI/ML 项目

提升秘密扫描可信度:大规模减少误报

Making secret scanning more trustworthy: Reducing false positives at scale

二〇二六年六月十一日 · 英文原文

GitHub与微软安全与AI的Agent Offense团队合作,为GitHub密钥扫描引入基于LLM的上下文验证,以减少误报。该方法通过提取值在代码中的使用上下文(如是否被传入API请求或认证头),而非分析整个文件,来区分真实密钥与误报。在数百个客户确认的误报警报上评估,误报减少75.76%,超过65%的目标,同时保持检测覆盖范围。

密钥扫描在保护开发者和组织方面发挥着关键作用。它能及早发现泄露的凭证,防止小错误演变成真实的安全事件。在GitHub的规模下,即使是微小的低效也会造成实际摩擦。过多的误报会让警报难以信任。当警报显得嘈杂时,开发者会花更多时间进行分类,而花更少时间修复真正的问题。久而久之,这会拖慢修复速度,并降低对系统的信心。为应对这一挑战,GitHub与微软安全与AI的Agent Offense团队合作,为GitHub的密钥扫描验证引入更多上下文推理。此次合作应用了Agentic Secret Finder的验证方法——这是一个更广泛的检测与验证系统,旨在理解潜在密钥的上下文,而不仅仅是判断它们是否匹配密钥模式。这帮助GitHub探索了减少低价值警报的方法,同时保留你期望从密钥扫描获得的覆盖范围。

今天的GitHub密钥扫描

GitHub密钥扫描结合了基于模式的检测和基于AI的检测来识别潜在密钥。基于模式的检测能捕获已知的密钥格式,例如令牌和API密钥的合作伙伴模式。AI驱动的通用密钥检测则扩展了覆盖范围,能识别不匹配已知提供商模式的非结构化密钥,如密码。GitHub已经在海量规模下实现了行业领先的提供商模式密钥检测精度,处理数十亿次推送,保护着数百万仓库中数千万开发者。随着GitHub扩展到AI驱动的密钥检测,下一个挑战是将AI检测到的密钥的精度提升到接近提供商模式检测的高标准。此次合作专注于将GitHub的大规模检测流水线与基于LLM的上下文验证相结合,以提高警报质量和开发者信任。

我们的方法:让密钥扫描警报值得信赖

当你能快速判断哪些警报需要处理时,密钥扫描最为有用。GitHub已有减少噪音的防护措施,但某些类似密钥的值需要更多上下文才能确定它们是否代表真实的泄露。为了让这些警报更值得信赖,我们在验证步骤中增加了更多推理。通过观察检测到的值在代码中如何出现,系统能更好地区分真实泄露和仅看起来敏感的值。这有助于你减少调查低价值警报的时间,将更多精力用于修复真正重要的问题。

候选密钥 > 验证LLM推理 > 高置信度警报。" class="wp-image-96622" srcset="https://github.blog/wp-content/uploads/2026/06/blog-post-1.png?w=1820 1820w, https://github.blog/wp-content/uploads/2026/06/blog-post-1.png?w=300 300w, https://github.blog/wp-content/uploads/2026/06/blog-post-1.png?w=768 768w, https://github.blog/wp-content/uploads/2026/06/blog-post-1.png?w=1024 1024w, https://github.blog/wp-content/uploads/2026/06/blog-post-1.png?w=1536 1536w" sizes="(max-width: 1000px) 100vw, 1000px" />

这在流水线中的位置

这种方法直接建立在现有系统之上。检测继续生成候选结果,验证步骤则对它们进行评估。更强的上下文感知能力使系统能更好地区分真实密钥和噪音。结果是精度更高,而无需更改上游检测逻辑或降低覆盖范围。

工作原理

验证的一个关键挑战是决定提供哪些上下文。一小段代码通常不足以判断某物是否为真实密钥。同时,传递整个文件或仓库会引入过多噪音,增加成本和延迟。我们不是提供更多上下文,而是提供更好的上下文。我们不发送大量代码,而是提取一小部分高信号信息,帮助解释该值是如何被使用的。例如,我们会查找值被赋值给变量,随后被传入API请求、认证头、数据库客户端或云SDK调用的情况。模式匹配可以告诉我们某个值看起来像密钥,但它无法判断该值是否真的被用作密钥。周围的用法上下文帮助模型区分真实泄露和误报(如随机UUID或不透明字符串),而无需审查整个文件或仓库。

聚焦上下文,而非更多数据

人们自然会认为提高准确性需要分析更多代码库。但事实恰恰相反。大多数误报可以通过聚焦的文件级上下文来解决。关键不在于模型看到多少代码,而在于它是否拥有正确的信号。在许多情况下,通过观察值在单个文件中的使用方式,就能判断它是否为真实密钥。那些像占位符、测试数据或未使用配置的值,通常无需深入分析即可过滤掉。这使得系统既有效又实用:高精度、低延迟,并且能够跨大型代码库扩展。

结果:在实践中减少误报

我们在数百个客户确认的误报警报上评估了这种方法。我们的目标是减少65%。实际结果是75.76%,超过了目标,同时保持了强大的检测性能。在实践中,这意味着噪音显著减少,需要处理的警报比例更高。

基于数百个客户确认的误报警报的误报减少结果。

这一改进直接体现在开发者体验上。无关警报减少后,更容易信任你所看到的内容。花在分类噪音上的时间减少,真正的问题可以更快地被优先处理和修复。

下一步计划

我们正在继续在更大的数据集和实时流量上评估这种方法,同时改进上下文提取和用于验证的方式。减少误报一直是大规模场景下的持续需求。这项工作专注于在最关键的地方提高信号质量,使警报更值得信赖、更易于处理。目标很简单:减少干扰,提供更清晰的信号,并更快地对真实风险采取行动。

立即开始为你的组织运行风险评估,或了解更多关于密钥扫描的信息。

本文《让密钥扫描更值得信赖:大规模减少误报》最初出现在GitHub博客上。

译自 GitHub · AI/ML 项目 · 录于 二〇二六年六月十一日