Files
2026-01-26 15:28:08 +08:00

9.1 KiB
Raw Permalink Blame History

Learn&Fuzz Machine Learning for Input Fuzzing

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

论文聚焦grammar-based fuzzing的关键瓶颈需要手工编写input grammar过程费时且易错而复杂结构化格式如PDF又最依赖该类fuzzing。研究目的在于用neural-network-based statistical learning自动生成可用于输入fuzzing的grammar/生成模型并解决learn&fuzz张力learning偏向生成well-formed inputsfuzzing需要破坏结构以覆盖error-handling与意外路径。方法上对约63,000个non-binary PDF objects进行无监督训练采用seq2seq RNNLSTM学习字符级概率分布并提出NoSample/Sample/SampleSpace三种采样生成策略及基于概率分布引导“where to fuzz”的SampleFuzz算法。实验以Microsoft Edge PDF parser为目标用instruction coverage、pass rate与AppVerifier监测bugs评估SampleSpace在50 epochs达97% pass rate整体覆盖最佳为Sample-40e在learn+fuzz组合中SampleFuzz以567,634条指令覆盖、68.24% pass rate取得最高覆盖并优于多种random fuzzing基线且在更长实验中发现并修复一个stack-overflow bug。结论统计生成模型可自动学习输入结构并用概率信息更智能地施加fuzz以提升覆盖。

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

Abstract.Fuzzing consists of repeatedly testing an application with modified, or fuzzed, inputs with the goal of finding security vulnerabili-ties in input-parsing code. In this paper, we show how to automate the generation of an input grammar suitable for input fuzzing using sam-ple inputs and neural-network-based statistical machine-learning tech-niques. We present a detailed case study with a complex input format, namely PDF, and a large complex security-critical parser for this format, namely, the PDF parser embedded in Microsofts new Edge browser. We discuss (and measure) the tension between conflicting learning and fuzzing goals: learning wants to capture the structure of well-formed in-puts, while fuzzing wants to break that structure in order to cover unex-pected code paths and find bugs. We also present a new algorithm for this learn&fuzz challenge which uses a learnt input probability distribution to intelligently guide where to fuzz inputs.

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

Patrice Godefroid, Hila Peleg, Rishabh Singh

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

arXiv:1701.07232v1

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

论文要解决的核心问题是如何在无需人工编写格式规范的前提下从sample inputs自动学习出“足够像grammar”的生成式输入模型用于grammar-based fuzzing复杂结构化输入以PDF为代表并进一步在“生成尽量well-formed以深入解析流程”和“刻意引入ill-formed片段以触达异常/错误处理代码”之间取得可控平衡。传统黑盒/白盒fuzz对复杂文本结构格式不如grammar-based有效但后者依赖手工grammar已有grammar/automata学习方法对PDF对象这种“相对扁平但token/键值组合极多”的格式并不理想。本文用seq2seq RNN学习字符序列的概率分布作为统计grammar并利用该分布在高置信位置定点“反向扰动”以实现learn&fuzz。简洁概述用神经网络从样本自动学输入结构并用学到的概率分布指导更有效的结构化fuzz。

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

(1) seq2seq RNN统计输入建模把PDF object当作字符序列训练encoder-decoderLSTM学习p(x_t|x_<t)并作为生成式语言模型。 (2) 训练数据构造shift-by-one无监督将拼接后的字符流分块成长度d的输入序列输出为右移1位序列实现无监督next-char学习。 (3) NoSample生成每步取argmax字符最大化well-formed但多样性极低。 (4) Sample生成每步按分布采样字符提升多样性但更易产生ill-formed片段。 (5) SampleSpace生成仅在whitespace边界采样、token内部用argmax折中多样性与语法一致性。 (6) SampleFuzz算法生成时先采样得到字符c及其概率p(c),若模型高置信(p(c)>p_t)且掷币触发(p_fuzz>t_fuzz)则用分布中最低概率字符替换argmin在“最不该出错的位置”注入异常以诱导解析器走入错误处理/意外路径。 (7) PDF对象嵌入整文件的host-append机制将新对象按PDF增量更新规则附加到well-formed host更新xref与trailer以便对Edge PDF parser进行端到端测试。

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

