长亭百川云 - 文章详情

2023软件工程领域顶会fuzz技术研究相关论文汇总|技术进展

FuzzWiki

135

2024-07-13

软件工程领域顶会也涌现了许多fuzz方面的论文,其论文的创新性,质量与技术覆盖面不次于安全领域顶会。小编将2023年软工领域顶会中与fuzz技术相关的论文统计出来以供大家查阅,此次汇总涉及ICSE, ASE, FSE, ISSTA, OOPSLA五项会议。小编还将此次分享的论文在研究方向上进行了分类,以供大家参考。论文及摘要情况如下:

ICSE

JITfuzz: Coverage-guided Fuzzing for

JVM Just-in-Time Compilers

论文作者

Mingyuan Wu, Minghai Lu, Heming Cui, 

Junjie Chen, Yuqun Zhang, Lingming Zhang

论文作者机构

Southern University of Science and Technology, Shenzhen, China;

The University of Hong Kong, Hong Kong, China;

Research Institute of Trustworthy Autonomous Systems, Shenzhen, China;

Tianjin University, Tianjin, China;

Guangdong Provincial Key Laboratory of Brain-inspired Intelligent Computation, China;University of Illinois Urbana-Champaign, Champaign, USA

所属方向

面向 Java 虚拟机中JIT编译器的fuzz

论文摘要

Java 虚拟机(JVM)作为支持各种基于 Java 字节码的应用程序的广泛应用平台,其实时程序解释机制造成了严重的性能损失。为解决这一问题,JIT(Just-in-Time compiler)被广泛采用,以加强 JVM 的功效。因此,如何有效、高效地检测 JIT 错误成为确保 JVM 正确性的关键。本文提出了一个覆盖引导模糊框架,即 JITfuzz,用于自动检测 JIT 错误。其中,JITfuzz 采用了一组优化激活突变器来触发典型 JIT 优化(如函数内联和简化)的使用。同时,鉴于 JIT 优化与程序控制流密切相关,JITfuzz 还采用了突变器来丰富目标程序的控制流。此外,JITfuzz 还提出了一个突变器调度器,根据覆盖率更新迭代调度突变器,以最大化 JIT 的代码覆盖率。为了评估 JITfuzz 的有效性,我们基于 GitHub 上 16 个基于 JVM 的流行项目的基准套件进行了一系列实验。实验结果表明,就边缘覆盖率而言,JITfuzz 平均分别以 27.9% 和 18.6% 的优势超过了最先进的基于突变和基于生成的 JVM 模糊器。此外,JITfuzz 还成功检测出了 36 个以前未知的错误(包括 23 个 JIT 错误),并有 27 个错误(包括 18 个 JIT 错误)得到了开发人员的确认。

Regression Fuzzing for Deep 

Learning Systems

论文作者

Hanmo You, Zan Wang, Junjie Chen, Shuang Liu, 

Shuochuan Li

论文作者机构

College of Intelligence and Computing 

Tianjin University, Tianjin, China

所属方向

面向DL系统回归故障的fuzz

论文摘要

深度学习(DL)系统已广泛应用于各个领域。与传统软件类似,深度学习系统的演进也可能产生回归故障。为了发现深度学习系统版本之间的回归故障,我们提出了一种名为DRFuzz 的新型回归模糊技术,它有助于生成可触发多种回归故障且保真度高的输入。为了提高发现的回归故障的多样性,DRFuzz 提出了一种面向多样性的测试标准,以探索尽可能多的故障行为。然后,DRFuzz 结合 GAN 模型来保证生成的测试输入的保真度。我们在 DL 系统的四个回归场景中对四个受试对象进行了广泛的研究。实验结果表明,DRFuzz 在检测到的回归故障数量上分别平均提高了 1177% 和 539%,优于两种最先进的方法。

Operand-Variation-Oriented Differential

Analysis for Fuzzing Binding Calls in PDF 

Readers

论文作者

Suyue Guo, Xinyu Wan, Wei You, Bin Liang, 

Wenchang Shi, Yiwei Zhang, Jianjun Huang, Jian Zhang

论文作者机构

School of Information, Renmin University 

of China Beijing, China;

State Key Laboratory of Computer Science, 

Institute of Software, Chinese Academy 

of Sciences, Beijing, China

所属方向

面向PDF阅读器的fuzz

论文摘要

嵌入式脚本引擎的绑定调用给PDF阅读器带来了严重的攻击面。要有效测试绑定调用,就必须了解参数类型。遗憾的是,由于文档的缺失或不完整以及缺乏足够的样本,绑定调用参数的自动类型推理是一个巨大的挑战。在本文中,我们提出了一种新颖的面向操作变化的差分分析方法,它能自动从执行跟踪中提取特征,作为推断参数类型的口令。具体来说,通过使用不同类型的不同值执行绑定调用,并研究哪些类型会对指令操作数产生预期影响,从而推断出绑定调用的参数类型。推断出的类型信息用于指导模糊测试中的测试生成。通过对两款流行的 PDF 阅读器(Adobe Reader 和 Foxit Reader)进行评估,我们证明了我们的类型推理方法的准确性,以及推断出的类型信息在提高模糊测试的代码覆盖率和发现漏洞方面的有效性。我们发现了 38 个以前未知的安全漏洞,其中 26 个已获得 CVE 编号认证。

Reachable Coverage: Estimating

Saturation in Fuzzing

论文作者

Danushka Liyanage, Marcel Böhme, 

Chakkrit Tantithamthavorn, Stephan Lipp

论文作者机构

Monash University, Australia;

MPI-SP, Germany;

TU Munich, Germany

所属方向

可达覆盖率评估技术

论文摘要

可到达覆盖率是模糊器(即自动软件测试工具)搜索空间中代码元素的数量。模糊器无法在无法到达的代码中发现错误。因此,可达覆盖率量化了模糊器的有效性。通过静态程序分析,我们可以计算出可达覆盖元素数量的上限,例如通过提取调用图。但是,我们无法确定某个覆盖元素在一般情况下是否可触及。如果我们能精确高效地确定可达到的覆盖范围,我们就能解决软件验证问题。遗憾的是,我们也无法接近静态近似的特定精确度。在本文中,我们主张从统计学的角度来近似模糊器搜索空间中的元素数量,准确度确实会随着分析运行时间的增加而提高。在应用统计领域,相应的估计器已经开发并成熟了四分之一个世纪。这些估计器有望最终解决可及性计数这一长期难题。在本文中,我们将探讨这些估计器在模糊处理中的实用性。可达到覆盖率的估计值可用于衡量(a)未测试代码的数量,(b)测试技术的有效性,以及(c)正在进行的模糊测试活动的完整性(相对于渐近最大可达到覆盖率)。我们公开所有数据和分析结果。

Learning Seed-Adaptive Mutation

Strategies for Greybox Fuzzing

论文作者

Myungho Lee,Sooyoung Cha, Hakjoo Oh

论文作者机构

Korea University;

Sungkyunkwan University

所属方向

变异技术

论文摘要

本文介绍了一种为模糊器学习种子自适应突变策略的技术。基于突变的模糊器的性能在很大程度上取决于突变策略,该策略指定了选择突变方法的概率分布。因此,开发有效的突变策略近来备受关注,而通过观察目标程序的行为来学习每个程序的优化突变策略的程序自适应技术已成为实现更高性能的一种趋势。然而,这些技术仍有一个很大的局限性:它们忽略了种子输入的不同特性的影响,而这些特性可能会导致探索更深的程序位置。为了解决这一局限性,我们提出了SEAMFUZZ,这是一种新型模糊技术,它能自动捕捉单个种子输入的特征,并针对不同的种子输入采用不同的突变策略。通过捕捉种子输入之间的语法和语义相似性,SEAMFUZZ 将它们聚类为适当的群组,并使用定制的汤普森采样算法为每个种子群组量身定制有效的突变策略。实验结果表明,SEAMFUZZ 提高了最先进模糊器在实际程序中的路径发现和错误查找能力。

Evaluating and Improving Hybrid Fuzzing

论文作者

LingJiang,Hengchen Yuan, Mingyuan Wu, 

Lingming Zhang, Yuqun Zhang

论文作者机构

Southern University of Science and Technology, 

Shenzhen, China;

Research Institute of Trustworthy Autonomous 

Systems, Shenzhen, China;

University of Illinois Urbana-Champaign, 

Champaign, USA;

Guangdong Provincial Key Laboratory of

Brain-inspired Intelligent 

Computation, China

