随着开发人员增加新功能、依赖项和抽象层,软件复杂度往往会不断增长。这种复杂性可能导致“不必要的可达性”,即代码存在于代码库中,但在标准部署中并非旨在供用户访问。Anthropic 研究人员认为,虽然发现和修复单个漏洞是标准的安全实践,但由于它未能解决未知漏洞的潜在风险,因此难以大规模扩展。相反,他们提出了“攻击面减少”,这涉及识别并限制对不需要暴露的代码的访问,从而在发现特定漏洞之前就降低潜在漏洞利用的严重程度。

这张图片代表了研究团队在识别和缓解开源项目漏洞方面的努力。
为了测试这一方法,Anthropic 让 Claude 处理了 25 个开源项目,涵盖了 C、C++、Java、PHP 和 Python 等语言,总计超过 500 万行代码。该模型识别出了 493 个问题,分布在三个主要类别中:暴露非预期代码的默认配置、静默禁用安全控制的配置交互,以及敏感代码在身份验证或协议状态转换之前执行的“早期可达性”。例如,Claude 识别出了 162 种在无警告情况下被接受的安全敏感配置组合;其中在 94 种情况下,该组合完全静默地关闭了一个安全控制。在另一个实例中,Claude 发现了一个配置缺陷,即由于服务器在禁用 DNS 查询时会将主机名模式与纯文本 IP 地址进行比较,导致拒绝规则“失败并开放”。
该研究突出了在 OpenSSH 中的重大实际应用,OpenSSH 是一个经过广泛审计的用于安全远程访问的 C 代码库。Claude 识别出大约 4,500 行实验性的后量子签名算法代码(ML-DSA-44),在默认配置下,即使管理员明确排除了该算法,未授权客户端仍可访问这些代码。Anthropic 将这些发现报告给 OpenSSH 开发人员,导致在 10.5 和 10.6 版本中发布了补丁。这些更新将检查移动到解析阶段之前,有效地移除了先前未授权客户端可达的约五分之一的代码。研究人员指出,如果此类漏洞在像 OpenSSH 这样经过高度审计的代码中仍然存在,那么它们很可能也存在于受审查较少的软件中,这使得自动化攻击面减少成为一种高杠杆的防御策略。