(1) PDF训练语料从534个PDF文件中抽取约63,000个non-binary PDF objects这534个PDF由Windows fuzzing team提供且是对更大PDF集合做seed minimization后的结果更大集合来源包括公开Web与历史fuzz用PDF。论文未给该数据集专有名称(2) 目标程序/基准Microsoft Edge browser内嵌的Edge PDF parser通过Windows团队提供的单进程test-driver执行。(3) Host PDF集合从上述534个PDF中选取最小的3个作为host1/host2/host3约26Kb/33Kb/16Kb用于将生成对象附加成完整PDF。

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

(1) Coverageinstruction coverage统计执行过的唯一指令集合dll-name, dll-offset标识集合并集衡量一组测试的覆盖范围是fuzzing有效性的核心指标。 (2) Pass rate通过grep解析日志中是否有parsing-error来判定pass/failpass表示被解析器视为well-formed主要用来估计学习质量与“结构保持程度”。 (3) Bugs在AppVerifier监控下捕获内存破坏类缺陷如buffer overflow、异常递归导致的stack overflow等衡量真实漏洞发现能力。

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

基线覆盖host与baseline三份host单独覆盖约353,327host1到457,464host2条唯一指令三者并集host123为494,652将1,000个真实对象附加到host后baseline123覆盖为553,873且所有host自身pass rate为100%。学习质量pass rateSample在10 epochs时pass rate已>70%SampleSpace整体更高50 epochs最高达97% pass rate。覆盖表现学习不加fuzz不同host对覆盖影响明显总体覆盖最佳为Sample-40ehost123场景下胜出且Sample-40e的覆盖集合几乎是其他集合的超集相对SampleSpace-40e仅缺1,680条指令。学习+fuzz对比30,000个PDF/组图8SampleFuzz覆盖567,634、pass rate 68.24%为最高覆盖次优Sample+Random覆盖566,964、pass rate 41.81%Sample-10K覆盖565,590、pass rate 78.92%baseline+Random覆盖564,195、pass rate 44.05%SampleSpace+Random覆盖563,930、pass rate 36.97%。结论存在coverage与pass rate张力随机fuzz提升覆盖但显著降低通过率SampleFuzz在约65%70%通过率附近取得更佳折中并带来最高覆盖。漏洞常规实验未发现bug目标已被长期fuzz但更长实验Sample+Random100,000对象/300,000 PDF约5天发现并修复一个stack-overflow bug。

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

动机grammar-based fuzzing对复杂结构化输入最有效但手工编写input grammar“劳累/耗时/易错”限制了在真实大型解析器如浏览器PDF解析上的应用同时学习生成“规范输入”与fuzzing“破坏结构找漏洞”目标冲突需要可控融合。

贡献点:(1) 首次将neural-network-based statistical learningseq2seq RNN/LSTM用于从样本自动学习可生成的输入模型以自动化grammar生成用于fuzzing。 (2) 针对PDF这种超复杂格式明确限定范围为non-binary PDF objects并给出端到端工程方案把生成对象按PDF增量更新规则附加到host形成完整PDF以真实驱动Edge PDF parser评测。 (3) 系统分析并量化learn&fuzz张力用pass rate刻画学习质量、用instruction coverage刻画fuzz有效性展示两者此消彼长。 (4) 提出SampleFuzz利用learned input probability distribution在模型高置信位置用低概率字符替换实现“智能选择where to fuzz”在覆盖与通过率之间取得更优折中并获得最高覆盖。

主要创新:把“概率语言模型”的不确定性/置信度直接转化为fuzzing决策信号高置信处注入反常从而在保持足够结构可深入解析的同时更系统地触达错误处理与意外路径。