GitHub-OSS Fixit: Fixing bugs at scale in a Software Engineering Course
许多研究表明,将开源项目引入软件工程(SE)课程教学的好处。然而,现有的研究有几个局限性,限制了开源项目在课堂环境中的广泛适应,包括(1)所选择的项目仅限于一个特定的项目,(2)大多数研究只调查了它对教授特定SE概念的影响,以及(3)学生可能会在他们的贡献中犯错误,导致质量差的代码。与此同时,软件公司已经成功推出了Google Summer of Code(GSoC)和FindBugs“fixit”等项目,为开源项目做出贡献。受这些项目成功的启发,我们提出了GitHub-OSS Fixit,这是一个课程项目,通过修复GitHub中报告的错误,教导学生为开源Java项目做出贡献。我们描述了我们的课程大纲,通过鼓励使用几个自动化的程序分析工具来教授学生SE概念。我们还提供了精心设计的指导,供学生参与GitHub-OSS Fixit。由于所有的讲座和实验都是在线进行的,我们认为我们的课程设计可以帮助指导未来的在线SE课程。总体而言,我们的调查结果显示,学生认为GitHub-OSS Fixit可以帮助他们提高许多技能,并应用课堂上教授的知识。总共有154名学生向24个不同的Java项目提交了214个pull request,其中59个项目被合并,82个项目被开发人员关闭。
2021-02-14 cs.SE
Detecting Critical Bugs in SMT Solvers Using Blackbox Mutational Fuzzing
形式化方法广泛地使用SMT求解器来确定公式的可满足性,例如,在软件验证、系统测试生成和程序合成中。然而,由于其复杂的实现,求解器可能包含导致不合理结果的关键错误。鉴于求解器在软件可靠性方面的广泛适用性,依赖这种不合理的结果可能会产生有害的后果。在本文中,我们提出了风暴,一种新的黑盒突变模糊技术,用于检测SMT求解器中的关键错误。我们在7个成熟的求解器上运行模糊器,发现了29个以前未知的关键错误。STORM已经被用于在部署之前测试流行求解器的新功能。
2020-04-13 cs.SE
MirrorFuzz: Leveraging LLM and Shared Bugs for Deep Learning Framework APIs Fuzzing
College of Electronic Engineering, National University of Defense Technology(国防科技大学电子工程学院)
针对深度学习框架API的共享缺陷问题,提出MirrorFuzz,利用历史缺陷数据匹配相似API,并借助大语言模型生成代码进行模糊测试,显著提升覆盖率并发现大量新缺陷。
2025-10-17 cs.CR cs.SE
What Happens When We Fuzz? Investigating OSS-Fuzz Bug History
本研究通过分析 OSS-Fuzz 的 44,102 个历史缺陷,发现模糊测试能将缺陷中位未解决时间缩短至 2 天,有效帮助项目在发布前快速修复问题。
2023-05-19 cs.SE
Agentic Fuzzing: Opportunities and Challenges
KAIST(韩国科学技术院)
本文提出代理模糊测试方法,通过历史漏洞引导深度代理进行推理,发现逻辑漏洞变种。AFuzz在V8引擎发现40个漏洞,获35000美元奖金,并被分配两个CVE。
2026-05-11 cs.CR cs.SE
Hunting CUDA Bugs at Scale with cuFuzz
NVIDIA(英伟达);Stanford University(斯坦福大学)
cuFuzz通过全程序模糊测试解决GPU模糊测试中的虚假阳性、缺乏设备端反馈和工具不兼容问题,发现43个新漏洞,包括非法内存访问和数据竞争。
2026-03-12 cs.CR cs.SE
How to Debug Inclusivity Bugs? A Debugging Process with Information Architecture
尽管之前的一些研究已经找到了找到包容性错误(软件中引入不平等的偏见)的方法,但很少有人关注如何修复这些错误。如果没有一个从查找到修复的过程,那么根据这些发现采取行动就是一种特别的活动,取决于每个开发人员的技能。为了解决这个问题,我们创建了Why/Where/Fix,这是一个系统的包容性调试过程,其包容性故障定位利用了信息架构(IA)-面向用户的信息的组织,结构和标记方式。然后,我们进行了多阶段的定性实证评估的有效性,为什么/在哪里/修复,使用开源软件(OSS)项目的基础设施作为我们的设置。在我们的研究中,OSS项目团队使用Why/Where/Fix流程来发现包容性错误,定位其背后的IA错误,然后修复IA以删除他们发现的包容性错误。我们的结果表明,使用Why/Where/Fix将OSS新参与者经历的包容性错误数量减少了90%。
2022-02-27 cs.CY cs.HC cs.SE
Stateful Greybox Fuzzing
针对协议实现中需特定状态才能触发的缺陷,本文提出自动识别 enum 具名常量状态变量并跟踪状态序列的有状态灰盒模糊测试方法,显著提升状态覆盖、代码覆盖和漏洞发现效率。
2022-05-16 cs.CR cs.SE
Learning Inputs in Greybox Fuzzing
灰盒模糊测试是一种轻量级的测试方法,可以有效地检测错误和安全漏洞。然而,灰盒模糊器随机地改变程序输入以执行新的路径;这使得覆盖由复杂检查保护的代码变得具有挑战性。在本文中,我们提出了一种技术,扩展灰盒模糊的方法,学习新的输入的基础上已经探索的程序执行。可以学习这些输入,以便它们引导对特定执行的探索,例如,增加路径覆盖或揭示漏洞的探索。我们已经评估了我们的技术,并将其与传统的灰盒模糊26现实世界的基准。相比之下,我们的技术显着增加了路径覆盖率(高达3倍),并检测到更多的错误(高达38%),通常更快。
2018-07-20 cs.CR cs.SE
Fully Automated Functional Fuzzing of Android Apps for Detecting Non-crashing Logic Bugs
Android应用程序是基于GUI的事件驱动软件,近年来变得无处不在。显然,功能正确性对于应用程序的成功至关重要。然而,除了崩溃错误之外,非崩溃功能错误(在本工作中简称为“非崩溃错误”),如无意的功能故障,无声的用户数据丢失和不正确的显示信息也很普遍,即使在流行的,经过良好测试的应用程序中也是如此。这些非崩溃功能错误通常由程序逻辑错误引起,并在图形用户界面(GUI)上表现出来。在实践中,这些错误在有效检测它们方面构成了重大挑战,因为(1)当前的实践严重依赖于昂贵的小规模手动验证(缺乏自动化);(2)现代全自动测试仅限于崩溃错误(缺乏测试预言机)。本文通过引入独立视图模糊来填补这一空白,这是一种用于检测Android应用程序中非崩溃功能错误的新颖的全自动方法。受变形测试的启发,我们的主要见解是利用Android应用程序的普遍独立视图属性,从一组验证某些应用程序属性的种子测试中制造属性保留突变测试。变异的测试有助于在额外的不利条件下测试测试应用程序。任何属性冲突都表明可能存在功能错误,需要进一步手动确认。我们已经实现了我们的方法作为一个自动化的,端到端的功能模糊工具,精灵。给定一个应用程序,(1)Genie自动检测非崩溃错误,而不需要人类提供的测试和预言(因此完全自动化);(2)检测到的非崩溃错误是多种多样的(因此是通用的,不限于特定的功能属性),这使Genie与以前的工作不同。
2021-10-05 cs.SE
A Systematic Impact Study for Fuzzer-Found Compiler Bugs
尽管最近对编译器随机测试(模糊)很感兴趣,但模糊发现的编译器错误对实际应用程序的实际影响几乎没有得到评估。我们提出了第一个定量和定性的研究在一个成熟的编译器中的错误编译错误的有形影响。我们遵循一种严格的方法,根据(1)错误是否在编译过程中触发;(2)由于触发错误,生成的汇编代码在语法上发生变化的程度;以及(3)这些变化有多少会导致回归测试套件失败,并可用于在执行过程中手动触发分歧。该研究是针对309个Debian软件包中超过1000万行C/C++代码的编译进行的,使用了Clang/LLVM编译器中四个最先进的模糊器发现的12%的历史错误和现已修复的错误编译错误,以及人类用户编译真实代码或通过形式化验证发现的18个错误。结果表明,几乎一半的模糊发现的错误传播到生成的二进制文件的一些软件包,但很少影响他们的语法,并导致两个失败时,运行他们的测试套件。用户报告和形式化验证错误没有表现出更高的影响,触发错误的频率较低,只有一次测试失败。我们手动分析了一些bug,无论是模糊发现的还是没有发现的,都表明没有一个bug可以轻易地在分析中考虑的软件包上触发运行时分歧,而且一般来说,它们只影响角落情况。
2019-09-05 cs.PL 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
Investigating Coverage Guided Fuzzing with Mutation Testing
覆盖率引导模糊测试(CGF)是一种有效的测试技术,已经从各种软件应用程序中检测出数十万个错误。它专注于最大化代码覆盖率,以在模糊化过程中揭示更多的错误。然而,更高的覆盖率并不一定意味着更好的故障检测能力。触发一个错误不仅涉及到特定的程序路径,但也达到感兴趣的程序状态在该路径。在本文中,我们使用变异测试,以提高CGF在检测错误。我们使用变异分数作为反馈来指导模糊检测错误,而不仅仅是覆盖代码。为了评估我们的方法,我们在5个基准上进行了精心设计的实验。我们选择国家的最先进的模糊技术Zest作为基线,并构建两个修改后的技术,它使用我们的方法。实验结果表明,该方法可以提高CGF在代码覆盖率和错误检测。
2022-05-01 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
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
INSTILLER: Towards Efficient and Realistic RTL Fuzzing
针对现有CPU RTL模糊测试输入指令过长、难模拟真实中断等问题,提出基于VACO的指令蒸馏工具INSTILLER,搭配硬件相关种子策略,在覆盖率、漏洞检测等指标上优于现有方法。
2024-01-29 cs.CR cs.SE
Fuzzing: Randomness? Reasoning! Efficient Directed Fuzzing via Large Language Models
Security Technology Inc.(360安全技术公司);School of Science Edith Cowan University(科学学院,埃迪斯科文大学)
针对模糊测试中随机性导致效率低下的问题,提出融合大语言模型的定向模糊测试框架RandLuzz,通过生成可达种子、构建漏洞专属变异器提升测试效率,实验验证其相较现有工具速度提升显著。
2025-06-30 cs.AI cs.CR cs.PL
Empirical Notes on the Interaction Between Continuous Kernel Fuzzing and Development
自20世纪90年代以来,模糊技术得到了广泛的研究和应用。自动化和持续的模糊最近也被应用于开源软件项目,包括Linux和BSD内核。本文集中在四个开源内核中的连续内核模糊化的实际方面。根据结果,syzkaller/syzbot框架报告了四个内核的800多个未解决的崩溃。其中许多在相当长的时间以前就已经报道过了。有趣的是,模糊引起的bug在BSD内核中得到了更快的解决。此外,断言和调试检查、释放后使用和一般保护错误占Linux内核中大多数错误类型。在Linux内核中,大约23%的已修复错误已经通过了代码审查或额外的测试。最后,只有代码扰动提供了一个微弱的统计信号来解释Linux内核中相关的bug修复时间。
2019-09-05 cs.CR cs.SE
Bug Histories as Sources of Compiler Fuzzing Mutators
North Carolina State University(北卡罗来纳州立大学);Cornell University(康奈尔大学)
提出IssueMut方法,从编译器缺陷历史中自动挖掘变异子,集成到现有模糊测试器中,在GCC和LLVM上发现65个新缺陷,其中60个被确认或修复。
2025-10-09 cs.SE
Targeted Greybox Fuzzing with Static Lookahead Analysis
自动测试生成通常旨在生成输入,以探索被测程序中的新路径,从而发现bug。现有的工作,因此,集中在引导探索程序的部分,更有可能包含错误,通过使用离线静态分析。在本文中,我们介绍了一种新的技术,有针对性的灰盒模糊使用一个在线的静态分析,引导模糊对一组目标位置,例如,位于最近修改的部分程序。这是通过首先从语义上分析模糊器的测试套件中的输入所探索的每个程序路径来实现的。这个分析的结果然后被用来控制模糊器的专用功率调度,其确定从测试套件模糊输入的频率。我们通过为以太坊智能合约扩展最先进的工业模糊器来实现我们的技术,并在27个真实世界的基准测试中评估其有效性。使用在线分析特别适合智能合约领域,因为它不需要任何代码插装-插装到合约中会改变它们的语义。我们的实验表明,有针对性的模糊显着优于标准的灰盒模糊达到83%的挑战性目标位置(高达14倍的中位数加速)。
2019-05-17 cs.CR cs.SE
MUZZ: Thread-aware Grey-box Fuzzing for Effective Bug Hunting in Multithreaded Programs
灰盒模糊测试由于其轻量级的测试工具、快速的覆盖反馈和动态调整策略,已经揭示了真实世界软件中成千上万的漏洞。然而,直接将灰盒模糊应用于依赖于输入的多线程程序可能效率极低。在实践中,多线程相关的错误通常隐藏在复杂的程序流中。同时,现有的灰盒模糊技术没有强调线程交织影响多线程程序的执行状态。因此,主流的灰盒模糊器不能有效地测试多线程程序中的问题段,尽管他们可能会获得高的代码覆盖率统计。为此,我们提出MUZZ,一个新的灰盒模糊技术,在多线程程序中的错误狩猎。MUZZ拥有三种新颖的线程感知插装,即面向覆盖插装、线程上下文插装和调度干预插装。在模糊化过程中,这些工具产生运行时反馈,以强调线程交织引起的执行状态。通过利用动态种子选择和执行策略中的反馈,MUZZ保留了更多有价值的种子,这些种子在多线程上下文中暴露了错误。我们在12个真实世界的软件程序上评估MUZZ。实验表明,MUZZ在多线程相关种子生成和并发漏洞检测方面优于AFL。此外,通过针对生成的种子重放目标程序,MUZZ还揭示了更多的并发错误(例如,数据竞争,线程泄漏)比AFL。MUZZ总共检测到8个新的并发漏洞和19个新的并发错误。在撰写本文时,已为报告的问题分配了4个CVE ID。
2020-07-31 cs.SE
Automatic, Expressive, and Scalable Fuzzing with Stitching
Carnegie Mellon University(卡内基梅隆大学)
STITCH通过拼接技术实现自动、表达性强且可扩展的模糊测试,发现更多真实bug并提高精度。
2026-02-21 cs.CR cs.SE
Fuzzing Processing Pipelines for Zero-Knowledge Circuits
本文提出首个针对零知识电路处理流水线的系统性模糊测试技术,基于蜕变测试预言检测逻辑漏洞,实现为开源工具Circuzz,在4个不同ZK流水线中发现16个漏洞,其中15个已被修复。
2024-11-04 cs.CR cs.PL cs.SE
A Feature-Oriented Corpus for Understanding, Evaluating and Improving Fuzz Testing
Fuzzing是一种很有前途的安全漏洞检测技术。新开发的模糊器通常根据在易受攻击的程序/二进制文件上发现的错误数量进行评估。然而,现有的语料库通常不捕捉的功能,防止模糊发现错误,导致模糊的利弊评价的结论。一个典型的例子是,Driller比AFL检测到更多的错误,但它的评估无法确定Driller的进步是否源于concolic执行,因为,例如,它在解决数据集的魔法值方面的能力尚不清楚。在本文中,我们提出了解决上述问题的基础上产生语料库的搜索阻碍功能。作为概念验证,我们设计了FEData,这是一个原型语料库,目前专注于四个搜索阻碍功能,以生成用于模糊测试的易受攻击程序。与现有的只能回答“如何”的语料库不同,FEData还可以通过暴露(或理解)模糊器中已识别弱点的原因来进一步回答“为什么”。“为什么”信息是改进模糊器的关键。
2019-05-04 cs.SE
Stop Starving or Stuffing Me: Boosting Firmware Fuzzing Efficiency with On-demand Input Delivery
School of Cyber Science and Engineering, Huazhong University of Science and Technology(华中科技大学网络空间安全学院);Hubei Key Laboratory of Distributed System Security(湖北省分布式系统安全重点实验室);Penn State University(宾夕法尼亚州立大学);University of Texas at Dallas(德克萨斯大学达拉斯分校);University of Georgia(佐治亚大学)
本文研究固件模糊测试中的输入交付问题,通过静态和动态分析将输入处理流程分为三个阶段,并优化调度算法以提升测试用例交付效果,从而提高固件模糊测试的效率和覆盖率。
2026-05-16 cs.CR cs.SE
TheHuzz: Instruction Fuzzing of Processors Using Golden-Reference Models for Finding Software-Exploitable Vulnerabilities
现代处理器的日益复杂性对现有的用于检测安全关键错误的硬件验证工具和方法提出了许多挑战。最近对处理器的攻击已经表明了发现和利用硬件漏洞的致命后果。Fuzzing已经成为一种很有前途的检测软件漏洞的技术。最近,一些硬件模糊技术已被提出。然而,它们受到几个限制,包括不适用于常用的硬件描述语言(HDL),如Verilog和VHDL,需要大量的人为干预,以及无法捕获许多固有的硬件行为,如信号转换和浮动线。在本文中,我们提出了一种新的硬件模糊器,TheHuzz,克服了上述限制,并显着提高了最先进的状态的设计和实现。我们分析了HDL中的硬件设计的内在行为,然后测量覆盖率的度量模型,这种行为。TheHuzz生成汇编级指令来增加所需的覆盖率值,从而发现许多可从软件中利用的硬件错误。我们在四个流行的开源处理器上评估了TheHuzz,与行业标准的随机回归方法和最先进的硬件模糊器DiffuzRTL相比,分别实现了1.98倍和3.33倍的速度。使用TheHuzz,我们在这些处理器中检测到11个漏洞,包括8个新漏洞,我们使用检测到的漏洞演示了漏洞利用。我们还表明,TheHuzz克服了半导体行业的形式化验证工具的局限性,通过比较其发现的Cadence JasperGold工具。
2022-01-24 cs.AR cs.CR cs.SE
Large-Scale Empirical Analysis of Continuous Fuzzing: Insights from 1 Million Fuzzing Sessions
Osaka University(大阪大学);Kyushu University(九州大学);Nara Women’s University(奈良女子大学)
针对OSS-Fuzz中878个项目约112万次会话的实证研究表明,持续模糊测试早期可发现大量既有缺陷,且覆盖率增长有助于后续漏洞检测。
2025-10-18 cs.SE
LLAMAFUZZ: Large Language Model Enhanced Greybox Fuzzing
University of California, Davis(加州大学戴维斯分校);University of Hong Kong(香港大学)
本文提出LLAMAFUZZ,利用大语言模型生成有效输入,提升灰盒模糊测试对结构化数据的处理能力,实验表明其在发现漏洞方面表现优异。
2026-03-17 cs.AI cs.CR cs.SE
Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
深度学习(DL)技术在许多具有挑战性的任务中被证明是有效的,并在实践中被广泛采用。然而,以前的工作表明,DL库,构建和执行DL模型的基础,包含错误,并可能导致严重的后果。不幸的是,现有的测试方法仍然不能全面地测试DL库。它们利用现有的训练模型,只在模型推理阶段检测错误。在这项工作中,我们提出松饼来解决这些问题。为此,Muffin应用了一种专门设计的模型模糊方法,该方法允许它生成不同的DL模型来探索目标库,而不是仅依赖于现有的训练模型。Muffin通过定制一组度量标准来测量不同DL库之间的不一致性,从而在模型训练阶段实现了差异测试。通过这种方式,Muffin可以最好地运用库代码来检测更多的bug。为了评估Muffin的有效性,我们对三个广泛使用的DL库进行了实验。结果表明,Muffin可以在流行的DL库的最新版本中检测到39个新错误,包括Tensorflow,CNTK和Theano。
2022-05-09 cs.SE
Large Language Models Based JSON Parser Fuzzing for Bug Discovery and Behavioral Analysis
本研究提出利用大语言模型生成测试用例与变异体,对开源JSON解析器开展模糊测试,以发现潜在漏洞并识别、化解不同解析器间的行为差异,提升JSON解析器的可靠性。
2024-10-30 cs.SE
HornFuzz: Fuzzing CHC solvers
针对缺乏 CHC 求解器专用模糊测试工具的问题,提出基于蜕变测试的变异灰盒工具 HornFuzz,并在 Spacer 中发现多个严重缺陷。
2023-06-08 cs.SE
Greybox Fuzzing of Distributed Systems
本文提出首个分布式系统灰盒模糊测试框架 Mallory,通过 Lamport 时间线抽象和 Q-learning 自适应注入故障,相比 Jepsen 探索更多行为并更快发现缺陷,在 Braft、Dqlite 和 Redis 等系统中发现 22 个零日缺陷。
2023-08-12 cs.SE
Fuzzing Deep-Learning Libraries via Automated Relational API Inference
越来越多的研究致力于DL模型测试。然而,在测试DL库方面的工作仍然有限,这些库是构建、训练和运行DL模型的基础。以前的模糊DL库工作只能为文档示例、开发人员测试或DL模型调用的API生成测试,留下大量未经测试的API。在本文中,我们提出了DeepREL,这是第一种自动推断关系API以实现更有效的DL库模糊化的方法。我们的基本假设是,对于被测的DL库,可能存在许多共享类似输入参数和输出的API;通过这种方式,我们可以很容易地从调用的API“借用”测试输入来测试其他关系API。此外,我们形式化的关系API的值等价和状态等价的概念,作为有效的错误发现的预言机。我们已经实现了DeepREL作为DL库的全自动端到端关系API推理和模糊技术,其1)基于API语法或语义信息自动推断潜在的API关系,2)合成用于调用关系API的具体测试程序,3)通过代表性测试输入验证推断的关系API,以及最后4)对经验证的关系API执行模糊化以发现潜在的不一致。我们对两个最流行的DL库PyTorch和TensorFlow的评估表明,DeepREL可以比最先进的FreeFuzz多覆盖157%的API。到目前为止,DeepREL总共检测到162个bug,其中106个已经被开发人员确认为以前未知的bug。令人惊讶的是,DeepREL在三个月的时间内检测到了整个PyTorch问题跟踪系统中13.5%的高优先级错误。此外,…
2022-07-12 cs.SE
Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing
JavaScript(JS)是一种流行的、与平台无关的程序设计语言。为了确保JS程序在不同平台上的互操作性,JS引擎的实现应该符合ECMAScript标准。然而,这样做是具有挑战性的,因为API行为有许多微妙的定义,并且定义不断发展。我们提出了COMFORT,一个新的编译器模糊框架,用于检测JS引擎的错误和行为偏离ECMAScript标准。COMFORT利用基于深度学习的语言模型的最新进展,自动生成JS测试代码。与以前的模糊器不同,COMFORT利用结构良好的ECMAScript规范自动生成测试数据以及测试程序,以暴露开发人员或手动编写的测试用例可能忽略的错误。然后,COMFORT在生成的测试用例上应用差异测试方法,以暴露标准一致性错误。我们将COMFORT应用于十个主流JS引擎。在200小时的自动化并发测试运行中,我们发现了所有测试过的JS引擎中的错误。我们已经确定了158个独特的JS引擎错误,其中129个已经得到验证,115个已经被开发人员修复。此外,21个Comfort生成的测试用例已添加到Test262,官方ECMAScript一致性测试套件。
2021-04-15 cs.PL cs.SE
Does Programming Language Matter? An Empirical Study of Fuzzing Bug Detection
Nara Institute of Science and Technology(奈良先端科学技术大学院大学);The University of Osaka(大阪大学);Nara Women’s University(奈良女子大学)
本研究通过大规模跨语言分析,揭示了编程语言对模糊测试漏洞检测效率和特性的影响,为语言感知的模糊测试策略提供依据。
2026-02-05 cs.SE
Pythia: Grammar-Based Fuzzing of REST APIs with Coverage-guided Feedback and Learning-based Mutations
Columbia University(哥伦比亚大学);Microsoft Research(微软研究院)
本文介绍了Pythia,这是第一个模糊器,它通过覆盖率引导反馈和基于学习的变异策略来增强基于语法的模糊,用于有状态的REST API模糊。Pythia使用统计模型从结构上有效的种子输入中学习目标REST API的常见使用模式。然后,它通过注入少量偏离常见使用模式的噪声,同时仍然保持句法有效性,从而生成基于学习的突变。Pythia的变异策略有助于生成语法上有效的测试用例,覆盖率引导的反馈有助于优先考虑更有可能找到bug的测试用例。我们提出了三个生产规模的实验评估,开源云服务表明,Pythia优于以前的方法,无论是在代码覆盖率和新的错误发现。使用Pythia,我们发现了29个新的错误,我们正在向各自的服务所有者报告的过程中。
2020-05-23 cs.LG 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
Large Language Models are Edge-Case Fuzzers: Testing Deep Learning Libraries via FuzzGPT
本文提出 FuzzGPT 技术,通过微调和上下文学习引导大型语言模型合成异常程序以进行模糊测试,在 PyTorch 和 TensorFlow 上检测出 76 个漏洞,大幅超越 TitanFuzz。
2023-04-04 cs.SE
LLM-Powered Silent Bug Fuzzing in Deep Learning Libraries via Versatile and Controlled Bug Transfer
Hong Kong University of Science and Technology(香港科技大学);Lingnan University(岭南大学);Huawei(华为);Central University of Finance and Economics(中央财经大学)
利用大语言模型实现深度学习库中无声bug的模糊测试,通过多功能且可控的bug转移技术发现79个新bug。
2026-02-27 cs.SE
ResolverFuzz: Automated Discovery of DNS Resolver Vulnerabilities with Query-Response Fuzzing
针对DNS解析器漏洞检测难的问题,提出聚焦短查询-响应序列、结合PCFG输入生成与字节级变异、用差分测试聚类识别非崩溃漏洞的ResolverFuzz系统,在主流DNS软件中发现23个漏洞,19个已确认修复,15个获CVE编号。
2023-10-04 cs.CR cs.NI cs.SE
TOPr: Enhanced Static Code Pruning for Fast and Precise Directed Fuzzing
本文提出TOPr,通过函数签名匹配等轻量级启发式增强静态代码剪枝,在保持高速的同时精确恢复间接控制流,显著提升定向模糊测试的速度、可达性与缺陷发现效率。
2023-09-18 cs.SE
GraphFuzz: Automated Testing of Graph Algorithm Implementations with Differential Fuzzing and Lightweight Feedback
针对图算法测试输入空间大、代码覆盖引导模糊测试效率低的问题,提出首个面向图算法的反馈引导模糊测试框架GraphFuzz,通过算法特定轻量反馈提升语料多样性,支持黑/灰盒测试,结合差分测试发现12个未知漏洞。
2025-02-21 cs.SE
COMMITGUARD: Differential Slice Fuzzing for Commit-Induced Bug Detection
Cheriton School of Computer Science University of Waterloo(滑铁卢大学切里顿计算机科学学院);Department of Computer Science University of Calgary(卡尔加里大学计算机科学系)
COMMITGUARD是一种基于提交感知差分切片的模糊测试方法,通过对比提交前后代码切片的 sanitizer 报告,从300次开源项目提交中识别出7份候选漏洞,其中5份为真实漏洞,平均分析单提交耗时32.4分钟,修改函数覆盖率达75.36%。
2026-08-19 cs.SE
Fuzzing Automatic Differentiation in Deep-Learning Libraries
针对深度学习库中自动微分组件测试不足的问题,提出首个API级模糊测试器$\ abla$Fuzz,利用差分测试一阶及高阶梯度并过滤数值不稳定性误报,在四大主流库中检测出173个缺陷,显著优于现有方法。
2023-02-08 cs.SE
Large Language Models are Zero-Shot Fuzzers: Fuzzing Deep-Learning Libraries via Large Language Models
检测深度学习(DL)库中的错误(例如,TensorFlow/PyTorch)对于几乎所有下游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个bug,其中41个已经被确认为以前未知的bug。本文表明,现代Titanic LLM可以直接执行几十年来研究的基于生成和基于突变的模糊,同时完全自动化,可推广,并适用于传统方法(如DL系统)具有挑战性的领域。我们希望Ti…
2023-03-07 cs.SE
Coverage-Guided Multi-Agent Harness Generation for Java Library Fuzzing
University of Lübeck(吕贝克大学)
本文提出一种多智能体架构,通过 LLM 功能智能体自动化生成 Java 库的模糊 harnesses,提升模糊测试效率并发现漏洞。
2026-03-09 cs.CR cs.SE
Risk Estimation in Differential Fuzzing via Extreme Value Theory
University of Texas at El Paso(埃尔帕索德克萨斯大学);Ruhr University Bochum(波鸿鲁尔大学);University of Illinois Chicago(伊利诺伊大学芝加哥分校)
本文研究利用极值理论(EVT)估计差分模糊测试中遗漏或低估软件错误的风险,通过分析随机过程的尾部分布,在真实Java库实验中证明基于EVT的外推优于基线方法并节省数千万次字节码执行。
2025-11-04 cs.SE
REST API Fuzzing by Coverage Level Guided Blackbox Testing
随着Web应用程序的增长,REST API已成为服务之间的主要通信方法。为了保证系统的可靠性和安全性,软件质量可以通过有效的测试方法来保证。黑盒模糊测试是进行大规模测试的有效方法之一。然而,传统的黑盒模糊测试产生随机数据而不判断输入的质量。我们为REST API实现了一个黑盒模糊测试方法。通过测试覆盖水平反馈,解决了在不知道突变有效性的情况下盲目突变的问题。我们还通过降低REST API的测试复杂度来增强变异策略,生成更合适的测试用例来覆盖可能的路径。我们通过测试两个大型开源项目来评估我们的方法,并报告和确认了89个错误。此外,我们在APIs.guru中发现了来自64个远程API服务的351个错误。该工作在https://github.com/iasthc/hsuan-fuzz上。
2021-12-31 cs.SE
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
SoK: Prudent Evaluation Practices for Fuzzing
该研究针对模糊测试评估受随机性、环境等因素影响导致可复现性不足的问题,系统分析了2018-2023年150篇顶会模糊测试论文的评估,发现现有统计检验等指南被严重忽视,揭示了评估中的不足与陷阱。
2024-05-16 cs.CR cs.SE
Fuzz4All: Universal Fuzzing with Large Language Models
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);University of Stuttgart(斯图加特大学)
本文提出 Fuzz4All,利用 LLM 自动提示与迭代模糊循环实现跨六种语言、九类系统的通用模糊测试,覆盖率优于专用工具并发现 98 个缺陷。
2024-12-09 cs.LG cs.SE
MoCo: Fuzzing Deep Learning Libraries via Assembling Code
针对深度学习库模糊测试在输入多样性、测试预言构建等方面的局限,提出基于代码组装的MoCo模糊测试方法,可快速定位漏洞,在三类主流DL库中检测出64个新漏洞。
2024-05-13 cs.SE
Coverage-Guided Tensor Compiler Fuzzing with Joint IR-Pass Mutation
University of Illinois at Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);Tongji University(同济大学);Fudan University(复旦大学)
在过去的十年中,深度学习(DL)系统已被广泛部署在各个领域,以方便我们的日常生活。与此同时,确保DL系统的正确性(例如,由于其固有的不确定性),并且DL系统中的错误可能导致严重的后果,甚至可能威胁人类生命。在文献中,研究人员已经探索了各种技术来测试,分析和验证DL模型,因为它们的质量直接影响相应的系统行为。最近,研究人员还提出了用于测试底层操作符级DL库(如TensorFlow和PyTorch)的新技术,这些库为每个高级DL操作符提供了通用的二进制实现,以便在许多平台上运行各种DL模型。然而,针对新兴张量编译器的可靠性的工作仍然有限,这些编译器旨在直接将高级张量计算图编译为高性能二进制文件,以提高效率,可移植性和可扩展性。本文针对张量编译器测试这一重要问题,提出了一种实用的模糊测试技术Tzer,用于广泛使用的TVM张量编译器。由于高级中间表示(IR)的变异空间有限,Tzer专注于对TVM的低级IR进行变异。更具体地说,Tzer利用覆盖反馈指导的通用和张量编译器特定的变异器进行进化IR变异;此外,Tzer还与IR变异串联执行传递变异,以实现更有效的模糊化。我们的研究结果表明,Tzer在张量编译器测试方面大大优于现有的模糊技术,覆盖率比第二好的技术高75%,测试价值高50%。到目前为止,Tzer已经检测到49个TVM以前未知的bug,其中37个bug得到确认,25个bug得到修复(PR…
2022-02-21 cs.CR cs.LG cs.PL
Interleaved Learning and Exploration: A Self-Adaptive Fuzz Testing Framework for MLIR
Institute of Software Chinese Academy of Sciences Beijing, China;College of Intelligence;Computing Tianjin University Tianjin, China;Shanghai Key Laboratory of Trustworthy Computing East China Normal University Shanghai, China
提出FLEX自适应模糊测试框架,利用神经网络生成、扰动采样和反馈增强循环,在MLIR上发现80个新缺陷,覆盖率提升42%。
2025-10-09 cs.SE