所属方向

混合模糊器调度技术

论文摘要

迄今为止,人们提出了各种混合模糊器,通过整合模糊策略和协程执行器的力量,最大限度地暴露程序漏洞。虽然现有的混合模糊器已显示出优于传统的覆盖引导模糊器,但它们很少采用同等的评估设置,如基准和种子库。因此,迫切需要对现有的混合模糊器进行全面研究,为该领域的未来研究提供启示和指导。为此,我们在本文中首次对最先进的混合模糊器进行了广泛研究。令人惊讶的是,我们的研究表明,现有混合模糊器的性能可能无法很好地推广到其他实验环境中。同时,与传统的覆盖引导模糊器相比,混合模糊器的性能优势总体有限。此外,不是简单地更新模糊策略或协同执行器,更新它们的协调模式可能会对混合模糊器的性能产生关键影响。因此,我们提出CoFuzz,通过升级混合模糊器的协调模式来提高其有效性。具体来说,在基准混合模糊器 QSYM 的基础上,CoFuzz 采用面向边缘的调度方式,通过随机梯度下降的在线线性回归模型调度边缘,以应用协程执行。 它还采用采样增强同步技术,通过区间路径抽象和约翰漫步以及增量更新模型,为应用模糊策略提供种子。我们的评估结果表明,CoFuzz 可以显著提高边缘覆盖率(例如,比我们研究中的现有最佳混合模糊器高出 16.31%),并比所有研究过的混合模糊器多暴露约 2 倍的独特崩溃。此外,CoFuzz 还成功地检测出 37 个以前未知的漏洞,其中 30 个得到了 8 个新 CVE 的确认,20 个得到了修复。

Fuzzing Automatic Differentiation in 

Deep-Learning Libraries

论文作者

Chenyuan Yang, Yinlin Deng, Jiayi Yao, 

Yuxing Tu, Hanchi Li, Lingming Zhang

论文作者机构

University of Illinois, Urbana-Champaign;

The Chinese University of Hong Kong, Shenzhen;

Huazhong University of Science and Technology;

所属方向

面向DL库自动分化组件(AD)的fuzz

论文摘要

近年来,深度学习(DL)引起了广泛关注,并得到了广泛应用。因此,越来越多的研究工作致力于测试深度学习库和框架。然而,现有的研究工作在很大程度上忽略了任何 DL 系统的一个关键组成部分--自动分化(AD),而这正是近年来 DL 发展的基础。为此,我们提出了∇Fuzz,这是第一种专门针对 DL 库中关键的 AD 组件的通用实用方法。我们的主要观点是,每个 DL 库的 API 都可以抽象为处理张量/向量的函数,并在不同的执行场景下对其进行不同的测试(用于计算不同实现的输出/梯度)。我们已将∇Fuzz 实现为针对 DL 库中 AD 的全自动 API 级模糊器,它利用不同执行场景下的差异测试来测试一阶梯度和高阶梯度,还包括自动过滤策略,以消除因数值不稳定性而导致的误报。我们对 PyTorch、TensorFlow、JAX 和 OneFlow 这四个最流行、维护最活跃的 DL 库进行了广泛的研究。结果表明,∇Fuzz 在代码覆盖率和错误检测方面都大大优于最先进的模糊器。迄今为止,∇Fuzz 已为所研究的 DL 库检测到 173 个错误,其中 144 个已被开发人员确认(其中 117 个是之前未知的错误,107 个与 AD 相关)。值得注意的是,在两个月的时间里,∇Fuzz 为 PyTorch 和 JAX 修复了 58.3% (7/12)的高优先级 AD 错误。现有的模糊器均未检测到已确认的AD漏洞。

Continuous Fuzzing: A Study of

the Effectiveness and Scalability

of Fuzzing in CI/CD Pipelines

论文作者

Thijs Klooster, Fatih Turkmen, Gerben Broenink, 

Ruben Ten Hove, Marcel Böhme

论文作者机构

TNO, The Netherlands;

University of Groningen, The Netherlands;

MPI-SP, Germany

所属方向

持续模糊测试评估

论文摘要

虽然模糊测试的成本很高,但它已被证明是发现许多应用程序中的错误(通常与安全有关)的基本技术。最近对OSS-Fuzz 的错误报告进行的一项研究发现,在所有报告的错误中,77% 是由于最近的代码更改造成的,这就强调了持续测试的重要性。随着软件开发中越来越多地采用 CI/CD 实践,寻找将模糊处理纳入持续安全测试的有效方法也就顺理成章了。在本文中,我们研究了 CI/CD 管道中模糊测试的有效性,重点关注与安全相关的错误,并寻求优化机会来分流不需要模糊测试的提交。通过实验分析,我们发现在我们分析的九个库中,有三个库的模糊测试工作量可以减少 63%(平均减少 55%)。此外,我们还研究了模糊测试活动持续时间与模糊器在发现漏洞方面的有效性之间的相关性:模糊测试活动的持续时间明显缩短,有利于加快开发人员的工作进度,同时还能发现重要的漏洞。我们的研究结果表明,持续模糊测试确实有利于安全软件开发流程,而且有很多机会可以提高其有效性。

Grammar-Based Evolutionary Fuzzing 

for JSON-RPC APIs

论文作者

Lisette Veldkamp, Mitchell Olsthoorn, 

Annibale Panichella

论文作者机构

Delft University of Technology, Delft, 

The Netherlands

所属方向

面向JSON-RPC API的fuzz

论文摘要

网络应用程序编程接口(API)允许以编程方式对系统进行寻址,是互联网的支柱。RESTful和 RPC API 是最常用的 API 架构。在过去几十年中,研究人员提出了各种 RESTful API 自动测试技术,但据作者所知,目前还没有关于 JSON-RPC(RPC 支持的两种数据格式之一)API 测试的研究。为了解决这一局限性,我们提出了一种基于语法的进化模糊方法,用于测试 JSON-RPC API,该方法使用了一种新颖的黑箱启发式。具体来说,我们在分层聚类的基础上使用基于多样性的适应度函数来量化 API 方法响应的差异。我们的假设是,与之前所见不同的响应表明新的代码路径已被发现。我们在使用 JSON-RPC API 的大规模工业区块链系统 XRP 账本上评估了我们的方法。结果表明,我们提出的方法的性能明显优于基线方法(基于语法的模糊器),并且额外覆盖了 240 个分支。

ISSTA

Icicle: A Re-designed Emulator for 

Grey**-Box Firmware Fuzzing**

论文作者

Michael Chesser, Surya Nepal, 

Damith C. Ranasinghe

论文作者机构

The University of Adelaide; Data61 CSIRO, Cyber 

Security Cooperative Research Centre Australia;

The University of Adelaide The School 

of Computer Science Australia

所属方向

固件模糊测试仿真技术

论文摘要

基于仿真的模糊器可以在没有源代码的情况下测试二进制文件,便于测试嵌入式应用程序,因为在目标硬件架构上自动执行既困难又缓慢。但是,基于仿真的现代模糊器是通过重新利用通用仿真器而发展起来的;因此,开发和集成模糊技术(如仪器方法)非常困难,而且通常是以特定于指令集架构(ISA)的临时方式添加的。这就将最先进的模糊技术限制在少数几种ISA 上,如 x86/x86-64 或 ARM/Arch64;这是对各种 ISA 进行固件模糊的一个重大问题。

本研究介绍了我们为重新思考模糊仿真所做的努力。我们设计并实现了一个针对模糊的多体系结构仿真框架--Icicle。我们展示了与体系结构无关的方式一次性添加仪器的能力,同时降低了执行开销。我们将Icicle 用作最先进的 ARM 固件模糊器--Fuzzware 的仿真器,并复现了结果。值得注意的是,我们证明了 Icicle 中新工具的可用性,从而发现了新的错误。我们在各种指令集架构(x86、ARM/Arch64、RISC-V、MIPS)的基准测试中发现了需要仪器技术的已知和特定操作能力的错误,从而证明了 Icicle 的保真度和架构ag-nostic仪器的有效性。此外,为了证明 Icicle 在基于仿真的模糊器中发现当前不支持的体系结构中的错误的有效性,我们使用真实世界中的固件二进制文件对 TePhone 进行了模糊测试。

Green Fuzzing: A Saturation-Based

Stopping Criterion using Vulnerability 

Prediction

论文作者

Stephan Lipp, Daniel Elsner, Severin Kacianka, 

Alexander Pretschner, Marcel Böhme, Sebastian Banescu

