An Architecture for Exploiting Native User-Land Checkpoint-Restart to Improve Fuzzing
Fuzzing是最流行和最广泛使用的技术之一,可以发现任何应用程序中的漏洞。Fuzzers速度足够快,但他们仍然花了很长一段时间来重新启动崩溃的应用程序,然后从头开始模糊它。从执行的更深处模糊应用程序也很重要。要做到这一点,用户需要拍摄程序的快照,同时在模拟器,虚拟机上模糊它,或者通过使用特殊的内核模块来启用检查点。即使有了这个能力,在恢复检查点后也很难附加模糊器。因此,大多数模糊器都采用了fork-server设计。我们提出了一种新的测试架构,允许用户附加一个模糊后,程序已经开始运行。我们通过在感兴趣的点本地检查点目标应用程序,并在恢复检查点后附加模糊器来实现这一点。一个fork-server甚至可以在恢复的时候使用。这不仅通过最小化启动时间提高了模糊活动的吞吐量,而且为模糊应用程序开辟了一条新途径。使用这种架构,用户可以在感兴趣的点处采取一系列检查点,并运行并行测试以降低单个测试的整体状态复杂性。检查点允许我们从执行路径中更深的点开始模糊化,从所需的覆盖路径中省略先前的执行。本文描述了这种检查点和其他检查点技术,以帮助改进模糊化。
2021-12-19 cs.CR
Multi-target Coverage-based Greybox Fuzzing
Graduate School of Information Security(信息安全研究生院)
本文提出一种多目标覆盖灰盒模糊测试方法,通过统一虚拟化环境测量软件边界代码覆盖,提升系统探索深度。
2026-03-26 cs.CR
Side-Channel Aware Fuzzing
软件测试正在成为嵌入式设备开发周期的关键部分,从而实现漏洞检测。一种被广泛研究的软件测试方法是模糊测试(fuzzing),在此过程中,将变异的输入发送到输入处理软件,同时监视其行为。目标是识别程序中由格式错误的输入触发的错误状态。即使这种技术被广泛执行,模糊不能应用到嵌入式设备的全部范围。由于缺乏足够强大的I/O功能或操作系统,无法获取模糊化所需的反馈。在本文中,我们提出并评估了一种新的方法来提取反馈的模糊嵌入式设备上使用的信息的功耗泄漏。侧信道感知模糊是一个三重过程,通过向目标设备发送输入并测量其功耗来启动。首先,我们使用机器学习算法从目标设备的电源轨迹中提取特征。随后,我们使用的功能来重建的代码结构的分析固件。在最后一步中,我们计算输入的分数,它与代码覆盖率成正比。我们通过模糊合成软件和在ARM Cortex-M4微控制器上运行的轻量级AES实现来进行概念验证。我们的研究结果表明,功率侧信道携带的信息相关的模糊。
2019-08-14 cs.CR
APFuzz: Towards Automatic Greybox Protocol Fuzzing
Swinburne University of Technology(斯威本科技大学);CSIRO Data61(澳大利亚联邦科学和工业研究组织数据61)
APFuzz通过状态模型和消息模型的创新设计,提升灰盒协议模糊测试的智能性,通过静态动态分析和字段级变异操作实现更高效的模糊测试。
2026-02-25 cs.CR
Systematic Meets Unintended: Prior Knowledge Adaptive 5G Vulnerability Detection via Multi-Fuzzing
针对5G安全研究缺乏整体视角的问题,提出系统性多模糊测试方法,通过LAL、SyAL和SoAL三种策略自适应不同先验知识条件,有效发现并预测5G漏洞,实现实时检测与主动防御。
2024-01-05 cs.CR
CovFUZZ: Coverage-based fuzzer for 4G&5G protocols
本文提出CovFUZZ框架,利用基于DUT覆盖率反馈的字段概率调整算法测试4G/5G附着流程,在srsRAN和12台COTS设备上验证其覆盖率与漏洞发现能力。
2024-10-28 cs.CR
Binary-level Directed Fuzzing for Use-After-Free Vulnerabilities
定向模糊测试侧重于通过利用附加信息(如(部分)错误堆栈跟踪、补丁或风险操作)自动测试代码的特定部分。主要应用包括错误再现、补丁测试和静态分析报告验证。虽然定向模糊最近受到了很多关注,但难以检测的漏洞,如释放后的加密(UAF)仍然没有得到很好的解决,特别是在二进制级别。我们提出UAFuzz,第一个(二进制级别)直接灰盒模糊专用于UAF错误。该技术具有针对UAF特性定制的模糊引擎,轻量级代码插装和高效的错误分类步骤。对真实案例的错误再现的实验评估表明,UAFuzz在故障检测率、暴露时间和错误分类方面明显优于最先进的定向模糊器。UAFuzz在补丁测试中也被证明是有效的,在Perl,GPAC和GNU Patch等程序中发现了30个新的bug(7个CVE)。最后,我们向社区提供了一个专门用于UAF的大型模糊测试基准,该基准建立在真实代码和真实错误的基础上。
2020-08-17 cs.CR
Towards Fuzzing Zero-Knowledge Proof Circuits (Short Paper)
本文探讨了将模糊测试应用于零知识证明电路的独特挑战与预言机问题,提出输入生成与测试框架构建技术,并为基础库zk-regex实现模糊测试器,成功发现10个已确认的新漏洞。
2025-04-30 cs.CR
Ember-IO: Effective Firmware Fuzzing with Model-Free Memory Mapped IO
嵌入式系统的指数增长推动了开发模糊器的研究,以自动化固件测试,发现软件错误和安全漏洞。但是,在这种情况下,采用模糊技术提出了一个独特的挑战性的命题,一个关键的问题是需要处理的不同和大量的外围通信的自动化测试框架。最近的模糊方法:i)通过在仿真器中执行代码来采用重新托管方法,因为在资源有限的嵌入式系统上进行模糊化是缓慢且不可扩展的;以及ii)集成硬件行为的模型以克服由外围设备创建的待探索的大规模输入空间所面临的挑战,并生成有效地帮助模糊器取得进展的输入。我们的努力阐述了独特的固件程序执行行为,以解决由此产生的输入空间搜索问题。我们提出的技术提高了模糊器的能力,以产生可能的进展执行值,并避免在功能上等同于其他测试用例的变异输入消耗的时间。我们证明这些方法在克服输入空间搜索问题方面是高效且有效的。我们基于仿真的实现Ember-IO与现有的最先进的模糊框架相比,在21个固件二进制文件中,所覆盖的块提高了255%。此外,Ember-IO在现实世界的固件中发现了6个新的bug,以前没有被最先进的模糊框架识别出来。重要的是,Ember-IO与最先进的模糊器Fuzzware集成,在所有固件二进制文件中展示了类似或改进的覆盖范围,同时重现了Ember-IO发现的6个新错误中的3个。
2023-01-17 cs.CR
Fuzz'EMup: Leveraging EM Side-Channel Emanation to Guide Black-Box Embedded Firmware Fuzzing
Clemson University(克莱姆森大学);Texas Tech University(德克萨斯理工大学);University of Rochester(罗切斯特大学);Northeastern University(东北大学)
针对许多设备无法获取覆盖信息只能进行低效黑盒固件模糊测试的问题,提出利用电磁侧信道发射指导模糊测试的方法,通过频带选择与动态时间规整相结合解决挑战,在四个固件目标上评估,证明该方法能提高代码覆盖率。
2026-07-21 cs.CR
$MC^2$: Rigorous and Efficient Directed Greybox Fuzzing
定向灰盒模糊测试是一种用于有针对性的软件测试的流行技术,旨在找到到达程序中一组目标站点的输入。大多数现有的有向灰盒模糊器没有提供任何理论分析,他们的性能或最优性。在本文中,我们引入了一个复杂性理论框架,将定向灰盒模糊化作为一个Oracle引导的搜索问题,其中一些关于输入空间的反馈(例如,输入与目标站点有多近)通过查询Oracle来接收。我们的框架假设每个Oracle查询都可以返回任意内容,其中包含大量但恒定的信息。因此,我们使用模糊算法找到目标到达输入所需的Oracle查询的数量作为性能度量。使用我们的框架,我们设计了一个随机定向灰盒模糊算法,使对数(wrt。所有可能输入的数量)期望找到目标到达输入的查询数量。我们进一步证明了我们的算法所需的oracle查询的数量是最优的,即,没有模糊算法可以改进(即,最小化)查询计数超过一个常数因子。我们在MC $^2$中实现了我们的方法,并在具有挑战性的基准测试(Magma和Fuzzer测试套件)上超过了最先进的有向灰盒模糊器两个数量级(即,$134\times$)的平均值。MC $^2$还发现了15个以前未发现的错误,这些错误是其他最先进的直接灰盒模糊器未能发现的。
2022-08-30 cs.CR
Icicle: A Re-Designed Emulator for Grey-Box Firmware Fuzzing
本研究提出Icicle,一个专为模糊测试设计的多架构模拟框架,支持架构无关插桩,以低开销实现高效灰盒固件模糊测试,并在多种ISA及MSP430上发现新错误。
2023-06-21 cs.CR
HOPPER: Interpretative Fuzzing for Libraries
提出HOPPER框架,通过将库模糊测试转化为解释器模糊测试,学习API内部和API间约束并感知语法变异生成输入,无需领域知识即可广泛探索API用法,在代码覆盖率和漏洞发现上显著优于现有方案。
2023-09-07 cs.CR
SysFuSS: System-Level Firmware Fuzzing with Selective Symbolic Execution
University of Florida(佛罗里达大学)
SysFuSS通过结合系统级模糊测试与选择性符号执行,高效检测固件漏洞,显著提升分支覆盖和漏洞发现效率。
2026-02-02 cs.CR
Fuzzing at Scale: The Untold Story of the Scheduler
本研究探讨规模化模糊测试中的调度策略,证明动态调度器比朴素调度器能发现更多漏洞,其影响堪比升级模糊器,并利用最先进调度器在5000个Ubuntu程序中发现4908个漏洞。
2025-01-27 cs.CR
Magma: A Ground-Truth Fuzzing Benchmark
高可扩展性和低运行成本使得模糊测试成为发现软件缺陷的事实标准。在构建最终缺陷查找工具的竞赛中,模糊技术不断得到改进。然而,虽然模糊化擅长在野外发现bug,但由于缺乏指标和基准,评估和比较模糊化性能具有挑战性。例如,由于重复数据删除技术的不完善,可能是最常用的性能度量的崩溃计数是不准确的。此外,由于缺乏一套统一的目标,导致进行临时评价,妨碍了公平比较。我们解决这些问题,通过开发岩浆,一个真值模糊基准,使统一的模糊评估和比较。通过将真实的错误引入真实的软件,Magma允许对模糊器进行现实的评估。通过检测这些bug,Magma还可以独立于模糊器收集以bug为中心的性能指标。Magma是一个开放的基准测试,由七个目标组成,执行各种输入操作和复杂的计算,对最先进的模糊器提出了挑战。我们评估了七个广泛使用的基于突变的模糊器(AFL,AFLFast,AFL++,FairFuzz,MOpt-AFL,honggfuzz和SymCC-AFL)对Magma超过200,000 CPU小时。基于到达、触发和检测到的错误的数量,我们得出关于模糊器的探索和检测能力的结论。这提供了对模糊性能评估的深入了解,突出了地面实况在执行更准确和有意义的评估中的重要性。
2020-10-23 cs.CR
PowerFuzz: Power-Based Black-Box Firmware Fuzzing
University of Florida(佛罗里达大学)
提出PowerFuzz,一种利用功耗侧信道测量替代二进制插桩的黑盒模糊测试框架,通过滑动窗口和全迹相关方法识别分支并构建控制流图,在三个嵌入式平台上达到与灰盒模糊器相当的覆盖率(差距≤13.5%),并显著优于现有黑盒模糊器(提升达22%)。
2026-06-24 cs.CR
My Fuzzer Beats Them All! Developing a Framework for Fair Evaluation and Comparison of Fuzzers
模糊技术已经成为识别软件缺陷的最流行的技术之一。为了改善模糊处理,学术文献中最近出现了大量的技术。然而,评估和比较这些技术是具有挑战性的,因为模糊器在生成测试输入时依赖于随机性。通常,现有评价仅部分遵循模糊评价的最佳做法。我们认为,这是双重原因。首先,由于在模糊测试的情况下缺乏全面的经验数据,目前还不清楚拟议的准则是否有必要。第二,目前还没有一个框架,整合统计评估技术,使模糊的公平比较。为了解决这些局限性,我们引入了一种新的模糊评价框架,称为SENF(模糊统计评价)。我们通过利用最广泛的模糊器AFL作为我们的基线模糊器并探索不同评估参数(例如,重复次数或运行时间)、编译器、种子和模糊策略。使用我们的评估框架,我们表明,所谓的小变化的参数可以有一个重大影响的模糊器的测量性能。
2021-08-16 cs.CR
MABFuzz: Multi-Armed Bandit Algorithms for Fuzzing Processors
针对硬件模糊测试器依赖静态策略决策的问题,提出动态自适应框架MABFuzz,利用多臂老虎机算法改进模糊测试流程,在RISC-V处理器上实现漏洞检测308倍和覆盖率5倍的加速。
2023-11-24 cs.CR
HuntFUZZ: Enhancing Error Handling Testing through Clustering Based Fuzzing
HuntFUZZ 提出基于聚类的 SFI 模糊测试框架,通过对相关错误点聚类并利用 concolic 执行计算公共路径约束,减少冗余测试,在 42 个应用中验证了更高的错误覆盖率和更快的漏洞发现速度。
2024-07-05 cs.CR
FuzzSplore: Visualizing Feedback-Driven Fuzzing Techniques
模糊测试技术是当前针对安全问题的软件测试的发展趋势。它们的巨大有效性吸引了研究人员和黑客的注意,并使他们参与开发许多新技术来改进模糊测试。这些技术的评价和交叉比较几乎是一个开放的问题。在本文中,我们提出了一个人驱动的方法来解决这个问题的基础上信息可视化。我们在AFL++模糊框架FuzzSplore上开发了一个原型,分析师可以使用它来获得有关应用于特定目标的不同模糊配置的有用见解,以便在模糊活动期间选择或调整最佳技术。
2021-02-06 cs.CR cs.SE
Deep Reinforcement Fuzzing
Fraunhofer AISEC(弗劳恩霍夫应用与集成安全研究所);Microsoft Research(微软研究院)
Fuzzing是通过使用修改的输入反复测试代码来发现输入处理代码中的安全漏洞的过程。在本文中,我们形式化模糊作为一个强化学习问题使用马尔可夫决策过程的概念。这反过来又允许我们应用最先进的深度Q-学习算法来优化奖励,我们从测试程序的运行时属性定义奖励。通过观察在初始程序输入上执行的一组特定动作引起的回报,模糊代理学习下一个可以生成新的更高回报输入的策略。我们已经实现了这种新方法,初步的经验证据表明,强化模糊可以优于基线随机模糊。
2018-01-14 cs.AI cs.CR
Sydr-Fuzz: Continuous Hybrid Fuzzing and Dynamic Analysis for Security Development Lifecycle
为了保证软件的安全性,满足安全开发生命周期(SDL)的要求,目前对用于持续测试的自动化动态分析框架的需求很高。尖端混合模糊技术的安全漏洞搜索效率优于广泛使用的覆盖引导模糊。我们提出了一个增强的动态分析管道,以利用生产力的自动错误检测的基础上混合模糊。我们在连续模糊工具集Sydr-Fuzz中实现了所提出的管道,该工具集由混合模糊编排器提供支持,将我们的DSE工具Sydr与libFuzzer和AFL++集成在一起。Sydr-Fuzz还集成了安全谓词检查器、崩溃分类工具Casr以及用于语料库最小化和覆盖率收集的实用程序。我们的混合模糊器对替代国家的最先进的解决方案的基准测试表明,其优越性覆盖引导模糊器,同时保持在同一水平上与先进的混合模糊器。此外,我们通过在OSS-Sydr-Fuzz项目中发现85个新的真实世界软件缺陷来验证我们方法的相关性。最后,我们向社区开放Casr源代码,以方便检查现有的崩溃。
2023-03-23 cs.CR cs.SE
The Art, Science, and Engineering of Fuzzing: A Survey
在当今可用的许多软件漏洞发现技术中,模糊技术由于其概念简单、部署障碍低以及在发现真实世界软件漏洞方面的大量经验证据而一直非常流行。在高层次上,模糊是指重复运行程序的过程,生成的输入可能在语法或语义上是畸形的。虽然近年来研究人员和从业人员都投入了大量和各种各样的努力来改善模糊,但这种激增的工作也使得很难获得全面和连贯的模糊观点。为了帮助维护和模糊的大量文献带来的连贯性,本文提出了一个统一的,通用的模糊模型,以及当前模糊文献的分类。我们有条不紊地探索在我们的模型模糊器的每个阶段的设计决策,通过调查相关的文献和创新的艺术,科学和工程,使现代模糊器有效。
2019-04-08 cs.CR cs.SE
BandFuzz: An ML-powered Collaborative Fuzzing Framework
本文提出机器学习驱动的协同模糊测试框架BANDFUZZ,利用多臂老虎机模型优化资源分配,在不增加计算资源的情况下超越现有独立和协同模糊测试器,并在全球竞赛中获第一名。
2025-07-21 cs.CR cs.SE
PTrix: Efficient Hardware-Assisted Fuzzing for COTS Binary
尽管它在发现软件缺陷方面很有效,但最好的灰盒模糊器之一美国模糊Lop(AFL)在模糊测试源不可用程序时效率低下。AFL的二进制模糊模式,QEMU-AFL,通常比其源可用模糊模式慢2- 5倍。减速主要是由沉重的动态仪器造成的。最近的模糊技术使用英特尔处理器跟踪(PT),一个轻量级的跟踪功能,支持最新的英特尔CPU,以消除动态仪器的需要。然而,我们发现这些基于PT的模糊技术在模糊真实世界的程序时甚至比QEMU-AFL更慢,使得它们不如QEMU-AFL有效。这种低性能是由于从高度压缩的PT跟踪中提取代码覆盖率信息的速度很慢造成的。在这项工作中,我们提出了PTrix的设计和实现,充分释放PT模糊通过三种新技术的好处。首先,PTrix提出了一种PT跟踪和目标程序执行高度并行的方案。第二,直接将解码后的PT轨迹作为模糊化的反馈,避免了代价高昂的代码覆盖信息重构。第三,PTrix以比基于边缘的代码覆盖更强的反馈来维护新的反馈,这有助于达到AFL可能没有的新代码空间和缺陷。我们评估PTrix通过比较其性能与国家的最先进的模糊。我们的研究结果表明,在相同的时间内,PTrix实现了显着更高的模糊化速度,并达到其他模糊错过的代码区域。此外,PTrix在一组以前模糊化的二进制文件中确定了35个新的漏洞,显示了其补充现有模糊器的能力。
2019-05-25 cs.CR cs.SE
Learning Inputs in Greybox Fuzzing
灰盒模糊测试是一种轻量级的测试方法,可以有效地检测错误和安全漏洞。然而,灰盒模糊器随机地改变程序输入以执行新的路径;这使得覆盖由复杂检查保护的代码变得具有挑战性。在本文中,我们提出了一种技术,扩展灰盒模糊的方法,学习新的输入的基础上已经探索的程序执行。可以学习这些输入,以便它们引导对特定执行的探索,例如,增加路径覆盖或揭示漏洞的探索。我们已经评估了我们的技术,并将其与传统的灰盒模糊26现实世界的基准。相比之下,我们的技术显着增加了路径覆盖率(高达3倍),并检测到更多的错误(高达38%),通常更快。
2018-07-20 cs.CR cs.SE
Effectiveness and Scalability of Fuzzing Techniques in CI/CD Pipelines
Fuzzing已被证明是自动化软件测试的一项基本技术,但也是一项昂贵的技术。随着CI/CD实践在软件开发中的越来越多的采用,一个自然的问题是“考虑到代码更改的速度和自动化交付/部署实践,将模糊集成到CI/CD管道中的最佳方法是什么?”'.事实上,Böhme和Zhu最近的一项研究表明,每五个bug中就有四个是由最近的代码更改(即回归)引入的。在本文中,我们将从自动化软件测试和持续开发两个角度来仔细研究模糊器与CI/CD管道的集成。首先,我们研究了一个优化的机会来分类不需要模糊处理的提交,并通过实验分析发现,在我们分析的9个库中,有3个库的CI/CD中的平均模糊处理工作量可以减少约63%(6个库的平均模糊处理工作量>40%)。其次,我们调查了模糊活动持续时间对CI/CD流程的影响:较短的模糊活动,例如15分钟(与现场24小时的智慧相反)有助于更快的管道,并且仍然可以发现重要的错误,但也可能降低其检测复杂错误的能力。最后,我们讨论了一个优先级策略,自动分配资源的基础上,一组预定义的优先级策略模糊活动。我们的研究结果表明,连续模糊测试(作为CI/CD自动化测试的一部分)确实是有益的,有很多优化的机会,以提高模糊测试的有效性和可扩展性。
2022-06-07 cs.CR cs.SE
Fuzzing Symbolic Expressions
近年来,软件测试取得了广泛的成果,探索了不同的方法和方法,从模糊器到符号引擎,以及介于两者之间的各种实例,如concolic执行和混合模糊。其中许多工具的一个关键组成部分是可满足性模理论(SMT)求解器,用于对分析期间收集的符号表达式进行推理。在本文中,我们研究是否可以借用模糊域的技术来检查是否符号公式是可满足的concolic和混合模糊引擎的背景下,提供了一个可行的替代经典SMT解决技术。我们设计了一个新的近似求解器,FUZZY-SAT,并表明它是竞争和互补的最先进的求解器,如Z3处理混合模糊器产生的查询。
2021-02-12 cs.CR cs.SE
Following Dragons: Code Review-Guided Fuzzing
The University of Melbourne(墨尔本大学)
EyeQ通过利用代码审查中的开发者智能,指导模糊测试以发现更多安全关键的漏洞。
2026-02-11 cs.CR cs.SE
DARWIN: Survival of the Fittest Fuzzing Mutators
Fuzzing是一种被业界广泛采用的自动化软件测试技术。一个流行的变体是基于变异的模糊,它在实践中发现了大量的错误。虽然研究界已经研究基于突变的模糊化多年,但模糊器内的算法交互非常复杂,并且可以与模糊器的每个实例中的随机性一起导致不可预测的效果。大多数改善这种脆弱交互的努力都集中在优化种子调度上。然而,像Google的FuzzBench这样的现实世界的结果突出表明,这些方法在实践中并没有始终如一地显示出改进。另一种改进模糊算法的方法是优化变异调度。不幸的是,现有的变异调度方法也未能说服,因为缺少现实世界的改善或太多的用户控制的参数,其配置需要有关目标程序的专家知识。这就留下了一个具有挑战性的问题,即巧妙地处理测试用例并实现可测量的改进。我们提出了DARWIN,一种新的突变调度程序,第一个显示模糊的改进,在一个现实的情况下,不需要引入额外的用户可配置的参数,开放这种方法的广泛模糊社区。达尔文使用演化策略系统地优化和适应模糊过程中变异算子的概率分布。我们实现了一个原型的基础上流行的通用模糊AFL。在我们自己的覆盖率实验中,DARWIN在FuzzBench中的表现明显优于最先进的突变调度器和AFL基线,并在MAGMA基准测试中找到了21个错误中最快的15个。最后,DARWIN在广泛使用的实际应用中发现了20个独特的bug(包括一个新bug),比AFL多66%。
2022-10-21 cs.CR cs.SE
Mutation Analysis: Answering the Fuzzing Challenge
模糊测试是软件测试中发展最快的领域之一。fuzzing背后的想法是针对大量随机生成的输入来检查软件的行为,试图覆盖输入空间的所有有趣部分,同时观察测试软件的异常行为。fuzzer用户面临的最大挑战之一是如何验证软件行为,以及如何提高所使用的oracle的质量。虽然变异分析是评价软件测试预言机质量的首要技术,但变异分数很少被用作评价模糊质量的度量。除非突变分析研究人员能够解决将突变分析应用于模糊测试的多个问题,否则突变分析可能会在测试和安全研究的最重要领域之一永久靠边站。本文试图了解应用变异分析评估模糊器的主要挑战,以便研究人员可以专注于解决这些挑战。
2022-02-12 cs.CR cs.SE
FuzzBox: Blending Fuzzing into Emulation for Binary-Only Embedded Targets
Università degli Studi di Napoli Federico II(那不勒斯费德里科二世大学)
FuzzBox通过整合模拟与模糊测试,在虚拟化环境中动态注入模糊输入,实现故障检测和覆盖率分析,无需源代码重新编译和硬件依赖,适用于工业系统和物联网固件。
2025-09-06 cs.CR cs.SE
Full-speed Fuzzing: Reducing Fuzzing Overhead through Coverage-guided Tracing
在覆盖率引导的模糊测试的三个主要组成部分中:(1)测试用例生成,(2)代码覆盖率跟踪,以及(3)崩溃分类,代码覆盖率跟踪是开销的主要来源。覆盖率引导的模糊器通过静态或动态二进制插装来跟踪每个测试用例的代码覆盖率,或者最近使用硬件支持。不幸的是,跟踪所有的测试用例会导致显著的性能损失--即使绝大多数测试用例及其覆盖信息被丢弃,因为它们不会增加代码覆盖。为了消除覆盖引导模糊不必要的跟踪,我们引入覆盖引导跟踪的概念。覆盖率引导的跟踪利用了两个观察结果:(1)只有一小部分生成的测试用例增加了覆盖率,因此需要跟踪;(2)随着时间的推移,覆盖率增加的测试用例变得不那么频繁。覆盖率引导的跟踪通过在目标二进制中编码代码覆盖率的当前边界来工作,以便当测试用例产生新的覆盖率时,它会自我报告-而不需要跟踪。这充当了跟踪的过滤器;将跟踪的开销限制为仅增加覆盖率的测试用例。因此,覆盖率引导的跟踪选择权衡增加的覆盖率增加测试用例处理时间,以获得最初以本机速度执行测试用例的能力。为了展示覆盖率引导跟踪的潜力,我们创建了一个基于静态二进制instrumentor Dyninst的实现,称为UnTracer。我们使用模糊社区常用的八个真实世界的二进制文件来评估UnTracer。实验表明,经过一个小时的模糊化,UnTracer的平均开销低于1%,经过24小时的模糊化,UnTracer接近0%的开销,而使用流行的白盒和…
2019-01-28 cs.CR cs.SE
Evolutionary Fuzzing of Android OS Vendor System Services
Android设备由100多家制造商合作伙伴以多种形式提供,这些合作伙伴通过新的系统服务扩展了Android“香草”操作系统,并修改了现有的系统服务。这些专有扩展会使Android设备面临可靠性和安全性问题。在本文中,我们提出了一个基于进化算法的覆盖率引导模糊平台(Chizpurfle)来测试专有的Android系统服务。该平台的一个关键特性是能够利用动态二进制重写技术,在实际的未修改的Android设备上分析覆盖率。我们在三款高端商用Android智能手机上应用了该解决方案。结果证实,进化模糊能够比盲目模糊更有效地测试Android OS系统服务。此外,我们评估了不同选择的适应度函数和选择算法的影响。
2019-06-03 cs.CR cs.SE
Large Language Model assisted Hybrid Fuzzing
本文提出一种基于大型语言模型(LLM)的混合模糊测试器 HyLLfuzz,利用 LLM 作为求解器替代传统符号执行来生成修改输入以突破覆盖率障碍,相比 AFL、Intriguer 和 Qsym 展现出更优的覆盖率且执行速度提升 4-19 倍。
2024-12-20 cs.CR cs.SE
Prompt Fuzzing for Fuzz Driver Generation
提出PromptFuzz,一种覆盖率引导的提示模糊测试工具,通过迭代生成模糊驱动程序来探索未发现的库代码,在14个真实库上相比OSS-Fuzz和Hopper分别提升1.61倍和1.63倍分支覆盖率,并检测到33个真实新错误。
2024-05-29 cs.CR cs.SE
DyMA-Fuzz: Dynamic Direct Memory Access Abstraction for Re-hosted Monolithic Firmware Fuzzing
Adelaide University(阿德莱德大学);CSIRO Data61(澳大利亚联邦科学与工业研究组织数据六一分部)
DyMA-Fuzz通过动态直接内存访问抽象,提升重新托管环境中固件模糊测试的效率和覆盖率。
2026-02-09 cs.CR cs.SE
An Empirical Study of OSS-Fuzz Bugs
连续模糊是一种越来越流行的自动质量和安全保证技术。Google维护OSS-Fuzz:一个针对开源软件的持续模糊服务。我们对OSS-Fuzz进行了第一次实证研究,分析了在316个项目中发现的23,907个错误。我们研究的模糊发现故障的特点,这种故障的生命周期,随着时间的推移,模糊运动的演变。我们发现,OSS-Fuzz通常能有效地快速找到bug,开发人员通常能快速修补它们。然而,漏洞,超时,内存不足的错误是有问题的,人们很少文件的安全漏洞的CVE,和模糊活动往往表现出间断的均衡,开发人员可能会惊讶于发现的bug的大峰值。我们的研究结果对未来的模糊研究和实践的影响。
2021-03-21 cs.CR cs.SE
DeFuzz: Deep Learning Guided Directed Fuzzing
Swinburne University Of Technology(斯威本科技大学);CSIRO & DATA61(英联邦科学与工业研究组织(CSIRO)& DATA61)
模糊技术是识别潜在软件漏洞的最有效的技术之一。大多数模糊器旨在提高代码覆盖率,并且缺乏直接性(例如,模糊软件中的指定路径)。本文提出了一种基于深度学习(DL)的定向模糊检测方法DeFuzz,用于软件漏洞检测。DeFuzz包括两个主要方案:(1)我们采用预训练的DL预测模型来识别潜在的脆弱函数和位置(即,易受攻击的地址)。准确地说,我们使用Bidirectional-LSTM(BiLSTM)来识别注意词,并且漏洞与函数中的这些注意词相关联。(2)然后,我们通过生成倾向于到达预测位置的输入,直接采用模糊化来模糊潜在的漏洞。为了评估所提出的DeFuzz技术的有效性和实用性,我们在真实世界的数据集上进行了实验。实验结果表明,我们的DeFuzz可以发现覆盖比AFL更多,更快。此外,DeFuzz在真实世界的应用程序中比AFL多暴露了43个错误。
2020-10-23 cs.CR cs.LG
Is Stateful Fuzzing Really Challenging?
本文探讨有状态模糊测试工具难以设计与基准评估的原因,对比无状态场景中AFL等成熟工具,指出有状态系统缺乏明确最佳选择。
2024-06-12 cs.CR cs.SE
INSTILLER: Towards Efficient and Realistic RTL Fuzzing
针对现有CPU RTL模糊测试输入指令过长、难模拟真实中断等问题,提出基于VACO的指令蒸馏工具INSTILLER,搭配硬件相关种子策略,在覆盖率、漏洞检测等指标上优于现有方法。
2024-01-29 cs.CR cs.SE
FuzzAgent: Multi-Agent System for End-to-End Evolutionary Library Fuzzing
The University of Hong Kong(香港大学);Southeast University(东南大学)
FuzzAgent通过多智能体协作实现库模糊测试的迭代进化,提升覆盖率和崩溃分析的准确性,优于现有方法45.1%至191.2%。
2026-10-30 cs.CR cs.SE
Targeted Greybox Fuzzing with Static Lookahead Analysis
自动测试生成通常旨在生成输入,以探索被测程序中的新路径,从而发现bug。现有的工作,因此,集中在引导探索程序的部分,更有可能包含错误,通过使用离线静态分析。在本文中,我们介绍了一种新的技术,有针对性的灰盒模糊使用一个在线的静态分析,引导模糊对一组目标位置,例如,位于最近修改的部分程序。这是通过首先从语义上分析模糊器的测试套件中的输入所探索的每个程序路径来实现的。这个分析的结果然后被用来控制模糊器的专用功率调度,其确定从测试套件模糊输入的频率。我们通过为以太坊智能合约扩展最先进的工业模糊器来实现我们的技术,并在27个真实世界的基准测试中评估其有效性。使用在线分析特别适合智能合约领域,因为它不需要任何代码插装-插装到合约中会改变它们的语义。我们的实验表明,有针对性的模糊显着优于标准的灰盒模糊达到83%的挑战性目标位置(高达14倍的中位数加速)。
2019-05-17 cs.CR cs.SE
Improving Fuzzing Using Software Complexity Metrics
易受攻击的软件对现代信息系统构成了巨大的威胁。广泛应用程序中的漏洞可能被用来传播恶意软件,窃取资金和进行目标攻击。为了解决这个问题,开发人员和研究人员使用不同的动态和静态软件分析方法;其中一种方法称为模糊分析。Fuzzing是通过生成并发送可能格式错误的数据到被测应用程序来执行的。自1988年首次出现以来,模糊技术已经发展了很多,但直到现在,针对有效性评估的问题还没有得到充分的研究。在我们的研究中,我们提出了一种新的模糊效果评估方法,考虑到执行代码的语义以及定量评估。为此,我们使用源代码复杂性评估的具体指标,适用于执行分析的机器码。我们对104个具有已知漏洞的广泛应用程序进行了这些指标的有效性评估。作为这些实验的结果,我们能够识别出一组更适合发现bug的指标。此外,我们进行了单独的实验,7个应用程序没有已知的漏洞,通过使用一套指标。实验结果表明,该方法可以提高模糊检测的性能。此外,这些工具还帮助检测了广泛应用程序中的两个关键零日(以前未知)漏洞。
2018-07-05 cs.CR cs.SE
Facilitating Parallel Fuzzing with mutually-exclusive Task Distribution
模糊测试,或称模糊测试,已经成为软件工业中错误发现的事实标准技术之一。一般来说,模糊处理向目标程序提供各种输入,以发现未处理的异常和崩溃。在时间预算有限的业务部门,软件供应商通常并行启动许多模糊实例,作为增加代码覆盖率的常用方法。然而,大多数流行的模糊工具在并行模式下都是单纯地并发运行多个实例,而没有详细的工作负载分配。这可能导致不同的实例探索重叠的代码区域,最终减少并发的好处。在本文中,我们提出了一个通用的模型来描述并行模糊。该模型将互斥但权重相似的任务分配给不同的实例,促进了并发性和实例间的公平性。根据这个模型,我们开发了一个解决方案,称为AFL-EDGE,以改善AFL的并行模式,考虑一轮突变到一个唯一的种子作为一个任务,并采用边缘覆盖来定义一个种子的唯一性。我们已经在AFL之上实现了AFL-EDGE,并在9个广泛使用的基准程序上评估了AFL的实现情况。这表明AFL-EDGE可以提高AFL的边缘覆盖率。在24小时的测试中,根据实例数量的不同,AFL-EDGE给AFL带来的边缘覆盖率提升幅度在9.49%到10.20%之间。作为一个附带的好处,我们发现了14个以前未知的bug。
2021-09-17 cs.CR cs.SE
Rethinking Smart Contract Fuzzing: Fuzzing With Invocation Ordering and Important Branch Revisiting
区块链智能合约已经产生了各种有趣和引人注目的应用程序,并成为互联网的革命性力量。不少从业者致力于开发检测智能合约中bug的工具。一种努力是围绕静态分析技术,这种技术严重地受到高假阳性率的影响。另一系列的工作集中在模糊技术。不幸的是,目前智能合约的模糊方法倾向于从合约的初始状态开始进行模糊,这会花费太多的能量围绕初始状态,因此通常无法发现其他状态触发的错误。此外,大多数现有的方法平等地对待每个分支,未能照顾到那些罕见的或更有可能拥有bug的分支。这可能会导致资源浪费在普通分支上。在本文中,我们试图从三个方面来解决这些挑战:(1)在生成函数调用序列时,我们显式地考虑函数之间的数据依赖关系,以便于探索更丰富的状态。我们通过附加一个新的序列S2来进一步延长函数调用序列S1,这样S2就可以从不同于初始状态的状态开始模糊化。(2)我们采用了一个分支距离为基础的措施,不断发展的测试用例迭代向目标分支。(3)我们采用分支搜索算法来发现稀有和脆弱的分支,并设计一个能量分配机制来处理这些关键分支。我们实现了IR-Fuzz,并在12 K个真实世界的合同中对其进行了广泛的评估。实证结果表明:(i)IR-Fuzz比最先进的模糊方法实现了高28%的分支覆盖率,(ii)IR-Fuzz检测到更多的漏洞,并将漏洞检测的平均准确性提高了7%。
2023-01-12 cs.CR cs.PL cs.SE
LLM4Fuzz: Guided Fuzzing of Smart Contracts with Large Language Models
LLM4Fuzz利用大型语言模型智能引导模糊测试,优先探索高价值代码区域和输入序列,并支持基于用户定义不变量的引导,在真实DeFi项目中显著提升效率、覆盖率与漏洞检测能力,发现五个可致超24.7万美元损失的高危漏洞。
2024-01-20 cs.CR cs.SE
Learn&Fuzz: Machine Learning for Input Fuzzing
Microsoft Research(微软研究院);The Technion(以色列理工学院)
Fuzzing包括使用修改的或模糊的输入反复测试应用程序,目的是找到输入解析代码中的安全漏洞。在本文中,我们将展示如何自动生成一个输入语法适合使用样本输入和基于神经网络的统计机器学习技术的输入模糊。我们提出了一个详细的案例研究与复杂的输入格式,即PDF,和一个大型复杂的安全关键的解析器,这种格式,即嵌入在微软的新边缘浏览器的PDF解析器。我们讨论(和测量)冲突的学习和模糊目标之间的紧张关系:学习想要捕获格式良好的输入的结构,而模糊想要打破这种结构,以覆盖意外的代码路径和发现错误。我们还提出了一种新的算法,这种学习和模糊的挑战,它使用一个学习的输入概率分布,智能地指导在哪里模糊输入。
2017-01-25 cs.AI cs.CR cs.LG
PatchFuzz: Patch Fuzzing for JavaScript Engines
针对JavaScript引擎补丁模糊测试的种子来源受限与PoC收集难问题,提出端到端可持续方法PatchFuzz,通过自动化收集历史漏洞PoC并结合对应补丁进行选择性插桩与变异优化,在六款引擎中发现54个漏洞并获62,500美元赏金。
2025-05-01 cs.CR cs.SE
SoK: Where to Fuzz? Assessing Target Selection Methods in Directed Fuzzing
本文首次全面分析模糊测试的目标选择方法,通过建模评分函数在OSS-Fuzz的1600+崩溃案例上验证,发现简单软件指标优于启发式方法,语言模型也具前景,强调目标选择是提升定向模糊测试性能的关键正交维度。
2025-02-12 cs.CR cs.SE
Dissecting Software Graphs: Structural Insights for Driver-Guided Fuzzing
Utah State University(杨百瑞州立大学);University of Michigan(密歇根大学);Zhejiang Gongshang University(浙江工商大学);University at Buffalo, SUNY(纽约州立大学布法罗分校)
该研究针对多驱动程序模糊测试下的软件结构开展实证研究,提出结构抽象方法,经27个OSS-Fuzz项目验证,多驱动程序模糊测试在相同预算下性能优于单驱动程序,可提升覆盖率并发现更多独特漏洞。
2026-08-14 cs.CR cs.SE
SoK: Prudent Evaluation Practices for Fuzzing
该研究针对模糊测试评估受随机性、环境等因素影响导致可复现性不足的问题,系统分析了2018-2023年150篇顶会模糊测试论文的评估,发现现有统计检验等指南被严重忽视,揭示了评估中的不足与陷阱。
2024-05-16 cs.CR cs.SE
FuzzDistill: Intelligent Fuzzing Target Selection using Compile-Time Analysis and Machine Learning
University of Virginia(弗吉尼亚大学)
针对模糊测试在大规模代码库中耗时久、资源消耗大的问题,提出FuzzDistill方法,结合编译时信息分析与机器学习筛选高优先级测试目标,可大幅缩短真实软件的测试时间。
2024-12-11 cs.CR cs.LG cs.SE