Files
internal-docs/papers/md/NEUZZ Efficient Fuzzing with Neural Program Smoothing.md
Hongyu Yan 1cbfc6d53d 新增提取所有md文件的脚本
所有md文件都会被提取到/papers/md文件夹下
2026-01-26 18:22:48 +08:00

11 KiB
Raw Blame History

NEUZZ Efficient Fuzzing with Neural Program Smoothing

第一个问题请对论文的内容进行摘要总结包含研究背景与问题、研究目的、方法、主要结果和结论字数要求在150-300字之间使用论文中的术语和概念。

论文指出传统graybox fuzzing多依赖evolutionary guidance易陷入随机变异的低效序列难以触发深层分支与hard-to-trigger bugs而直接用gradient-guided optimization又会被真实程序的discontinuities、plateaus与ridges卡住。研究目的在于通过program smoothing构造可微的surrogate function使梯度方法可用于覆盖导向fuzzing。方法上NEUZZ用feed-forward NN学习输入到edge bitmap分支/边覆盖的平滑近似采用binary cross-entropy训练并做label降维合并总是共现的边再基于∇x f_i(θ,x)选取top-k高梯度字节并按梯度符号生成变异同时通过coverage-based filtration进行incremental learning以避免遗忘。主要结果在10个真实程序上NEUZZ在24小时内相对10个SOTA fuzzers达到最高edge coverage最高达3×文中亦报告对AFL最高约10×发现31个此前未知bug含2个CVE并在LAVA-M与DARPA CGC上分别找到更多注入/真实漏洞。结论是:神经网络程序平滑+梯度引导变异能显著提升fuzz效率与覆盖并具备良好可扩展性。

第二个问题请提取论文的摘要原文摘要一般在Abstract之后Introduction之前。

Abstract—Fuzzing has become the de facto standard technique for finding software vulnerabilities. However, even state-of-the-art fuzzers are not very efficient at finding hard-to-trigger software bugs. Most popular fuzzers use evolutionary guidance to generate inputs that can trigger different bugs. Such evolutionary algorithms, while fast and simple to implement, often get stuck in fruitless sequences of random mutations. Gradient-guided optimization presents a promising alternative to evolutionary guidance. Gradient-guided techniques have been shown to significantly outperform evolutionary algorithms at solving high-dimensional structured optimization problems in domains like machine learning by efficiently utilizing gradients or higher-order derivatives of the underlying function. However,gradient-guidedapproachesarenotdirectly applicable to fuzzing as real-world program behaviors contain many discontinuities, plateaus, and ridges where the gradient-based methods often get stuck. We observe that this problem can be addressed by creating a smooth surrogate function approximating the target programs discrete branching behavior. In this paper, we propose a novel program smoothing technique using surrogate neural network models that can incrementally learn smooth approximations of a complex, real-world programs branching behaviors. We further demonstrate that such neural network models can be used together with gradient-guided input generation schemes to significantly increase the efficiency of the fuzzing process. OurextensiveevaluationsdemonstratethatNEUZZ significantly outperforms 10 state-of-the-art graybox fuzzers on 10 popular real-world programs both at finding new bugs and achieving higher edge coverage. NEUZZ found 31 previously unknown bugs (including two CVEs) that other fuzzers failed to find in 10 real-world programs and achieved 3X more edge coverage than all of the tested graybox fuzzers over 24 hour runs. Furthermore, NEUZZ also outperformed existing fuzzers on both LAVA-M and DARPA CGC bug datasets.

第三个问题:请列出论文的全部作者,按照此格式:作者1, 作者2, 作者3

Dongdong She, Kexin Pei, Dave Epstein, Junfeng Yang, Baishakhi Ray, Suman Jana

第四个问题:请直接告诉我这篇论文发表在哪个会议或期刊,请不要推理或提供额外信息。

arXiv:1807.05620v4

第五个问题:请详细描述这篇论文主要解决的核心问题,并用简洁的语言概述。

核心问题是覆盖导向fuzzing本质是优化问题最大化new edge coverage/bugs但真实程序的分支行为对输入是高度离散且不光滑的目标函数导致两类主流方法各有瓶颈evolutionary algorithms无法利用梯度结构而易低效停滞gradient-guided optimization虽高效但在程序的discontinuities、plateaus、ridges处梯度不可用/不可靠而“卡住”。NEUZZ要解决的就是“如何在不引入符号执行等高开销白盒平滑的前提下把程序分支行为变成可微、可求梯度的近似函数并让梯度真正能指导变异去触达未覆盖边与隐藏漏洞”。简洁概述用可微的神经网络代理模型平滑程序分支使梯度引导变异在真实程序上可用且更高效。

第六个问题:请告诉我这篇论文提出了哪些方法,请用最简洁的方式概括每个方法的核心思路。

(1) Neural program smoothing训练feed-forward surrogate NN把输入字节序列映射为edge bitmap的“平滑近似”从而可微、可求梯度。 (2) Edge-label降维预处理仅保留训练集中出现过的边并合并“总是共现”的边以缓解multicollinearity减少输出维度约从65,536降到~4,000。 (3) Gradient-guided mutationAlgorithm 1对选定的输出边神经元计算∇x f_i(θ,x)选top-k高梯度字节作为critical bytes按梯度符号对字节做增/减并clip到[0,255]生成定向变异。 (4) Exponentially grow mutation target从少量字节开始逐轮扩大要变异的字节数以覆盖更大输入空间同时保持单次搜索有效性。 (5) Incremental learning + coverage-based filtration把新发现触发新边的输入加入并用“只保留能带来新覆盖的旧数据摘要”控制数据规模迭代重训以提高代理模型精度并避免灾难性遗忘。 (6) Magic-check辅助LAVA/CGC场景用定制LLVM pass插桩magic byte checks用NN梯度先定位关键字节再对相邻字节做局部穷举4×256以高效触发多字节条件。