论文作者机构

Technical University of Munich Germany;

MPI-SP, Germany Monash University, Australia

所属方向

fuzz终止评估技术

论文摘要

模糊测试是一种广泛使用的自动测试技术,它使用随机输入来引发程序崩溃,从而显示安全漏洞。一个困难但重要的问题是何时停止模糊测试活动。通常,当崩溃和/或被覆盖代码元素的数量在一定时间内没有增加时,测试活动就会终止。为了避免在发现漏洞前需要一段时间来提升时过早终止,在决定何时终止活动时,代码覆盖率通常比崩溃次数更受青睐。但是,一个项目可能只增加了非安全关键代码的覆盖率,或者重复触发相同的崩溃。由于这些原因,代码覆盖率和崩溃次数往往会高估模糊测试的有效性,不必要地增加测试过程的持续时间和成本。本文探讨了在根据所覆盖的潜在易受攻击函数的饱和度而非触发崩溃或常规函数覆盖率来停止测试活动时,所节省的模糊测试时间与遗漏错误数量之间的权衡。在对30 个开源 C 程序(共 240 个安全漏洞)和 1,280 次模糊测试活动进行的大规模实证评估中,我们首先展示了在已知漏洞(CVE)的软件上训练的二进制分类模型,利用从静态应用程序安全测试工具的发现和成熟的软件度量标准中获得的轻量级机器学习特征,可以可靠地预测(潜在的)漏洞函数。其次,我们证明了我们提出的停止标准可以在崩溃和常规功能覆盖饱和前 6-12 小时终止 24 小时模糊测试活动,同时(平均)在 12.5 个包含的漏洞中漏掉不到 0.5 个。

Fuzzing Deep Learning Compilers

with HirGen

论文作者

Qingchao Shen

论文作者机构

Tianjin University, China

所属方向

面向DL编译器的fuzz

论文摘要

深度学习(DL)编译器广泛用于优化高级DL模型,以便在各种硬件上实现高效部署。它们的质量对编译后的DL模型的质量有着深远的影响。最近的一个漏洞研究显示,高级中间表示(IR)的优化是最容易出错的编译阶段,该阶段的错误占据了所有收集的错误的44.92%。然而,现有的测试技术没有考虑与高级优化(例如高级IR)相关的特性,因此在此阶段发现错误的能力较弱。为了弥合这一差距,我们提出了HirGen,一种自动化测试技术,可以有效地发现高级IR优化中的编码错误。HirGen的设计包括:1)三个覆盖准则,用于生成多样且有效的计算图;2)利用高级IR的语言特性生成多样的IR;3)三个测试准则,其中两个受变形测试和差分测试的启发。HirGen已成功检测到在TVM上发生的21个错误,其中17个错误已确认并修复。此外,我们使用最先进的DL编译器模糊器构建了四个基准,可以覆盖高级优化阶段。我们的实验结果表明,在48小时内,HirGen能够检测到无法被基准测试发现的10个崩溃和不一致性。我们还评估了我们提出的覆盖准则和测试准则的有用性。

Detecting State Inconsistency Bugs 

in DApps via On-Chain Transaction 

Replay and Fuzzing

论文作者

Mingxi Ye

论文作者机构

Sun Yat-sen University, China

所属方向

面向智能合约状态不一致错误的fuzz

论文摘要

去中心化应用(DApps)由运行在区块链上的多个智能合约组成。随着DApp生态系统的日益普及,DApps中的漏洞可能会带来重大影响,比如造成财务损失。识别DApps中的漏洞绝非易事,因为现代DApps涉及多个合约之间的复杂交互。先前的研究要么存在较高的误报率,要么存在漏报问题,因为在分析智能合约时,缺乏精确的上下文信息是确认智能合约漏洞的必要条件。

在本文中,我们提出了一种基于模糊测试的新框架IcyChecker,以有效识别状态不一致(SI)错误——一种可能导致可重入性和复杂模式前置运行等错误的漏洞。与之前的工作不同,IcyChecker利用一组准确的上下文信息通过重放链上历史交易来进行合约模糊测试。此外,IcyChecker不需要设计特定的测试预言(这是其他模糊测试方法所需要的),而是实现了一种新颖的机制来变异一组模糊测试事务序列,并通过观察它们的状态差异进一步识别SI错误。在对排名前100的热门DApps进行的评估中,IcyChecker成功识别了277个SI错误,准确率达87%。通过与其他最先进的工具(如Smartian、Confuzzius和Sailfish)进行比较,我们可以看出IcyChecker不仅发现了更多的SI错误,而且误报率更低,这要归功于其准确的链上数据和独特的模糊测试策略的结合。我们的研究为检测DApps中的智能合约漏洞提供了新思路。

ItyFuzz: Snapshot-Based Fuzzer for

Smart Contract

论文作者

Chaofan Shou

论文作者机构

University of California at Berkeley, USA

所属方向

面向智能合约的fuzz

论文摘要

智能合约是关键的金融工具,其安全性至关重要。然而,由于所有交易背后的持久化区块链状态,智能合约程序很难进行模糊测试。交易序列的突变是复杂的,并且通常会导致输入和程序空间的次优探索。在本文中,我们介绍了一种新颖的基于快照的模糊测试工具IyFuzz 用于测试智能合约。在 IyFuzz 中,我们不再存储交易序列并从中进行变异,而是快照化状态和单例化交易。为了探索有趣的状态,IyFuzz 引入了数据流路径机制,以识别具有更大潜力的状态。IyFuzz 还结合比较路径点来修剪状态空间。通过保持状态的快照,IyFuzz 可以快速合成具体的攻击,如重入攻击。由于 IyFuzz 具有二级响应时间来测试智能合约,它可以用于链上测试,与本地开发测试相比具有许多优势。最后,我们在现实世界的智能合约和一些被黑客攻击的链上 DeFi 项目上评估了 IyFuzz。在指令覆盖率方面,IyFuzz 超过了现有的模糊测试工具,可以快速发现和生成链上项目的现实攻击。

Large Language Models Are Zero-Shot

Fuzzers: Fuzzing Deep-Learning Libraries

via Large Language Models

论文作者

Yinlin Deng

论文作者机构

University of Illinois at Urbana-Champaign, USA

所属方向

面向DL库的fuzz

论文摘要

深度学习(DL)系统在人气方面出现了指数级增长,并在我们的日常生活中无处不在。这些系统建立在流行的DL库(例如TensorFlow和PyTorch)的基础之上,这些库提供了DL系统用以构建模块的API。对于几乎所有依赖DL库的下游DL系统来说,检测这些DL库中的错误对于确保最终用户的效果和安全性至关重要。然而,传统的模糊测试技术对于这样一个具有挑战性的领域几乎无效,因为输入的DL程序需要同时满足输入语言(例如Python)的语法/语义和用于张量计算的DL API输入/形状约束。为了解决这些限制,我们提出了TitanFuzz -第一个直接利用大型语言模型(LLM)来生成用于模糊测试DL库的输入程序的方法。LLM是在数十亿行代码片段上进行训练的巨型模型,并且可以自动生成类似人类的代码片段。我们的关键洞察是,现代LLM也可以在其训练语料库中包含许多调用DL库API的代码片段,因此可以隐式学习语言的语法/语义和复杂的DL API约束,以生成有效的DL程序。具体而言,我们使用生成型和填充型LLM(例如Codex/InCoder)来生成和变异有效/多样的输入DL程序以进行模糊测试。我们的实验结果表明,TitanFuzz在TensorFlow/PyTorch上的代码覆盖率比最先进的模糊测试工具提高了30.38%/50.84%。此外,TitanFuzz能够检测到65个错误,其中44个被确认为先前未知的错误。

本文证明了现代巨型LLM可以被利用来直接进行基于生成和基于变异的模糊测试,这是几十年来一直研究的内容,同时具备完全自动化、可推广性和适用于传统方法(如DL系统)无法应对的领域。我们希望TitanFuzz能够在LLM用于模糊测试的这个

Automated Program Repair from Fuzzing

Perspective

论文作者

Young-jae Kim

论文作者机构

Ulsan National Institute of Science 

and Technology, South Korea

所属方向

面向自动化程序修复的fuzz

论文摘要

在这项工作中,我们提出了一种连接两个紧密相关主题的新方法:模糊测试和自动化程序修复(APR)。本文分为两部分。在第一部分中,我们描述了模糊测试和APR之间的相似之处,两者都可以看作是一个搜索问题。在第二部分中,我们介绍了一种名为Casino的新的补丁调度算法,它从模糊测试的角度设计,以提高搜索效率。我们的实验证明,Casino优于现有的算法。我们还通过分享SimAPR促进开放科学,这是一种可以用来评估新的补丁调度算法的模拟工具。

