这两年,随着大模型代码能力的增强,很多公司已经在采用大模型编写代码,大大提升效率。
大模型虽然代码写得快,但写的代码并不安全,很多甚至不如成熟程序员写的代码。一方面,代码生成速度大幅提升,另一方面,代码质量并不提高,结果就是对测试越来越大的挑战。
怎么办?用大模型对抗大模型是现在比较流行的方法。大模型在安全测试方面也有了很多的发展。Fuzzing就是一个比较重要的领域。
Code Intelligence是一家德国公司,他们的CI Spark利用生成式 AI 的代码分析和生成功能来自动生成模糊测试,这是 AI 驱动的白盒测试的核心。
它的主要能力包括:
识别接受用户控制输入的入口点
识别有效的 API 序列及可触发的行为
识别 API 的有效参数
处理数据流和控制流依赖关系
简单地说,它可以自动识别模糊测试候选对象并自动生成模糊测试的代码。此外,CI Spark 提供了一种交互模式,允许用户快速与之交互以纠正任何漏报并提高生成测试的质量。嗯嗯,自然语言交互。
Code Intelligence的网站上提供了一个Demo,地址在https://www.code-intelligence.com/product-ci-spark
在Demo中,体现了几个特点:
测试代码生成直接整合进IDE中。
IDE右边的部分用于交互。
2. 自然语言交互的测试代码生成能力
要求检查生成的代码里不能有”<script”,防止SQL注入。直接生成测试的Java代码。
还可以更详细的要求,增加一个有意义的输出:
看上去生成的测试代码还可以。
3. 测试代码可以直接保存到项目中,测试结果可以直接在IDE中运行
准确地找到了相关代码的位置。看上去测试效果还可以。
有一篇论文专门研究了大模型用于模糊测试的情况:
https://arxiv.org/html/2402.00350v1
文章对众多的大模型Fuzzing测试的工具做了调查:
得到如下结论:与传统的fuzzer相比,基于大模型的fuzzer有以下优点:CHATAFL 作为一种基于大型语言模型的网络协议模糊测试技术,与 AFLNET Pham等同类最先进的模糊测试工具相比,具有更高的平均代码覆盖率 (2020)和NSFuzz Qin等人(2023),这些工具没有使用 LLM 技术。与 AFLNET 相比,CHATAFL 的分支覆盖率平均高出 5.8%。与 NSFuzz 相比,这一数字上升到 6.7%。这表明 CHATAFL 的检测范围更广,发现未知 bug 的几率更高。从整体代码来看,TitanFuzz 在 PyTorch 和 TensorFlow 上分别实现了 20.98% 和 39.97% 的代码覆盖率,远超 DeepREL 和 Muffin。相比 DeepREL,TitanFuzz 在 PyTorch 和 TensorFlow 上的代码覆盖率分别提升了 50.84% 和 30.38%。虽然 TitanFuzz 的时间成本较高,但仅使用种子生成函数并针对 DeepREL 覆盖的 API 进行测试的效果明显优于 DeepREL,并且耗时更少,这体现了直接使用 LLM 生成高质量种子的优势。传统的模糊测试器通常根据给定的规则或方法随机生成测试用例。此类方法缺乏对代码结构、逻辑和上下文的深入了解。因此,它们可能无法有效地探索复杂的编程模式或识别高级漏洞。此外,传统的模糊测试器通常不会利用历史错误数据或编程模式。相比之下,LLM 可以从大量历史代码和错误中学习,从而能够模拟过去的错误模式并发现新的漏洞。在 FuzzGPT 的实验中,总共检测到 76 个错误,其中 61 个得到确认,包括 49 个已确认为以前未知的错误(其中 6 个已修复)。更重要的是,FuzzGPT 检测到 11 个新的高优先级错误或安全漏洞。这表明基于 LLM 的模糊测试器可以找到更深层次的编程漏洞。例如,当使用CHATAFL、NSFUZZ和AFLNET测试同一目标时,在相同的运行次数和时间下,CHATAFL在测试目标中发现了9个新漏洞。相比之下,NSFUZZ只发现了4个漏洞,而AFLNET发现了3个漏洞。Fuzz4All 表现出色,已在 GCC、Clang、OpenJDK 等广泛使用的系统中发现 76 个漏洞,其中 47 个漏洞已被确认为未知漏洞。传统的模糊测试需要大量的时间、精力和人工。种子生成是模糊测试中不可或缺的一部分,创建多样化且有效的输入需要大量的人工和专业知识。此外,使用现有种子通过变异生成新输入也非常耗时。使用大型语言模型自动化模糊测试可以解决这些问题。InputBlaster 利用 LLM 的自动化功能根据输入提示生成高质量的种子。每次测试后,它会根据不同的提示对种子进行变异,从而生成新的种子以供进一步测试。实施自动化模糊测试可以节省大量成本,预计这将是未来的一大趋势。用AI增强测试已经有非常多的应用,Gartner专门做了排行
已经有很多厂商了,但看上去中国的还比较少。
非常怀疑搞这个排行的人不懂中文。至少,国内的云起无垠在这方面走的比较靠前,大模型能力也非常强,有兴趣的可以看一下:https://clouditera.com/。
他们还专门发了个白皮书:
《模糊测试技术白皮书》正式发布
Gartner排行榜:
https://www.gartner.com/reviews/market/ai-augmented-software-testing-tools