使用Claude减少代码的攻击面
克里斯·罗尔夫:在过去的一年里,我们发布了很多数据显示,前沿AI模型完全有能力发现和利用安全漏洞。然而,展示先前未知的漏洞如何被利用,仅仅是前沿AI模型在网络防御中所能做的一部分。在这篇文章中,我们总结了我们最初关于自动化攻击面分析和减少的研究:使用AI模型映射可到达代码的过程,然后移除或限制不必要的访问权限。自动化攻击面分析和减少可以在短期内显著提高已部署软件的安全性。仅仅通过发现和修复单一漏洞来保护软件,其效果往往不佳:修复一个关键漏洞并不能告诉你还剩下哪些漏洞。相比之下,减少代码的可达性可以降低未知漏洞的严重性,包括可能正在被主动利用的漏洞。这些技术并不能消除代码中的未知漏洞,但它们确实使漏洞更难以到达,从而降低了其严重性。最小化代码库的攻击面可以提高安全性,而无需找到或修复单个漏洞。以下,我们预览了一些我们通过使用Claude对大型开源代码库应用攻击面减少技术所收集的数据。我们这样做的目的是展示Claude可以通过我们概述的方法有意义并且经济地提高软件安全性。具体来说,我们对25个项目(涵盖多种语言)运行了Claude,发现了493个问题。考虑到这些结果,我们讨论了开发者如何将类似的技术应用到自己的代码中。减少代码库攻击面的方法:随着时间的推移,软件往往变得更加复杂,新层次的抽象、新的依赖关系和新功能逐渐层叠在一起。这常常导致软件的功能与其原始开发者的意图有很大不同。这也是攻击者往往如此成功的主要原因之一:他们研究的是一段代码在实践中的行为,而不是其开发者所设计或意图的工作方式。自动化攻击面分析和减少技术旨在发现不必要的攻击面,然后将代码移到适当的门后。这可能涉及将代码从预身份验证阶段移动到后身份验证阶段,从0点击移动到1点击,从默认开启移动到显式选择加入,或是将协议的第一条消息转移到会话状态机的更深层次。一些代码在这些阶段之前是应该可达的,但很多代码并不是,考虑到在数千行或数百万行代码中的复杂性,不必要的功能暴露常常被忽视。减少代码攻击面的方法有很多。在我们的研究工作中,我们特别关注三种方法:默认配置。我们识别了在其发布的默认配置中可达的代码,但这些代码并不是为了由任何默认功能使用。配置交互。我们找到了一些单独看起来合理的选项对,但在一起配置时却导致问题(例如,静默禁用安全控制,或在功能行为未定义的情况下,代码仍然可达)。早期可达性。我们识别了在适当的安全控制(如身份验证)之前、没有受害者交互或在协议状态转换之前运行的安全敏感和复杂代码。我们想要了解Claude在发现大型复杂代码库中与这三种攻击面描述相关的真实问题方面的表现。我们分析了25个开源项目(代表着超过五百万行代码),这些项目使用的语言包括C、C++、Java、PHP和Python。Claude创建了这些项目中超过17,000个配置选项的清单。其中,3,842个与安全相关的控制或功能的配置有关。为了我们的研究目的,我们将这些开源项目分为三大类:公共项目。这些项目旨在服务于任何能接触到它们的用户,或采用无法识别的方所撰写的数据。(示例包括解析上游答案的DNS解析器或解析源响应的代理。)门户项目。这些项目旨在为经过身份验证的用户提供服务(例如,持有密码、密钥或证书的用户,或注册设备)。该软件仍然允许任意客户端请求,但在用户经过身份验证之前,没有功能可用。私有项目。这些项目是为操作员自己的私有环境构建和部署的。在这些情况下,添加身份验证层等控制是可选的,但超出研究范围。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