Green Fuzzer Benchmarking

论文作者

Jiradet Ounjai; Valentin Wüstholz;

Maria Christakis

论文作者机构

所属方向

fuzz数据集

论文摘要

在过去十年中,模糊处理因其在查找漏洞方面的有效性而日益受到重视。然而,由于缺乏标准化的基准测试,模糊测试的评估工作一直面临挑战。为了缓解这一问题,谷歌于2020年发布了开源基准测试平台FuzzBench,该平台被广泛用于精确模糊器基准测试。

然而,一个典型的FuzzBench实验需要运行CPU数年时间。如果再考虑到正在积极开发中的模糊器会根据经验评估任何变化,那么基准测试在计算资源和时间上都会变得非常昂贵。在本文中,我们提出了绿色基准平台GreenBench,与 FuzzBench 相比,它能显著加快模糊器的评估速度,同时保持极高的精度。

EDHOC-Fuzzer: An EDHOC Protocol

State Fuzzer

论文作者

Konstantinos Sagonas; Thanasis Typaldos

论文作者机构

所属方向

面向EDHOC协议的fuzz

论文摘要

EDHOC是由 IETF 提出的一种紧凑、轻量级的验证密钥交换协议,其设计侧重于小信息量,以适用于受限的物联网通信技术。在这篇工具论文中,我们概述了 EDHOC-Fuzzer,这是一种用于实现 EDHOC 客户端和服务器的协议状态模糊器。它利用模型学习生成 EDHOC 实现的状态机模型,捕捉其输入/输出行为。然后,该模型可用于基于模型的测试、指纹识别,或用于分析不符合项、状态机漏洞和安全漏洞。我们将概述 EDHOC-Fuzzer 的架构和使用方法,并举例说明该工具生成的模型以及我们目前的研究成果。

TreeLine and SlackLine: Grammar-Based 

Performance Fuzzing on Coffee Break

论文作者

Ziyad Alseaeed, Michal Yong

论文作者机构

Yangzhou University; 

Ant Group; 

Tsinghua University; 

East China Normal University

所属方向

面向结构文本驱动的程序的fuzz

论文摘要

TreeLine和 SlackLine 是基于语法的模糊器,用于快速发现由无上下文语法描述的丰富结构文本驱动的程序中存在的性能问题。TreeLine 和 SlackLine 的设计目的是在数分钟而不是数小时内,在有效输入空间内搜索性能问题。TreeLine 和 SlackLine 的前端在搜索策略上有所不同(分别为蒙特卡罗树搜索或派生树拼接),但接受相同的语法规范,并依赖共同的后端进行仪器执行。这两个前端的分离有利于其他希望探索前端或后端替代品和扩展功能的研究人员使用。

SymRustC: A Hybrid Fuzzer for Rust

论文作者

Frédéric Tuong, 

Mohammad Omidvar Tehrani, 

Marco Gaboardi, Steven Y. Ko

论文作者机构

Zhejiang University, China;

EPFL, Switzerland

所属方向

面向Rust程序的fuzz

论文摘要

我们介绍了Rust 的混合模糊器SymRustC。SymRustC是混合型的,因为它结合了模糊和协程执行。SymRustC 利用一个名为 SymCC 的现有工具来实现协程执行功能,并利用另一个名为 LibAFL 的现有工具来实现模糊功能。由于 SymCC 利用 LLVM IR(中间表示)进行协程执行,而 Rust 编译器使用 LLVM 作为后端,因此我们将 SymCC 与 Rust 编译器集成,以利用 Rust 程序进行协程执行。LibAFL 提供了一个开发模糊器的框架,我们利用它开发了一个混合模糊器,将模糊和协程执行结合在一起。我们将讨论我们的实现以及四个案例研究,以证明 SymRustC 可以生成发现 Rust 程序错误的输入

1dFuzz: Reproduce 1-Day Vulnerabilities

with Directed Differential Fuzzing

论文作者

Songtao Yang, Yubo He, Kaixiang Chen, 

Zheyu Ma, Xiapu Luo, Yong Xie, Jianjun Chen, 

Chao Zhang

论文作者机构

Tsinghua University;

State Key Laboratory of MathematicalEngineering and Advanced Computing ,Zhengzhou;

Hong Kong Polytechnic University;

Qinghai University

所属方向

面向1day漏洞的fuzz

论文摘要

1day漏洞在实践中很常见,对最终用户构成了严重威胁,因为对手可以从发布的补丁中学习,找到它们并加以利用。再现1day漏洞对防御者来说也是至关重要的,例如,阻止针对1day漏洞的攻击流量。影响1day漏洞识别和触发高效性的一个核心问题是安全补丁的独特功能是什么。在进行了大规模的实证研究后,我们指出补丁的一个共同且独特的特征是尾部调用序列(TCS),并在本文中提出了一种新的有向差分模糊解决方案1dFuzz,以有效地再现1day的漏洞。基于TCS功能,我们提出了一种能够通过静态分析找到候选补丁位置的定位器1dLoc,一种用于定向模糊的基于TCS的新距离度量,以及一种能够在模糊过程中捕获1day漏洞的PoC的新检测器1dSan。我们在11种不同的设置中对一组真实世界的软件漏洞进行了系统评估。结果显示,1dFuzz显著优于最先进的(SOTA)基线,可以在43%的时间内发现2.26倍以上的1day漏洞。

Guiding Greybox Fuzzing with

Mutation Testing

论文作者

Vasudev Vikram, Isabella Laybourn, Ao Li, 

Nicole Nair, Kelton Obrien, Rafaello Sanna, 

Rohan Padhye

论文作者机构

Carnegie Mellon University

Pittsburgh, PA, USA;

Swarthmore College, Swarthmore, PA, USA;

University of Minnesota, Minneapolis, MN, USA;

University of Rochester, Rochester, NY, USA

所属方向

基于突变测试的fuzz

论文摘要

灰盒模糊测试和突变测试是软件测试研究中两个流行但大多独立的领域,迄今为止重叠有限。灰盒模糊测试处理通常用于搜索新的bug,主要使用代码覆盖率来选择要保存的输入。在评估回归测试的质量时,突变测试主要用作代码覆盖率的更强替代方案;其思想是评估识别目标程序中人为所注入错误的能力。但是,如果我们想使用灰盒模糊来完成高质量的回归测试呢?

在本文中,我们开发并评估了Mu2,这是一个基于Java的框架,用于将突变分析纳入灰盒模糊循环,目的是生成一个具有高突变分数的测试输入语料库。Mu2利用差分预言机来识别在不导致崩溃的情况下执行有趣的程序行为的输入。本文描述了在Mu2中实现的几个动态优化,以克服对每个模糊器生成的输入执行突变分析的高成本问题。这些优化引入了模糊吞吐量和突变杀伤能力的权衡,我们在五个真实世界的Java基准上对其进行了实证评估。总体而言,Mu2的变体能够合成具有比最先进的Java模糊器Zest更高的突变分数的测试输入语料库。

Fuzzing Embedded Systems using 

Debug Interfaces

论文作者

Max Eisele, Daniel Ebert, 

Christopher Huth, Andreas Zeller

论文作者机构

Robert Bosch GmbH, Renningen, Germany;

Saarland University, Saarbrücken, Germany;

Robert Bosch GmbH, Stuttgart, Germany;

CISPA Helmholtz Center for Information 

Security, Saarbrücken, Germany

所属方向

面向嵌入式系统的fuzz

论文摘要

对嵌入式系统进行模糊处理是很困难的。它们的关键组件——微控制器——高度多样化,无法轻松虚拟化;它们的软件可能不会被更改或插入指令。然而,我们观察到,许多(即使可能不是大多数)微控制器都具有调试接口,调试探针(通常可通过GDB、GNU调试器进行控制)可以通过该接口设置有限数量的硬件断点。使用这些,我们提取部分覆盖反馈,即使是对于未经检测的二进制代码;从而能够通过通用的、广泛的机制对嵌入式系统进行有效的模糊处理。在四个不同的微控制器板上进行评估时,我们的原型实现GDBFuzz快速达到高代码覆盖率,并检测已知和新的漏洞。由于GDBFuzz可以应用于GDB可以调试的任何程序和系统,因此它是要求最低、用途最广泛的覆盖引导模糊器之一。

