模糊测试可以成为找出软件中零日漏洞的宝贵工具。为了鼓励开发人员和研究人员使用它,谷歌周三宣布现在提供对其模糊测试框架 OSS-Fuzz 的免费访问。
据谷歌称,通过使用该框架在大型语言模型(LLM)的帮助下自动化模糊测试的手动方面,可以获得切实的安全改进。
谷歌开源安全团队成员在公司博客中写道:“我们利用 LLM 编写项目特定代码,以提高模糊测试覆盖率并发现更多漏洞。”
他们指出,到目前为止,OSS-Fuzz 及其由 LLM 生成的改进提供的扩展模糊测试覆盖范围已使 Google 能够发现 cJSON 和 libplist 中的两个新漏洞,尽管这两个广泛使用的项目已经进行模糊测试多年了。
如果没有完全由 LLM 生成的代码,这两个漏洞可能永远不会被发现和修复。
模糊测试是一种自动化测试
模糊测试已经存在了几十年,并且因其成功地发现以前未知的或零日漏洞而越来越受欢迎。臭名昭著的 Heartbleed 漏洞是安全工程师使用商业模糊测试产品 Defensics 发现的。
模糊测试可以捕捉到许多“容易实现的目标”,但它也可能暴露一些影响较大的项目,例如缓冲区溢出。 由于模糊测试是一种自动化测试,因此它不需要保姆。它只会做它该做的事,你实际上不必担心。这是查找漏洞的相对简单的方法。
模糊测试不能替代设计安全策略
对模糊测试等动态测试工具的投资并不能替代安全性。设计策略,例如选择内存安全的编程语言,但它们是提高软件安全性的强大工具。
模糊测试通过使用意想不到的输入来探索软件行为,从而扩大了测试范围,这些输入可以揭示诸如最近针对美国水处理厂、电网、石油和天然气管道以及交通枢纽的国家资助的网络攻击中所利用的漏洞。
虽然模糊测试对开发人员有利,但其手动方面一直阻碍开源维护人员有效地对其项目进行模糊测试,谷歌希望通过提供对其模糊测试框架的免费访问来解决这个问题。
由于开源维护者通常是没有资金或资金有限的志愿者,因此花时间并支付运行资源密集型工具的成本并不总是可行的,软件供应链安全公司。
即使是这样,模糊测试工具也会使原本简单的构建环境变得复杂,可能会产生大量误报,从而为已经捉襟见肘的团队进行审查和分析工作,并且可能会产生由于无法采取而无法采取的行动。即网络安全技能或经验不足。
安全,而不是自动化,是修补最重要的部分
谷歌还为开发人员和研究人员提供使用法学硕士构建自动修补管道的指导。谷歌安全团队成员在博客中写道:“这种人工智能驱动的修补方法解决了 15% 的目标错误,为工程师节省了大量时间。”
虽然使用 LLM 来自动修补是一个有趣的想法,LLM 面临的挑战是拥有有效修补而不破坏事物所需的所有上下文知识。 自动化系统提出修复建议是个好主意,而人类在实施之前手动审查它是一个好主意。
总的来说,修补最重要的部分不是自动化,而是安全性。事实证明,要证明一个补丁完全发挥了它应有的作用,这一点并不简单不多也不少。 因此,目前只能自动注入有限数量的补丁。这些补丁都很简单,例如将变量的 32 位整数更改为 64 位整数。对于更复杂的补丁,我们仍然需要并且应该在人工智能注入补丁后请领域专家进行审查。