Betterleaks 密钥扫描器:架构和密钥
近年来,代码仓库中秘密信息的检测方式发生了显著变化。过去,只需在代码中查找可疑字符串或高熵密钥即可。而如今,情况已大不相同:代码仓库规模更大,持续集成/持续交付 (CI/CD) 流水线速度更快,尤其重要的是,越来越多的代码是由自动化工具或人工智能模型生成的。
这带来了一个实际后果:问题不再仅仅是发现秘密,而是要区分真正危险的事物和看似危险的事物。许多团队发现,这些扫描器的真正成本不在于运行分析,而在于审查数百个误报。

检测架构:Betterleaks 带来了哪些变化
Betterleaks正是在这种背景下应运而生。它并非试图彻底革新秘密扫描技术,而是挑战了一个广为流传的假设:仅仅检测模式就足够了。
在许多现代存储库中并非如此。
该项目由 Zach Rice 开发,并由 Aikido 提供支持,其方案略有不同。它并非仅仅关注匹配项的检测,而是在将其升级为警报之前,先验证结果是否合理。
这看似微不足道,却会显著改变大型团队的运作模式。当扫描系统生成过多无关警报时,团队的自然反应是忽略它们。而在安全领域,被忽略的警报可能比没有警报更糟糕。
为了解决这个问题,Betterleaks 引入了两个有趣的技术:使用 CEL(通用表达式语言)进行验证,以及基于 BPE 分词的名为“Token Efficiency”的指标。
其理念在于,并非所有看似秘密的信息都真的是秘密。一些高熵字符串仅仅是哈希值、标识符或自动生成的片段。该系统的目标就是减少这种噪声。
项目文档中提到,在 CredData 数据集上,BPE 分词的召回率达到了 98.6%,而使用熵分词的召回率仅为 70.4%。与任何基准测试一样,这些数据仅供参考。它们可以作为参考,但不能取代在真实代码库中进行的测试。

来源:GitHub
决定性因素
回顾项目的特点,可以发现一个明确的方向:在不增加太多技术复杂性的前提下,促进在真实环境中的部署。
其中最突出的要素包括:
- 使用 CEL(通用表达式语言)进行规则定义的验证
- 基于 BPE 分词而非熵的分词方法,在 CredData 数据集上实现了 98.6% 的召回率,而基于熵的召回率仅为 70.4%。
- 纯 Go 实现(不依赖 CGO 或 Hyperscan)
- 自动处理双重/三重编码密钥
- 扩展规则集,适用于更多提供商
- 并行 Git 扫描以加快代码库分析速度
虽然这份清单看起来只是一系列技术改进,但有趣的是它们如何影响日常使用。
例如,完全使用 Go 语言且不依赖任何原生库的实现,可以极大地简化与 CI/CD 流水线的集成。在许多团队中,正是这类小细节决定着一个工具最终能否被使用,还是会被遗忘在代码库中。
BPE代币化还引入了一种不同的方法。它并非简单地衡量链的随机性,而是分析代币模式,从而更准确地反映现代凭证的实际结构。
扫描仪发现目标时会发生什么?
当 Betterleaks 检测到潜在的秘密时,流程并不会就此结束。
首先,使用 CEL 中定义的规则评估上下文。这允许添加更多条件:例如,检查格式是否与预期提供程序匹配,或丢弃示例或虚构数据中经常出现的模式。
这一步骤看似微不足道,但却有着显著的实际影响。误报不仅浪费时间,还会降低团队对警报系统的信心。
另一个有趣的方面是自动处理多次编码的密钥。在某些存储库中,凭据似乎经过了 Base64 或其他编码方案的转换,这使得检测它们变得更加复杂。
即便如此,仍需记住一点,这一点有时会被忽略:任何扫描程序都无法完全取代人工审核。检测到秘密仅仅是开始;如何处理(撤销、轮换、忽略或调查)仍然取决于具体情况。
治理与以人为本的方法/人工智能
Betterleaks 采用 MIT 许可证发布,并包含来自加拿大皇家银行、红帽和亚马逊等组织的外部贡献。
该项目还试图适应现代代码库中日益明显的现实:开发人员编写的代码与自动化工具生成的代码混合在一起。
在此背景下,该工具旨在同时适用于人工操作的工作流程和审查整个存储库的自动化系统。这与日益增长的使用需求相一致。 自动化和工具 分析代码或生成自动审查报告的功能。
该路线图还包含一些有趣的想法:与……集成 除了 Git 之外的数据源通过提供商 API 提供语言模型辅助,以对调查结果进行分类并实现自动撤销机制。
这就引出了一个有趣的讨论。自动化凭证撤销可以缩短事件响应时间,但也意味着要依赖分类系统的准确性。
如果自动撤销失败或因误操作而触发,则可能对运营造成相当大的影响。
实际意义和局限性
从运营角度来看,Betterleaks 对希望减少误报和简化部署的团队很有吸引力。
但同时也要牢记一些限制:
- 召回率指标取决于所使用的数据集,并且在不同的存储库之间可能存在相当大的差异。
- 诸如密钥撤销之类的自动化操作需要额外的控制措施和审计日志。
- 秘密扫描仪只是更广泛防御战略中的一层防御措施。
在许多情况下,是否采用此类工具的决定,与其说是取决于其理论准确性,不如说是取决于一些更简单的因素:它是否能很好地融入团队的工作流程。
精度极高但摩擦力过大的扫描仪通常会被弃用,而精度尚可且易于集成的扫描仪通常会被保留。
从这个意义上讲,Betterleaks 试图在两者之间取得平衡。它并不承诺消除所有误报或取代现有的安全流程,但它的目标是减少干扰并促进与现代流程的集成。
该项目已在 GitHub 上开源。 它被视为 Gitleaks 方法的演进,旨在适应自动化、分析代理和语言模型生成的代码是开发流程常规组成部分的存储库。




