GrayC: Greybox Fuzzing of Compilers

and Analysers for C

论文作者

Karine Even-Mendoza, Arindam Sharma, Alastair F. Donaldson, Cristian Cadar

论文作者机构

Department of Computing, 

Imperial College London

所属方向

面向C编译器的fuzz

论文摘要

应用于编译器和代码分析器的模糊测试在LLVM、GCC和Frama-C等广泛使用的框架中发现并修复了大量错误。大多数此类模糊技术都采用了黑盒方法,编译器和代码分析器开始对此类模糊器相对免疫。

受这种类型的灰盒模糊处理在其他应用领域成功的启发,我们提出了一种用于模糊处理C编译器和代码分析器的覆盖定向、基于突变的方法。在这种情况下应用基于突变的模糊处理的主要挑战是,不成熟的突变可能会生成不编译的程序。这样的程序对于发现影响优化、分析和代码生成例程的深层错误没有用处。

我们为C编译器和分析器设计了一种新的灰盒模糊器,方法是开发一组新的突变来针对常见的C结构,并转换模糊程序,使其产生有意义的输出,允许将差分测试用作测试预言机,并为模糊器生成的程序集成到编译器和代码分析器回归测试套件中铺平道路。

我们已经在GrayC中实现了我们的方法,GrayC是一种新的基于LibFuzzer的开源工具,目前的实验表明,与其他基于突变的方法(包括Clang Fuzzer、PolyGlot和类似于LangFuzze的技术)相比,它在编译器和分析器的中后端阶段提供了更多的覆盖范围。

我们使用GrayC识别了30个已确认的编译器和代码分析器错误:25个以前未知的错误(其中22个已经根据我们的报告修复)和5个在我们发现它们之前不久独立报告的已确认错误。另外3个错误报告正在调查中。除上述结果外,我们还为Clang/LLVM测试套件贡献了GrayC生成的24个简化版本的覆盖增强测试用例,目标是LLVM代码库中的78个先前未发现的函数。

Rare Path Guided Fuzzing

论文作者

Seemanta Saha,Laboni Sarker, Md Sha uzzaman, 

Chaofan Shou, Albert Li, Ganesh Sankaran, Tev k Bultan

论文作者机构

University of California Santa Barbara, 

Santa Barbaray

所属方向

种子生成技术

论文摘要

从一个随机的初始种子开始,模糊器搜索触发bug或漏洞的输入。然而,模糊器通常无法为受限制分支条件保护的程序路径生成输入。在本文中,我们证明了通过首先识别程序中的稀有路径(即具有路径约束的程序路径,这些路径约束不太可能被随机输入生成所满足),然后生成触发稀有路径的输入/种子,可以提高模糊工具的覆盖率。特别地,我们提出了以下技术:1)使用定量符号分析来识别稀有路径,2)生成可以使用路径引导的一致执行来探索这些稀有路径的输入。我们将这些输入作为初始种子集提供给三个现有技术的模糊器。我们对一组程序的实验评估表明,与随机初始种子相比,模糊器使用基于稀有路径的种子集实现了更好的覆盖。

OOPSLA

Accelerating Fuzzing through 

Prefix-Guided Execution

论文作者

ShaoHua Li,ZhenDong Su

论文作者机构

ETH Zurich, Switzerland

所属方向

fuzz效率提升技术

论文摘要

覆盖率引导的模糊测试是发现软件缺陷和漏洞最有效的方法之一。其从种子输入开始执行所有突变测试,依此选出覆盖率增加的测试。然而,执行所有突变测试会导致显著的性能损失——大多数突变测试会被抛弃,因为他们不会增加代码覆盖率。因此,决定一个测试是否会增加代码覆盖率而不实际执行它是有益的,同时也是个矛盾的挑战。在这篇文章中,我们提出了前缀引导执行(PGE)的概念来应对这一挑战。PGE利用两个关键现象来观察结果:(1)只有一小部分的突变测试增加了覆盖率,因此需要完全执行。(2)一次测试是否增加覆盖率可以从其部分执行中准确推断。PGE监控测试的执行,并在执行前缀指示该次测试不太可能增加覆盖率时提前终止。

为了证明PGE的潜力,我们在AFL++上实现了一个原型,我们将其称为AFL++-PGE。MAGMA是一个真实的基准集,由来自九个流行的真实项目中的21个程序组成,我们在该数据集上评估AFL++-PGE。结果表明,在48小时的模糊测试后,AFL++-PGE会更多、更快的发现bug,并实现了更高的覆盖率。前缀引导的执行是通用的且能够增强基于AFL的模糊测试器家族。

Towards Better Semantics Exploration 

for Browser Fuzzing

论文作者

ChiJin Zhou, Quan Zhang, LiHua Guo, 

MingZhe Wang, Yu Jiang, Qing Liao, 

ZhiYong Wu, ShanShan Li, Bin Gu

论文作者机构

Tsinghua University, China

Harbin Institute of Technology, China

National University of Defense Technology, China

Beijing Institute of Control Engineering, China

所属方向

面向web浏览器的fuzz

论文摘要

web浏览器表现出丰富的语义,可以实现大量的基于web的功能。然而,这些复杂的语义对于浏览器的实现和测试提出了重大挑战。例如,模糊测试是一种广泛采用的测试技术,通常依赖于手写的无上下文文法(CFGs)来自动生成输入。然而,这些CFG在充分建模浏览器的复杂语义方面存在不足,导致生成的输入仅覆盖部分语义,且容易出现语义错误。在本文中,我们提出了SaGe,一种通过使用包含语义信息的生产语境敏感语法(PCSGs)来增强浏览器模糊处理能力的自动化方法。我们的方法先从W3C标准中提取一个基本的CFG,然后反复增强该CFG依此创建PCSG。由此产生的PCSG使我们的模糊测试器能够生成探索更大范围的浏览器语义的输入,同时提高语义正确输入的比例。为了评估 SaGe 的效率,我们在 Chrome、Safari 和 Firefox 等主流浏览器上进行了 24 小时的模糊测试。与现有的浏览器模糊器相比,我们的方法表现出了更好的性能,边缘覆盖率提高了6.03%-277.80%,语义正确率提高了3.56%-161.71% ,发现的漏洞数量也增加了一倍。此外,我们还在三种浏览器中发现了62个漏洞,其中40个已确认,10个是已分配的CVE。

 FSE

Revisiting Neural Program Smoothing 

for Fuzzing

论文作者

Maria-Irina Nicolae,

Max Eisele,

Andreas Zeller

论文作者机构

Robert Bosch GmbH, Stuttgart, Germany;

Saarland University, Saarbrücken, Germany;

CISPA Helmholtz Center for Information Security, 

Saarbrücken, Germany

所属方向

变异技术

论文摘要

在自动生成输入的随机测试(模糊测试)方面,由于其能够自动暴露程序漏洞的能力,已经取得了显著的进展。模糊测试生成大量的数据,因此非常适合应用机器学习(ML)。神经程序平滑化(Neural Program Smoothing)是一类特定的以ML为指导的模糊测试工具,旨在使用神经网络作为对程序目标的平滑逼近,以生成新的测试案例。

在这篇论文中,作者对神经程序平滑化(NPS)模糊测试工具进行了最广泛的评估,与标准的灰盒模糊测试工具进行比较(超过11个CPU年和5.5个GPU年),并做出了以下贡献:我们发现NPS模糊测试工具的原始性能声明是不成立的;这个差距与之前研究中的基础、实现和实验限制有关。我们首次深入分析了机器学习和基于梯度的变异在NPS中产生的贡献。我们实现了Neuzz++,表明如何提高NPS模糊测试工具的性能,但标准的灰盒模糊测试工具几乎总是优于基于NPS的模糊测试工具。因此,我们提出了针对基于机器学习的模糊测试进行基准测试的新准则,并提出了MLFuzz,这是一个具有GPU访问权限的平台,用于对基于ML的模糊测试工具进行简单且可重复的评估。

Enhancing Coverage-Guided Fuzzing 

via Phantom Program

论文作者

Mingyuan Wu, Kunqiu Chen,Qi Luo, 

Jiahong Xiang, Ji Qi, Junjie Chen, 

Heming Cui, Yuqun Zhang

论文作者机构

Southern University of Science and Technology, Shenzhen, China;

University of Hong Kong, Hong Kong, China;

Tianjin University, Tianjin, China

所属方向

覆盖率引导技术

论文摘要

