9.1 KiB
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 inputs,fuzzing需要破坏结构以覆盖error-handling与意外路径)。方法上对约63,000个non-binary PDF objects进行无监督训练,采用seq2seq RNN(LSTM)学习字符级概率分布,并提出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 Microsoft’s 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-decoder(LSTM)学习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) Coverage(instruction coverage):统计执行过的唯一指令集合(dll-name, dll-offset标识),集合并集衡量一组测试的覆盖范围,是fuzzing有效性的核心指标。 (2) Pass rate:通过grep解析日志中是否有parsing-error来判定pass/fail,pass表示被解析器视为well-formed;主要用来估计学习质量与“结构保持程度”。 (3) Bugs:在AppVerifier监控下捕获内存破坏类缺陷(如buffer overflow、异常递归导致的stack overflow等),衡量真实漏洞发现能力。
第九个问题:请总结这篇论文实验的表现,包含具体的数值表现和实验结论。
基线覆盖(host与baseline):三份host单独覆盖约353,327(host1)到457,464(host2)条唯一指令,三者并集host123为494,652;将1,000个真实对象附加到host后,baseline123覆盖为553,873,且所有host自身pass rate为100%。学习质量(pass rate):Sample在10 epochs时pass rate已>70%;SampleSpace整体更高,50 epochs最高达97% pass rate。覆盖表现(学习不加fuzz):不同host对覆盖影响明显;总体覆盖最佳为Sample-40e(host123场景下胜出),且Sample-40e的覆盖集合几乎是其他集合的超集(相对SampleSpace-40e仅缺1,680条指令)。学习+fuzz对比(30,000个PDF/组,图8):SampleFuzz覆盖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+Random,100,000对象/300,000 PDF,约5天)发现并修复一个stack-overflow bug。
第十个问题:请清晰地描述论文所作的工作,分别列举出动机和贡献点以及主要创新之处。
动机:grammar-based fuzzing对复杂结构化输入最有效,但手工编写input grammar“劳累/耗时/易错”,限制了在真实大型解析器(如浏览器PDF解析)上的应用;同时学习生成“规范输入”与fuzzing“破坏结构找漏洞”目标冲突,需要可控融合。
贡献点:(1) 首次将neural-network-based statistical learning(seq2seq 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决策信号(高置信处注入反常),从而在保持足够结构可深入解析的同时,更系统地触达错误处理与意外路径。