第七个问题:请告诉我这篇论文所使用的数据集,包括数据集的名称和来源。

(1) 10个真实世界程序集binutils-2.30readelf -a, nm -C, objdump -D, size, strip、harfbuzz-1.7.6、libjpeg-9c、mupdf-1.12.0、libxml2-2.9.7、zlib-1.2.11论文表IIb列出来源为对应开源项目/版本)。 (2) LAVA-M bug datasetLAVA项目的子集base64、md5sum、uniq、who含注入的magic-number触发漏洞来源引用[28] LAVA。 (3) DARPA CGC datasetCyber Grand Challenge二进制/服务程序数据集论文从中随机选50个binary评测来源引用[26] CGC repository。 (4) 训练数据来源先运行AFL-2.52b 1小时生成初始seed corpus与边覆盖标签用于训练NN平均每个程序约2K训练输入

第八个问题:请列举这篇论文评估方法的所有指标,并简要说明这些指标的作用。

(1) Bugs found / crashes统计发现的真实漏洞与崩溃数量用于衡量漏洞挖掘能力内存类问题通过AddressSanitizer的stack trace去重整数溢出通过人工分析+UBSan验证。 (2) Edge coveragenew control-flow edges以AFL的edge coverage report统计“新增边数”作为覆盖导向fuzzing的核心效果指标。 (3) 运行时间预算下的覆盖增长曲线比较24h真实程序、5hLAVA-M、6hCGC内覆盖随时间变化体现“到达新边的速度”。 (4) 训练开销/时间NEUZZ train(s), training time sec衡量学习组件的成本如与RNN fuzzer对比时报告训练时间差异。 (5) 固定变异预算下的覆盖如1M mutations在控制变异次数时比较不同方法/模型的有效性,排除训练时长差异干扰。 (6) NN预测精度test accuracy约95%平均):用于说明代理模型对分支行为预测质量(间接影响梯度指导有效性)。

第九个问题:请总结这篇论文实验的表现,包含具体的数值表现和实验结论。

真实程序24hNEUZZ在10个程序上均取得最高edge coverage表VI示例readelf -a 4,942harfbuzz 6,081nm -C 2,056libxml 1,596mupdf 487zlib 376等并在多程序上呈现“1小时内新增>1,000边”的领先速度文中总结对AFL在9/10程序上分别约6×、1.5×、9×、1.8×、3.7×、1.9×、10×、1.3×、3×的边覆盖优势并称相对次优fuzzer可达约4.2×、1.3×、7×、1.2×、2.5×等提升。真实漏洞表III在6个fuzzer对比中NEUZZ总计发现60个bugAFL 29AFLFast 27VUzzer 14KleeFL 26AFL-laf-intel 60?——表中按项目/类型给出且NEUZZ覆盖5类bug并额外拿到2个CVECVE-2018-19931/19932。LAVA-M5hNEUZZ在base64找到48、md5sum 60、uniq 29、who 1,582表IV整体优于Angora等对比项。CGC6h50 binariesNEUZZ触发31个有漏洞binaryAFL为21、Driller为25且NEUZZ覆盖了AFL/Driller找到的全部并额外多6个表V。与RNN fuzzer对比1M mutations表VIINEUZZ在readelf/libjpeg/libxml/mupdf上分别获得约8.4×/4.2×/6.7×/3.7×更多边覆盖且训练开销约低20×。模型消融表VIII线性模型显著落后增量学习进一步提升如readelf -a1,723→1,800→2,020。结论神经平滑+梯度定向变异在覆盖与找bug上均显著优于多种SOTA且训练/执行开销可控、可扩展到大程序。

第十个问题:请清晰地描述论文所作的工作,分别列举出动机和贡献点以及主要创新之处。

动机evolutionary fuzzing在深层逻辑与稀疏漏洞上效率低梯度优化在高维结构化问题上更强但直接用于程序会被分支离散性导致的不可微/不连续行为阻断既有program smoothing依赖符号执行/抽象解释,开销大且不可扩展。

贡献点:(1) 提出“program smoothing对gradient-guided fuzzing至关重要”的核心观点并把fuzzing形式化为优化问题明确为何需要平滑代理。 (2) 设计首个可扩展的surrogate neural network program smoothing用feed-forward NN学习输入→edge coverage bitmap的平滑近似并通过标签降维解决训练可行性。 (3) 提出面向覆盖的gradient-guided mutation策略利用∇x f_i(θ,x)定位critical bytes与变异方向系统生成高价值变异而非均匀随机。 (4) 提出coverage-based filtration的incremental learning流程持续用新覆盖数据纠正代理模型且避免灾难性遗忘。 (5) 实现NEUZZ并在真实程序、LAVA-M、CGC上进行大规模对比证明在bug数量与edge coverage上显著超越10个SOTA fuzzers。

主要创新之处:用“可微代理模型”把离散分支行为平滑为可求梯度的函数,再把梯度直接转化为变异位置/方向的决策信号,从而以低开销获得比符号/污点等重分析更强的探索能力。