在覆盖引导的模糊测试工具中,通常采用的种子往往被低效利用,因为它们只能探索有限的程序状态,而所有的执行都必须遵守严格的程序依赖关系,只有有限的种子能够访问这些依赖关系。此外,即使在迭代执行这些有限的种子时,模糊测试工具也必须重复访问已经覆盖的程序状态,才能发现新的状态。这些事实表明,现有的覆盖引导的模糊测试策略还没有充分利用种子在程序状态上的探索能力。为了解决这些问题,我们提出了一种覆盖引导的模糊测试工具,名为MirageFuzz,以减轻执行种子时的程序依赖关系,从而增强其在程序状态上的探索能力。具体而言,MirageFuzz首先通过减少目标程序中与条件语句相对应的程序依赖关系(保留其原始语义)来创建目标程序的“幻影”程序。因此,MirageFuzz同时进行源模糊测试和幻影模糊测试,即对原始程序和幻影程序进行同时模糊测试。然后,MirageFuzz采用基于污点的变异机制,通过使用幻影模糊测试得到的相应条件值,更新源模糊测试中给定种子的目标条件语句,生成一个新的种子。为了评估MirageFuzz的有效性,我们构建了一个基准测试套件,包含18个最近模糊测试论文中常用的项目,并选择了七个开源模糊测试工具作为基准进行性能比较。实验结果表明,MirageFuzz的性能优于我们的基准模糊测试工具,平均提升了13.42%至77.96%。此外,MirageFuzz发现了29个以前未知的漏洞,其中4个已被确认,并且有3个已被相应的开发人员修复。

Co-dependence Aware Fuzzing 

for Dataflow-Based Big Data Analytics

论文作者

Ahmad Humayun, Miryung Kim, 

Muhammad Ali Gulzar

论文作者机构

Virginia Tech, Blacksburg, USA;

University of California at Los Angeles, 

Los Angeles, USA

所属方向

面向大数据应用程序的fuzz

论文摘要

数据密集型可扩展演算由于对大数据分析需求的增加而变得流行起来。例如,Apache Spark和Hadoop允许开发人员编写基于数据流的应用程序,使用自定义逻辑处理数据。然而,测试此类应用程序是困难的。首先,这些应用程序通常以多个数据集作为输入。其次,与SQL不同,这些数据集没有明确的模式,每个非结构化(或半结构化)的数据集在运行时被分割和解析。此外,数据流操作符(例如join)在多个数据集的字段之间创建了隐式的相互依赖约束。有效且高效的测试技术必须在行和列的级别上分析多个数据集不同区域之间的相互依赖,并在相互依赖的区域上协同进行输入突变。

我们提出了DepFuzz来增加对基于数据流的大数据应用程序的模糊测试的效果和效率。DepFuzz对目标的测试有两部分。首先,它跟踪哪些代码段操作哪些数据集、哪些行和哪些列。然后,通过分析数据流操作符(例如join和groupByKey)与用户定义函数(UDFs)的语义相结合,DepFuzz生成测试数据,以便达到应用程序代码中难以到达的区域。在真实的大数据应用程序中,DepFuzz发现了比Jazzer(一种用于Java字节码的最先进的商业模糊测试工具)多3.4倍的故障,并在一半的时间内实现了比Jazzer更高的语句覆盖率。它在暴露更深层次的语义故障方面优于之前的DISC(数据密集型可扩展计算)测试方法,特别是当多个数据集通过数据流操作符进行复杂交互时。

SJFuzz: Seed and Mutator 

Scheduling for JVM Fuzzing

论文作者

 Mingyuan Wu, Yicheng Ouyang, Minghai Lu, 

Junjie Chen, Yingquan Zhao, Heming Cui, 

Guowei Yang, Yuqun Zhang

论文作者机构

Southern University of Science and Technology, Shenzhen, China;

University of Hong Kong, Hong Kong, China;

Tianjin University, Tianjin, China;

University of Queensland, Queensland, Australia

所属方向

面向Java虚拟机的fuzz

论文摘要

尽管Java虚拟机(JVM)在确保Java应用程序正确执行方面起着至关重要的作用,但通过在JVM上生成和运行类文件来测试JVM可能会非常具有挑战性。现有的技术(如ClassFuzz和Classming)尝试利用模糊测试和差异测试的能力来应对JVM的复杂性,通过暴露不同JVM之间的执行结果差异(即JVM间的差异)来进行测试分析。然而,它们采用的模糊测试工具的引导不够充分,因为它们缺乏良好设计的种子和变异器调度机制,导致差异测试效率低下。为了解决这些问题,本文提出了SJFuzz,这是第一个具有种子和变异器调度机制的JVM模糊测试框架,用于自动化JVM差异测试。总体而言,SJFuzz旨在通过控制流变异器对类文件进行变异,以便暴露JVM间的差异。为此,SJFuzz根据差异和多样性指导,对种子(类文件)进行变异的调度。同时,SJFuzz还对变异器进行调度以增加类文件生成的多样性。为了评估SJFuzz,我们对多个代表性的真实世界JVM进行了广泛的研究,实验结果显示,与基于变异和生成的JVM模糊测试工具相比,SJFuzz在JVM间差异暴露和类文件多样性方面表现显著优于现有技术。此外,SJFuzz成功报告了46个潜在的JVM问题,其中20个被确认为漏洞,并且JVM开发人员已经修复了16个漏洞。

Metamong: Detecting Render-Update

Bugs in Web Browsers through Fuzzing

论文作者

Suhwan Song, Byoungyoung Lee

论文作者机构

Seoul National University, Seoul, South Korea

所属方向

面向浏览器渲染更新错误的fuzz

论文摘要

渲染更新错误是指当Web浏览器由于错误的渲染更新而产生错误的渲染输出。这种渲染更新错误严重影响了Web浏览器的可用性和可靠性。然而,我们发现检测渲染更新错误是具有挑战性的,因为渲染更新错误是一种语义错误——给定一个渲染结果,由于DOM和CSS的复杂渲染规范,很难确定它是否正确。因此,与内存损坏错误不同,错误的渲染输出不会引发违规或崩溃。在实践中,渲染更新错误的检测依赖于领域专家耗时的手动分析来确定错误。

本文提出了Metamong,一个通过差异化模糊测试来自动检测渲染更新错误而无误报问题的框架。Metamong具有两个关键组成部分:(i)页面变异器和(ii)渲染更新预言机。页面变异器生成渲染更新操作,改变Web页面的内容,以触发渲染更新错误。渲染更新预言机利用HTML标准规则(称为yielding),生成给定Web页面的正确渲染结果。结合这些组件,Metamong创建了两个HTML文件,每个文件构造相同的Web页面,但只有一个文件会引发渲染更新。然后,它使用差异化测试来比较它们的渲染输出,以确定是否存在错误。我们实现了Metamong的原型,对流行的浏览器Chrome和Firefox进行了差异化模糊测试。到目前为止,Metamong发现了19个新的渲染更新错误,其中17个在Chrome中,两个在Firefox中。所有这些错误都得到了各个浏览器供应商的确认,其中五个已经修复,这证明了Metamong在识别渲染更新错误方面的实际有效性。

Property-Based Fuzzing for Finding

Data Manipulation Errors in Android Apps

论文作者

Jingling Sun, Ting Su, Jiayi Jiang, 

Jue Wang, Geguang Pu, 

Zhendong Su

论文作者机构

Shanghai Key Laboratory of Trustworthy

Computing, East China Normal University, China;

Department of Computer Science, 

ETH Zurich Switzerland

所属方向

面向安卓程序数据操作错误的fuzz

论文摘要

与许多软件应用程序一样,数据操作功能(DMF)在Android 应用程序中也很普遍,它们执行常见的 CRUD 操作(创建、读取、更新、删除)来处理特定于应用程序的数据。因此,确保这些 DMF 的正确性对于许多核心应用程序功能来说至关重要。

