Anthropic 发布研究文章,介绍用 Claude 分析并缩减软件攻击面的初步结果。据发布方统计,Claude 在 25 个开源项目中发现了 493 个问题;其中,针对 OpenSSH 的修复已随 10.6 版发布,使默认构建中未认证客户端可触达的 OpenSSH 代码减少约五分之一。
这项研究关注外部输入能够触达哪些代码,再为部署中不需要暴露的部分增加限制。Anthropic 将分析分为三个方向:默认配置下可触达、却不被预期功能使用的代码;组合后会削弱安全控制的配置项;以及在认证等安全检查之前就会运行的复杂敏感代码。
据 Anthropic 披露,研究覆盖超过 500 万行代码,涉及 C、C++、Java、PHP 和 Python。Claude 整理了超过 17,000 个配置项,其中 3,842 个与安全相关。
在 11 个面向已认证用户的项目中,Claude 全部发现了非预期可达的代码,包括 93 处默认配置下不必要的认证前攻击面、37 处在认证前执行代码或记录状态的位置,以及 61 个会削弱管理员所设认证前控制的配置组合。Anthropic 强调,这些问题单独都不能立即被利用,但扩大了攻击面。
跨所有项目类型,Claude 发现了 162 个涉及安全的配置组合:系统接受它们时不报错、不警告,文档也未说明组合后的预期行为。其中,94 个会悄悄关闭安全控制,另外 68 个涉及同一安全机制内的不一致。
四个互不相关的项目还出现了相同模式:管理员用主机名或通配符设置访问规则,但反向 DNS 查询关闭时,服务器只有客户端 IP,主机名规则无法匹配,拒绝名单因此失效放行。
据 Anthropic 报告,Claude 追踪 OpenSSH 10.4 的 sshd 输入路径时,发现约 4,500 行新增的实验性 ML-DSA-44 后量子签名算法代码,在默认配置下可被未认证客户端触达,约占 OpenSSH 自身认证前代码的 16%。该算法默认未启用,但程序先解析客户端提交的密钥,再检查其类型是否被允许。
Anthropic 提交报告和补丁后,OpenSSH 10.5 将检查移到解析之前。Claude 随后发现两处缺口:客户端声明的算法名可以与密钥内嵌类型不同;证书内嵌的 CA 公钥也会在查询配置前被反序列化并完成签名验证。
最终修复把检查放进解析器内部,在反序列化或签名验证前核对允许列表。Anthropic 称,被移出认证前可达范围的代码几乎全是新增的 ML-DSA 代码。
Anthropic 已将上述方法整合为可复用的 Claude skill,正在将其集成进 OSS-Scanner。该 skill 分三遍分析代码,每遍从空上下文开始,仅接收上一遍的少量摘要。