CovRL: Fuzzing JavaScript Engines with Coverage-Guided Reinforcement Learning for LLM-based Mutation

📄 arXiv: 2402.12222v1 📥 PDF

作者: Jueon Eom, Seyeon Jeong, Taekyoung Kwon

分类: cs.CR, cs.CL, cs.LG, cs.SE

发布日期: 2024-02-19

备注: 14 pages, 4 figures, 9 tables, 2 listings


💡 一句话要点

提出CovRL以解决JavaScript引擎模糊测试中的覆盖指导问题

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 模糊测试 覆盖指导 强化学习 大型语言模型 JavaScript引擎 漏洞发现 安全性

📋 核心要点

  1. 现有模糊测试方法在处理复杂的JavaScript引擎时,面临着对精确语法输入的高要求,导致覆盖指导不足。
  2. 本文提出的CovRL技术结合了大型语言模型与覆盖反馈的强化学习,旨在提高模糊测试的有效性。
  3. 实验结果显示,CovRL-Fuzz在代码覆盖率和漏洞发现能力上显著优于现有工具,发现了48个真实安全漏洞。

📝 摘要(中文)

模糊测试是一种有效的漏洞发现技术,但在复杂系统如JavaScript引擎中,由于需要精确的语法输入而面临挑战。近期,研究者们采用语言模型进行上下文感知的变异以应对这一问题。然而,现有技术在模糊测试中对覆盖指导的利用有限,通常以黑箱方式进行。本文提出了一种新技术CovRL(覆盖指导强化学习),将大型语言模型(LLMs)与覆盖反馈的强化学习相结合。CovRL-Fuzz通过利用词频-逆文档频率(TF-IDF)方法直接将覆盖反馈集成到LLM中,构建加权覆盖图。这一图在计算模糊测试奖励时至关重要,进而通过强化学习应用于基于LLM的变异器。CovRL-Fuzz通过这种方法生成更可能发现新覆盖区域的测试用例,从而提高漏洞检测率,同时减少语法和语义错误,无需额外的后处理。评估结果表明,CovRL-Fuzz在代码覆盖率和漏洞发现能力方面优于现有最先进的模糊测试工具,识别了48个与安全相关的真实漏洞,包括39个未知漏洞和11个CVE。

🔬 方法详解

问题定义:本文旨在解决现有模糊测试方法在JavaScript引擎中对覆盖指导的不足,尤其是在处理复杂语法时的挑战。现有方法通常以黑箱方式进行,难以有效利用覆盖信息。

核心思路:CovRL通过将覆盖反馈与大型语言模型结合,利用强化学习优化模糊测试过程,旨在生成更有效的测试用例以发现新漏洞。

技术框架:CovRL-Fuzz的整体架构包括覆盖反馈的获取、TF-IDF加权覆盖图的构建、模糊测试奖励的计算及基于LLM的变异器。每个模块相互协作,形成闭环反馈机制。

关键创新:CovRL的主要创新在于将覆盖反馈直接集成到LLM中,利用TF-IDF方法构建加权覆盖图,从而实现更精准的模糊测试奖励计算,与传统黑箱方法形成鲜明对比。

关键设计:在关键设计上,CovRL-Fuzz采用TF-IDF方法来构建覆盖图,并通过强化学习优化模糊测试奖励,确保生成的测试用例能够有效覆盖新的代码区域。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

CovRL-Fuzz在实验中表现出色,识别了48个真实的安全漏洞,其中包括39个未知漏洞和11个CVE,显著提高了代码覆盖率和漏洞发现能力,超越了现有最先进的模糊测试工具。

🎯 应用场景

该研究的潜在应用领域包括网络安全、软件测试和漏洞挖掘等。CovRL-Fuzz能够有效提高JavaScript引擎的安全性,减少潜在的安全漏洞,具有重要的实际价值和广泛的应用前景。未来,该方法还可扩展至其他编程语言和复杂系统的模糊测试中。

📄 摘要(原文)

Fuzzing is an effective bug-finding technique but it struggles with complex systems like JavaScript engines that demand precise grammatical input. Recently, researchers have adopted language models for context-aware mutation in fuzzing to address this problem. However, existing techniques are limited in utilizing coverage guidance for fuzzing, which is rather performed in a black-box manner. This paper presents a novel technique called CovRL (Coverage-guided Reinforcement Learning) that combines Large Language Models (LLMs) with reinforcement learning from coverage feedback. Our fuzzer, CovRL-Fuzz, integrates coverage feedback directly into the LLM by leveraging the Term Frequency-Inverse Document Frequency (TF-IDF) method to construct a weighted coverage map. This map is key in calculating the fuzzing reward, which is then applied to the LLM-based mutator through reinforcement learning. CovRL-Fuzz, through this approach, enables the generation of test cases that are more likely to discover new coverage areas, thus improving vulnerability detection while minimizing syntax and semantic errors, all without needing extra post-processing. Our evaluation results indicate that CovRL-Fuzz outperforms the state-of-the-art fuzzers in terms of code coverage and bug-finding capabilities: CovRL-Fuzz identified 48 real-world security-related bugs in the latest JavaScript engines, including 39 previously unknown vulnerabilities and 11 CVEs.