然而,与DMF 相关的错误(称为数据操作错误,DME),尤其是那些非崩溃逻辑错误,普遍存在但难以发现。为此,受基于属性的测试的启发,我们引入了一种基于属性的模糊方法,以有效查找 Android 应用程序中的 DME。我们的主要想法是,给定某种感兴趣的应用程序数据,随机交错排列相关的 DMF 和其他可能的事件,以探索各种应用程序状态,从而进行彻底验证。具体来说,我们的方法以基于(数据)模型的属性来描述 DMF,并利用数据模型与用户界面布局之间的一致性作为处理程序来进行属性检查。DMF 的属性是由人类根据特定应用程序的特点指定的。为了支持我们方法的应用,我们实施了一个自动化图形用户界面测试工具 PBFDroid。我们在 20 个真实的 Android 应用程序上对 PBFDroid 进行了评估,并成功地在 18 个应用程序中发现了 30 个独特的、以前未知的错误。在这 30 个错误中,29 个是 DME(22 个是非崩溃逻辑错误,7 个是崩溃错误)。迄今为止,已确认 19 个 9 个已经修复。这些错误中很多都是非琐碎的 并导致不同类型的应用程序故障。我们的进一步评估

Leveraging Hardware Probes and

Optimizations for Accelerating

Fuzz Testing of Heterogeneous 

Applications

论文作者

Jiyuan Wang, Qian Zhang, Hongbo Rong, 

Guoqing Harry Xu, Miryung Kim

论文作者机构

University of California, Los Angeles USA;

Intel Lab USA

所属方向

面向异构架构程序的fuzz

论文摘要

在计算机体系结构领域,人们对将异构性和专业化结合在一起的兴趣与日俱增。开发人员可以创建由主机代码和内核代码组成的异构应用程序。开发人员可以创建由主机代码和内核代码组成的异构应用程序,其中计算密集型的内核可以从CPU 卸载到硬件加速器。测试在真正的异构架构上测试此类应用程序极具挑战性。

因为内核是黑盒子,不提供任何有关内核内部执行的信息,从而无法诊断诸如静默挂起或意外结果等问题。此外,异构基因应用程序的输入通常是大型矩阵,这导致了巨大的的搜索空间。

我们提出了一种新的模糊测试技术--HFuzz,以便在真正的异构架构上进行有效测试。HFuzz的目标是硬件内核的可观察性和测试效率。首先,HFuzz自动生成测试指导。其次,它通过将计算密集型输入突变卸载到硬件内核来快速探索输入空间。第三,HFuzz 利用四种 FPGA 级优化(包括循环),瘫痪模糊处理并实现快速片上内存访问。四种 FPGA 级优化,包括循环解卷、香农化、数据预加载和动态内核共享。

我们在英特尔公司的七个开源OneAPI 课题上对 HFuzz 进行了评估。通过硬件加速的输入空间探索,HFuzz 将模糊测试速度提高了 4.7 倍。通过将硬件探针与软件监控器相结合HFuzz 在 4 小时内发现了 33 个缺陷,并揭示了25 个独特的、意外的行为症状,这些症状仅靠基于软件的监控是无法发现的。HFuzz 是首个设计硬件优化,以加速模糊测试。

A Generative and Mutational Approach

for Synthesizing Bug-Exposing Test

Cases to Guide Compiler Fuzzing

论文作者

Guixin Ye, Tianmin Hu, 

Zhanyong Tang, Zhenye Fan, 

Shin Hwei Tan, Bo Zhang, 

Wenxiang Qian, Zheng Wang

论文作者机构

Northwest University, China;

Concordia University, Canada;

Tencent Inc., China;

University of Leeds, United Kingdom

所属方向

面向编译器的fuzz

论文摘要

随机测试用例生成或模糊测试是一种可行的方法,可用于编译器漏洞的可行方法。遗憾的是,现代编译器的复杂性使编译器模糊处理费时且效率低下。我们提出了ComFuzz,这是一个专注于编译器模糊测试的框架。ComFuzz 的目标是提高编译器模糊测试的效率。通过重点测试可能引发编译器错误的组件和语言特点,提高编译器模糊测试的效率。我们的主要观点是,人类开发人员往往会在不同的编译器实现中犯一些常见的重复错误。因此,我们可以利用以前报告过的程序语言暴露错误的测试用例来测试新的编译器实现。为此ComFuzz 采用深度学习技术,建立测试程序生成器。有了机器生成的生成测试程序后,ComFuzz 将利用一套精心设计的突变规则来提高测试程序的覆盖率和测试用例的错误暴露能力。我们评估了 ComFuzz在 11 种 JS 和 Java 编程语言的编译器上进行了评估。在260 个小时的自动测试运行中,我们在 9 个编译器中发现了 33 个独特的错误。其中 29 个已被确认,22 个已被确认、包括一个 API 文档缺陷在内的 22 个错误已被开发员修复。我们还将 ComFuzz 与之前的八款模糊器进行了比较进行了比较。在 24 小时的比较测试中,ComFuzz发现的错误至少比最先进的基线多 1.5 倍。

ASE

Precise Data-Driven Approximation 

for Program Analysis via Fuzzing

论文作者

Nikhil Parasaram;

Earl T. Barr;

Sergey Mechtaev;

Marcel Böhme

论文作者机构

UCL, UK;MPI-SP, Germany

所属方向

面向程序分析的fuzz

论文摘要

程序分析技术,如抽象解释和符号执行,由于过度近似和近似不足而存在不精确性,导致误报和漏报。为了减轻这种不精确性,我们提出了一种新颖的数据结构,程序状态概率(PSP),它利用执行样本对可达程序状态进行概率近似。这种近似的核心思想是,到达给定状态的概率差异很大,因此我们可以在分析的精确性大幅提高的同时,承担一定的不准确性或不完整性的概率,而这在分析的目标是查找错误时是可以接受的。具体而言,PSP通过忽略被过逼近认为可行的低概率状态,并识别被欠逼近认为不可行的高概率状态,增强了现有分析方法。我们将PSP应用于三个领域。首先,我们展示了PSP在Clam抽象解释器中提高了MCC指标从0.09到0.27,F1得分从0.22到0.34的精度。其次,我们证明了基于PSP的符号执行搜索策略,该策略优先考虑具有更高概率的程序状态,相比最先进的技术,能够增加发现的错误数量,并减少求解器调用的次数。第三,基于PSP的程序修复补丁排序策略将平均补丁排名降低了26%。

Fuzzing for CPS Mutation Testing

论文作者

Jaekwon Lee;Enrico Viganò;

Oscar Cornejo;Fabrizio Pastore;

Lionel Briand

论文作者机构

University of Luxembourg, Luxembourg, LU;

University of Ottawa, Ottawa, CA

所属方向

面向变异测试的fuzz

论文摘要

变异测试可以帮助减少发布有缺陷软件的风险。因此,它是开发运行在安全关键的物理网络系统(CPS)中的嵌入式软件的一种理想实践。然而,针对C和C++软件(CPS软件的两种典型语言)的变异测试的最新测试数据生成技术依赖于符号执行,其局限性阻碍了其应用(例如,它无法测试黑盒组件)。利用已被证明在C和C++软件中有效的模糊测试,我们提出了一种变异测试方法。模糊测试可以自动生成多样化的测试输入,以多种方式执行程序分支,并因此在不同的程序状态下执行语句,从而最大限度地增加杀死变异体(我们的目标)的可能性。我们对目前在轨道上使用的卫星系统中的软件组件进行了实证评估。我们的实证评估显示,基于模糊测试的变异测试比符号执行杀死了更高比例的存活变异体(即高达额外的47个百分点)。此外,当无法应用符号执行时,模糊测试提供了显著的优势(即杀死了高达41%的变异体)。我们的研究是第一个比较模糊测试和符号执行在变异测试中的研究,我们的结果为开发专用于变异测试的模糊测试工具提供了指导。

MLIRSmith: Random Program

Generation for Fuzzing MLIR Compiler

Infrastructure

论文作者

Haoyu Wang;Junjie Chen;Chuyue Xie;Shuang 

Liu;Zan Wang;Qingchao Shen;Yingquan Zhao

论文作者机构

College of Intelligence and Computing, 

Tianjin University, Tianjin, China

所属方向

面向多层中间表示编译器的fuzz

论文摘要

MLIR(多层中间表示)编译器基础设施近年来在支持构建编译器方面越来越受欢迎。MLIR编译器基础设施并没有为每个领域设计一个新的单一抽象中间表示,而是提供了系统性的传递以支持多种功能,从而共同造福多个领域,并引入了方言以支持MLIR中不同级别的抽象。由于它在编译器社区中扮演着基础性的角色,因此确保其质量至关重要。在这项工作中,我们为MLIR编译器基础设施提出了第一种模糊测试技术MLIRSmith。MLIRSmith采用两阶段策略来生成有效且多样化的MLIR程序,首先根据扩展的MLIR语法规则构建多样化的程序模板,然后通过我们设计的上下文敏感语法引导模板实例化来生成有效的MLIR程序。将MLIRSmith应用于最新版本的MLIR编译器基础设施后,我们检测到了53个以前未知的错误,其中49/38个已被开发人员确认/修复。我们还将NNSmith(深度学习编译器的高级程序生成器)生成的高级程序转换为MLIR程序,以间接地对MLIR编译器基础设施进行模糊测试。在相同的测试时间内,MLIRSmith通过检测比间接技术多328.57%的错误,并覆盖MLIR编译器基础设施中多194.67%/225.87%的行/分支,从而大大优于这种间接技术。

 PhyFu: Fuzzing Modern Physics 

Simulation Engines

论文作者

Dongwei Xiao;Zhibo Liu;Shuai Wang

论文作者机构

The Hong Kong University of Science

and Technology, Hong Kong, China

所属方向

面向物理模拟引擎的fuzz

论文摘要

物理模拟引擎(PSE)是一种模拟物理环境和对象的软件系统。现代PSE具有正向和反向模拟功能,其中正向阶段预测模拟系统的行为,而反向阶段为基于学习的控制任务(例如机器人臂学习抓取物品)提供梯度(指导)。这样,现代PSE为基于学习的控制方法提供了有前景的支持。迄今为止,PSE已广泛应用于各种高盈利的商业应用中,例如游戏、电影、虚拟现实(VR)和机器人技术。尽管学术界和工业制造商(如Google和NVIDIA)对PSE的开发和使用非常繁荣,但PSE可能会产生错误的模拟,这可能导致从娱乐中的不良用户体验到涉及机器人技术的制造和外科手术中的事故等负面结果。本文介绍了专为PSE设计的模糊测试框架PhyFu,以揭示正向和反向模拟阶段中的错误。PhyFu会改变初始状态并断言被测PSE是否与基本物理定律(PLs)保持一致。我们进一步使用反馈驱动的测试输入调度来指导和加速错误搜索。我们对四个PSE的研究涵盖了主流的工业供应商(Google和NVIDIA)以及学术产品。我们成功发现了超过5K个错误触发输入,这些输入生成了跨越PSE整个软件堆栈的错误模拟结果。

 VD-Guard: DMA Guided Fuzzing 

for Hypervisor Virtual Device

论文作者

Yuwei Liu; Siqi Chen; Yuchong Xie;

Yanhao Wang; Libo Chen; Bin Wang;

Yingming Zeng; Zhi Xue; Purui Su

论文作者机构

TCA/SKLCS, Institute of Software, 

Chinese Academy of Sciences;

University of Chinese Academy of Sciences;

Shanghai Jiao Tong University;

Beijing Institute of Computer Technology

and Applications

所属方向

面向虚拟机的fuzz

论文摘要

虚拟化已广泛应用于各种场景,例如云计算。虚拟化Hypervisor作为其核心技术,通过虚拟设备共享物理机资源提升了效率。 然而,由于虚拟设备上的设计或实现方案存在缺陷,虚拟化管理程序也带来了重大的安全风险。 尽管已经提出了多种方法来检测虚拟设备中的漏洞,但由于缺少与 MMIO/PIO 和 DMA 操作相关的关键信息来指导其动态方法,仍然无法有效地发现漏洞。 在本文中,我们提出了一种混合方法 VD-GUARD 来检测虚拟设备中的漏洞。 具体来说,它首先利用静态控制流分析来跟踪从虚拟设备的各个数据入口点(MMIO/PIO 函数)到关键调度点(DMA 函数)的调用轨迹,并通过静态分析和有限的模糊测试生成可以触发此调用轨迹的种子,然后,将这些种子作为输入,并利用 DMA 引导模糊测试来发现错误。 为了验证 Vd-guard 的有效性,我们基于之前的工作构建了一个数据集,其中包括 QEMU 中的 10 个错误, 在此基础上Vd-guard 的性能优于最先进的虚拟机管理程序模糊器 Morphuzz。 Vd-guard还在QEMU和VirtualBox中发现了4个新漏洞,所有这些漏洞均已得到确认并修复(已分配3个CVE ID)。

Scalable Industrial Control System

Analysis via XAI-Based Gray-Box Fuzzing

论文作者

Justin Kur;Jingshu Chen;Jun Huang

论文作者机构

Oakland University;

City University of Hong Kong

所属方向

面向工业控制系统的fuzz

论文摘要

分析工业控制系统的传统方法依赖于白盒分析或黑盒模糊。然而,白盒方法依赖于复杂的专业领域知识,而黑盒方法则受到状态爆炸的影响,因此在分析涉及大量传感器和执行器的真实ICS 时,其扩展性较差。为了解决这些局限性,我们提出了基于 XAI 的灰盒模糊法,这是一种利用可解释人工智能和 ICS 机器学习建模的新方法,可准确识别对 ICS 安全至关重要的一小部分执行器,从而在不依赖领域专业知识的情况下显著缩小状态空间。实验结果表明,与传统的黑盒方法相比,我们的方法能准确解释 ICS 模型,并将模糊处理速度显著提高了 64 倍。

 Zero-Config Fuzzing for

Microservices

论文作者

Wei Wang; Andrei Benea; Franjo Ivancic

论文作者机构

Google Inc.

所属方向

面向微服务架构的fuzz

论文摘要

微服务范式是一种流行的软件开发模式,它将大型应用程序分解成较小的、独立的服务。虽然这种方法具有可扩展性、敏捷性和灵活性等优势,但也带来了新的安全挑战。本文介绍了一种利用模糊测试确保微服务架构安全的新方法。众所周知,模糊测试是通过向软件输入意想不到的或随机的输入来发现软件中的编程错误。在本文中,我们为微服务提出了一种零配置模糊测试生成技术,它可以通过改变传入请求和来自依赖服务的后台响应,最大限度地覆盖内部状态。我们成功地在谷歌内部微服务平台上构建的95% 以上的 C++ 服务中部署了我们的技术。它报告并修复了实际微服务应用程序中的数千个错误。

SpecFuzzer: A Tool for Inferring Class

Specifications via 

Grammar-Based Fuzzing

论文作者

Facundo Molina;

Marcelo d'Amorim;

Nazareno Aguirre

论文作者机构

IMDEA Software Institute, Madrid, Spain;

North Carolina State University, Raleigh, USA;

University of Rio Cuarto and CONICET, 

Rio Cuarto, Argentina

所属方向

面向类规范的fuzz

论文摘要

在面向对象设计中,类规范主要用于表达描述类方法预期行为和类对象约束的属性。虽然这些规范的存在对测试生成、错误查找和自动调试等各种软件工程任务非常重要,但开发人员很少编写这些规范。在本工具演示中,我们介绍了SPEcFuzZER 的详细信息,该工具旨在通过结合使用基于语法的模糊处理、动态不变量检测和突变分析来自动推断 Java 类的规范,从而缓解编写类规范的问题。给定一个正在分析的类,SPEcFuzZER 使用:(i) 从该类自动提取的语法中生成的候选断言生成器;(ii) 动态不变量检测器(Daikon),以丢弃测试套件无效的断言;(iii) 基于突变的机制,对断言进行聚类和排序,从而将类似的约束归为一组,并优先处理较强的断言。该工具可在 GitHub 上找到:

https://github.com/facumolina/specfuzzer,演示视频可在 YouTube 上找到:

https://youtu.be/IfakNCbzOUg。

Improving AFLGo's Directed Fuzzing

by Considering Indirect Function Calls

论文作者

Fabian Jezuita

论文作者机构

Quality Engineering(SQC) Fraunhofer Institute for 

Open Communication Systems

所属方向

定向模糊测试技术

论文摘要

定向模糊测试是一种复杂的安全测试技术,旨在找到软件系统特定位置的漏洞。因此,它在需要针对被测系统(SUT)预定义部分的情况下使用。定向模糊测试器AFLGo利用被测系统的抽象表示,如调用图和控制流程图来完成定向。但这些抽象表示没有考虑到间接函数调用,更具体地说是函数指针。这可能会误导AFLGo引导测试到所需位置的过程。最坏情况下甚至可能完全破坏定向。

本篇文章介绍了Marauder's Map,一种AFLGo的扩展,它纠正了该问题。我们讨论了它的实现并对各种被测系统进行了实验,以研究AFLGo的定向模糊测试如何在考虑间接函数调用的条件下受益。结果表明,Marauder's Map检测漏洞的速度比未更改的AFLGo 版本快五倍。

以上就是本次分享的全部内容,欢迎各位读者留言交流。

—END—

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2