CCF B级以上期刊中包含了许多fuzz方向的高水平论文,其思路的创新点具有很强的实用性与启发性。我们将2022年CCF B级以上期刊中与fuzz技术相关的论文统计出来以供大家查阅,此次汇总按出版商(分别为ACM, Elsevier,IEEE, Springer)进行划分。我们还对此次分享的论文在研究方向上进行了分类,放于文末,供大家参考。下面请一起来看下论文及摘要情况吧。
Coverage-Directed Differential Testing of X.509 Certificate Validation in SSL/TLS Implementations
SSL和TLS是两个安全协议,用于在互联网上建立安全连接。X.509证书验证对安全很重要,需要在建立SSL/TLS连接之前进行验证。一些先进的测试技术,如frankencert,通过随机改变互联网可访问的证书,发现在不同的SSL/TLS实现中存在意想不到的,有时是关键的验证差异。正如这项工作所显示的,尽管有这些努力,X.509证书的验证仍然需要进行彻底的测试。本文提出transcert来应对这一挑战,这是一种以覆盖为导向的技术,可以更有效地测试现实世界的证书验证代码。我们的核心观点是:(1)利用容易获得的互联网证书作为种子证书(2)使用代码覆盖率来引导证书变异,以生成一组不同的证书。然后,生成的证书被用来揭示不同的证书验证实现之间的差异,即潜在的规律。我们实现了transcert,并对它与frankencert、NEZHA和RFCcert(三种先进的模糊测试技术)在四种广泛使用的SSL/TLS实现中进行了评估。评估结果清楚地显示了transcert的优势 在10000次迭代过程中,transcert发现了71个独特的验证差异,分别是frankencert、NEZHA和RFCcert发现的差异的12倍、1.4倍和7倍;它还补充了RFCcert对SSL/TLS实现的120条验证规则的一致性测试,其中85条完全由transcert生成的证书覆盖。我们确定了17个验证差异的根本原因,所有这些都已被证实,其中11个以前从未被报告过。transcert生成的X.509证书还揭示了,在广泛使用的PKI标准RFC 5280上,证书链验证的主要目标表述不明确。
Coverage-Guided Tensor Compiler Fuzzing with Joint IR-Pass Mutation
在过去的十年中,深度学习(DL)系统被广泛部署在各种应用领域,以促进我们的日常生活,如自然语言处理、医疗保健、活动识别和自动驾驶。同时,确保DL系统的正确性是极具挑战性的(例如,由于其固有的非确定性),DL系统中的错误会造成严重的后果,甚至可能威胁到人类的生命。在文献中,研究人员已经探索了各种技术来测试、分析和验证DL模型,因为它们的质量直接影响到相应的系统行为。最近,研究人员还提出了测试底层算子级DL库(如TensorFlow和PyTorch)的新技术,这些库为每个高级DL算子提供通用的二进制实现,是在不同硬件平台上运行DL模型的基础。然而,针对新兴的张量编译器(也称为DL编译器)的可靠性的工作仍然有限,这些编译器的目的是将高级张量计算图直接自动编译成高性能二进制文件,以获得比传统算子级库更好的效率、可移植性和可扩展性。因此,在本文中,我们针对张量编译器测试这一重要问题,提出了Tzer,一种针对广泛使用的TVM张量编译器的实用模糊处理技术。由于高层IR的突变空间有限,Tzer主要关注TVM的低层中间表征(IR)的突变。高层IR的突变空间有限。更具体地说,Tzer利用通用的和张量编译器专用的突变器,在覆盖率反馈的指导下进行多样化和进化的IR突变;此外,由于张量编译器为IR优化提供了各种传递(即转换),Tzer也在IR突变的同时执行传递突变,以实现更有效的模糊测试技术。我们的实验结果表明,Tzer的性能大大优于 现有的张量编译器测试的模糊技术,比第二好的技术覆盖率高75%,有价值的测试多50%。同时,Tzer的不同组件也通过消融研究得到了验证。到目前为止,Tzer已经为TVM检测到49个以前未知的bug,其中37个bug得到确认,25个bug得到修复(PR合并)。
Satisfiability Modulo Fuzzing: A Synergistic Combination of SMT Solving and Fuzzing
编程语言和软件工程工具经常会遇到难以通过形式化技术进行推理的组件,或者甚至没有形式化语义的组件--第三方库、内联汇编代码、SIMD指令、系统调用、机器学习模型的调用等等。然而,对这些组件的访问往往是作为输入-输出的口令来进行的。在某些输入上查询这些组件,以获得相应的输出。我们把这种函数称为闭箱函数。常规 SMT求解器无法处理这样的闭箱函数。
我们提出了SADHAK,一个针对SMT理论的闭箱函数的求解器。我们的核心思想是使用模糊器的协同组合来推理封闭盒函数,并使用SMT引擎来解决与SMT理论有关的约束。模糊器和SMT引擎试图通过交换丰富的,接口约束条件来收敛到一个模型,这个接口约束是有相关性并可以被模糊器和SMT引擎解释的。SADHAK与其他唯一能够处理此类约束的求解器相比,显示出了显著的优势,即有能力解决这类闭箱式约束。与最先进的求解器的最佳模式相比,SADHAK多解决了36.45%的基准问题,并有5.72倍的PAR-2得分;在两个工具都能解决的基准上,SADHAK(平均)快14.62倍。
AflIot: Fuzzing on linux-based IoT device with binary-level instrumentation
近年来,覆盖引导灰盒模糊法在检测传统设备上的安全漏洞方面已经证明了其有效性。插桩信息在复杂的灰盒fuzzer中起着重要的作用,如AFL(America Fuzzing Loop),可定向提高覆盖率和提取种子。开源程序利用封装的程序集来收集插桩信息,而闭源程序可以利用基于仿真的插桩引导模糊处理。由于闭源代码的普及,模糊测试非常需要仿真插桩技术。然而,对外设的访问要求给仿真器上的模糊测试带来了很大的困难,特别是对各种物联网设备。本文介绍了AFLIOT,首个基于Linux的IoT二进制程序的通用设备模糊测试框架。通过利用无偏移的二进制级插桩,二进制程序可以避免不必要的重写,继承外设的兼容性,并通过AFLIOT直接在物联网设备上执行。我们用真实的物联网程序在多个benchmark上评估AFLIOT。AFLIOT在13个二进制程序中识别出437个unique crash,包括95个新确认的unique crash。这些崩溃表明,AFLIOT在检测基于Linux的物联网设备上二进制程序中的潜在软件bug方面是高效和有效的。
MinSIB: Minimized static instrumentation for fuzzing binaries
代码插桩在软件分析领域被广泛应用。覆盖引导的模糊fuzzer通过执行时额外的插桩代码收集的路径信息来指导变异器。现有的插桩工具对每个基本块进行插桩来获取高代码覆盖率。这就导致了目标产生额外的时间开销并且减慢了模糊测试过程。同样,太多的路径导致了哈希碰撞,或者将fuzzer的注意力转移到不太重要的代码上。本文提出MinSIB(Minized static instrumentation for fuzzing binaries),对插桩代码更加重视,并且将插桩的位置放置在更感兴趣的功能区域或者与安全相关的基本块中。MinSIB是一个对winodws二进制的静态二进制插桩工具包。它通过内联模式将额外的代码插入到可执行文件中,以减少插桩造成的额外开销。同时,采用三种优化方法使插桩点数量最小化。基于此,MinSIB平均减少了90%的插桩点数量,运行时开销比完整的插桩少79%。此外,MinSIB通过以比现有工具快4到24倍的速度再现已知漏洞,提高了模糊测试的效率,并从6个现实世界的程序中发现了14个未知的错误。结果表明,对于Windows PE文件,MinSIB优于最先进的静态二进制检测工具(PE- afl)和动态检测工具(DynamoRIO)。
Fuzzing-based hard-label black-box attacks against machine learning models
机器学习模型容易受到对抗性例子的攻击。本文中研究了实际实验中的硬标签黑盒攻击。现有攻击的主要局限性是需要对目标模型收集大量的信息,在实际应用中效率低下,甚至有些情况下是不可行的。受到传统软件工程和计算机安全领域中非常成功的模糊测试方法的启发,我们提出了针对机器学习模型的基于模糊的硬标签黑盒攻击。本文设计了名为AdvFuzzer的方法来探索源图像和制导图像之间的多条路径,并设计了一个Local- Fuzzer来探索给定输入周围的输入空间,以识别潜在的对抗攻击样例。
本文证明了模糊攻击在生成成功的对抗示例方面是可行且有效的,显著减少了模型查询的数量和L0距离。更有趣的是,给定一个已证实攻击成功的示例后,LocalFuzzer可以立即生成更多成功的对抗示例,即使距离源示例的L2距离更小。
Fuzzing proprietary protocols of programmable controllers to find vulnerabilities that affect physical control
可编程控制器是工业控制系统(ICS)中的关键部件,是连接网络空间和物理世界的桥梁。随着工业物联网(IIoT)的发展,它们在物理上不再是孤立的,黑客可以远程利用漏洞对它们进行攻击。然而,由于可编程控制器私营化程度高,工作流程复杂,现有探测方法难以发现可编程控制器漏洞。在本文的研究中,提出了一种流量驱动的针对可编程控制器协议的模糊方法。具体地说,通过选择合适的种子和引导、观察物理设备状态来对其执行的私有协议进行模糊。在模糊化过程中,除了监测网络状态外,还使用示波器自动监测底层控制服务的状态。这些漏洞的触发使可编程控制器对执行器的控制失效,并直接影响物理世界。此外,将受损设备恢复到正常的生产任务是极其困难的。我们在来自6个主流制造商的15个可编程控制器上评估了我们的原型。根据分析结果,我们发现了26个漏洞,其中20个可以直接导致物理控制服务崩溃。
Fuzzing vulnerability discovery techniques: Survey, challenges and future directions
模糊测试是一种强大的软件漏洞发现工具,近年来在该领域取得了很大的进展。关于模糊漏洞发现方法的文献有限。因此,本文试图探讨模糊漏洞发现领域的最新技术进展,并对模糊器的分类提出改进。此外,还包括已经确定了的关键的研究挑战和未来研究领域,可能为研究人员提供新的见解。
Fuzzing with automatically controlled interleavings to detect concurrency bugs
并发漏洞对安全而言是不可抗拒的威胁,检测它们具有挑战性。
触发并发漏洞需要特定的线程交错和触发报错的输入。现有的方法只关注其中的一个因素而不是两个,或者是对小型程序进行了试验,这就产生了程序规模可伸缩问题。
本文介绍了AutoInter-fuzzing,这是一种具体控制线程交错的模糊器,并提供了一个交错感知的功率调度器来检测多线程程序中的漏洞。
AutoInter-fuzzing包括静态分析和动态模糊。在静态分析中,模糊器提取和优化了待探索的线程交错空间,并增加了控制交错的部分。在动态模糊中应用了幂次调度,重点关注揭示新的交错空间的种子。当崩溃发生时,fuzzer将交错信息记录在日志中,并使用它来再现和验证崩溃。
对13个实际多线程程序的实验表明,交错感知功率调度有效地扩大了未测试的交错空间,并且AutoInter-fuzzing在检测交错相关漏洞方面优于AFL和ConAFL。AutoInter-fuzzing检测到6个交错相关漏洞,包括2个新漏洞和4个交织无关漏洞。
Tardis: Coverage-Guided Embedded Operating System Fuzzing
嵌入式系统目前被应用于很多关键的工业场景中,而针对嵌入式系统的模糊测试的研究缺乏。针对嵌入式系统的模糊测试存在两个问题:一是嵌入式系统应用于不同的系统架构和平台,为模糊测试搜集覆盖率信息造成了极大的困难;二是嵌入式系统数量多,接口各不相同,很难使用统一的覆盖率接口。为了解决以上问题,本文提出了Tardis-路径引导的嵌入式模糊测试器。Tardis利用bitmap存储覆盖率信息,此设计跟系统无关,可以拓展到其他嵌入式系统。为了保证不同体系结构之间的可移植性,Tradis选择在编译时进行插桩,同时保证效率。Tradis还以CPU缓存友好的方式,通过简单的指令对覆盖率信息进行分析。实验方面,本文在目前广泛使用的嵌入式系统上进行测试。与黑盒模糊相比,Tradis算法的分支覆盖率平均提高了51.32%。还在目标嵌入式系统中发现了17个以前未知的错误。
UltraFuzz: Towards Resource-saving in Distributed Fuzzing
最近的研究试图通过并行计算来提高模糊测试的性能。然而,研究人员专注于提高效率,而忽略了测试资源日益增加的成本。分布式环境中的并行模糊测试放大了模糊处理随机性所造成的资源浪费问题。在并行模式下,由于缺乏合适的任务调度方案,不同模糊测试实例之间缺乏及时的模糊测试状态同步,导致任务冲突和工作负载不平衡,资源浪费问题严重。本文设计了一种用于分布式模糊处理的节约资源的模糊器UltraFuzz。UltraFuzz基于集中的动态调度,实现全局合理的任务调度和能量调度,避免资源浪费。此外,UltraFuzz可以弹性分配计算能力用于模糊测试和种子评估,从而避免了阻碍模糊测试的潜在的种子评估瓶颈。使用真实的程序对UltraFuzz进行评估,结果表明,在相同的测试资源下,UltraFuzz的性能优于最先进的工具,如AFL、AFL- p、PAFL和EnFuzz。最重要的是,实验揭示了某些似乎与直觉相反的结果,即与单核模糊测试相比,并行模糊测试可以实现“超线性加速”。我们通过进一步的实验来揭示这一现象背后的深层原因,并深入挖掘并行模糊测试比串行模糊测试的内在优势,包括种子能量调度的全局优化和局部最优种子的逃逸。此外,使用UltraFuzz还发现了24个漏洞。
Vulnerability Detection of ICS Protocols via Cross-State Fuzzing
工业控制系统(ICS)采用复杂的多状态协议实现对自动化设备的K可靠通信和智能控制。集成电路已广泛应用于各种嵌入式领域,如自动驾驶汽车系统、电力自动化系统等。然而,近年来,许多针对ICS的攻击,特别是针对其使用的协议的攻击,如劫持吉普Uconnect和特斯拉自动驾驶系统的攻击,以及针对国家基础设施的Stuxnet和蜻蜓病毒。保证ICS协议的安全性至关重要。本文提出了一个用于ICS协议实现漏洞检测的高效模糊平台Charon。在Charon中,我们提出了一种创新的模糊策略,该策略利用状态指导来提高跨状态代码的覆盖率,而不只是关注ICS协议模糊过程中单一的状态。此外,我们设计了一种新的反馈收集方法,利用程序状态推断来避免ICS协议在每次迭代时重新启动,允许连续模糊。我们在几个流行的ICS协议实现上对Charon进行了评估,包括real-time publish subscribe、IEC61850-MMS、MQTT等。与American fuzzy lop、Polar、AFLNET、Boofuzz、Peach等典型模糊器相比,其分支覆盖率平均提高率分别为234.2%、194.4%、215.9%、52.58%、35.18%。此外,在这些ICS协议中,已经确认了21个此前未知的漏洞(如堆栈缓冲区溢出),其中大部分是安全关键漏洞,相应的厂商已经发布了相应的补丁。
Hashing Fuzzing: Introducing Input Diversity to Improve Crash Detection
程序输入测试集的效益受到其多样性和规模的影响。语法覆盖率已成为多样性的代名词。虽然也存在其他更复杂的测量方法,例如样本与均匀分布的接近程度,但使用它们的方法往往取决于类型。本文使用 r-wise 散列函数为 HashFuzz 创建一个新颖的、保留语义的、可测试性转换。HashFuzz 的使用提高了基于插桩的 fuzzer 生成的测试集的多样性。本文使用研究中广泛使用的四种最先进的模糊器来评估 HashFuzz 转换对 Google Fuzzer 测试套件中的八个程序的影响。本文展示了在使用的所有模糊器中使用转换程序后,测试集性能的显著改进。此外包括多样性、维护或分支覆盖率的小幅改进——在最佳情况下最多提高 4.8 个百分点,以及独特的崩溃检测数量的显著改进——与未使用转换程序的测试集相比,增加了28到97个百分点。
Path Sensitive Fuzzing for Native Applications
基于覆盖率的模糊测试目前可以有效发现软件漏洞。监控代码覆盖率并且利用它去引导模糊测试是基于覆盖率引导的模糊器的关键部分。然而,监控全部精准的覆盖率信息会产生高插桩开销。目前模糊器使用粗粒度的代码覆盖率信息来实现有效的灰盒测试。这种不精确、不完整的代码覆盖率为模糊器带来了瓶颈。首先,他产生了路径冲突,阻碍模糊器发现可能会导致crash的种子。此外,它影响模糊器在模糊策略上的决策。本文提出了CollAFL,通过提供更精确的覆盖率信息来缓解路径冲突,同时保持了较少的插桩,还将覆盖率信息应用到三种新的模糊策略,提高发现新路径和漏洞的概率。实验方面,实现了两个版本CollAFL-基于AFL、CollAFL-bin-基于AFL-dyninst。在24个应用上进行测试,结果显示,路径冲突是常见的现象,在某些应用中,75%的边会与其他边产生冲突。但CollAFL和CollAFL-bin可以把路径冲突率降为0,同时结合三种模糊策略,在代码覆盖率和漏洞发现数上均超越了它们的对比(AFL和AFL-dyninst)。其中CollAFL在200个小时内比AFL多发现了20%的路径、320%的唯一崩溃数、260%的漏洞数;CollAFL-bin则比AFL-dyninst多发现了15%的路径数、200%的唯一崩溃数、150%的漏洞数。此外,CollAFL发现了157个新的安全bug,被授予了95个CVE编号。
Probabilistic Path Prioritization for Hybrid Fuzzing
混合模糊测试是模糊测试与concolic execution结合的一种软件漏洞检测技术。通过观察,模糊测试和concolic execution本质上是互补的,最先进的混合模糊系统部署了最优concolic测试和需求启动策略。虽然这些想法听起来很有趣,但本文指出了其中一些由于不现实或过于简化而导致的局限性。本文进一步提出了判别调度策略,并设计了一个概率混合模糊系统,以更好地利用concolic execution的能力。具体来说,本文设计了一个基于蒙特卡罗的概率路径优先排序模型来量化每条路径的难度,然后对它们进行优先排序以进行concolic execution。本文实现了一个DigFuzz的原型,选取两个有代表性的数据集(DARPA CQE\LAVA)和真实程序。结果表明,DigFuzz中的concolic execution在各个主要方面都优于最先进的混和模糊系统。特别的是,DigFuzz中的concolic execution比Driller中的concolic execution 更有助于发现更多的漏洞,前者发现了12个,后者发现了5个;并在CQE数据集上产生更多的代码覆盖率,前者18.9%,后者3.8%。
SNPSFuzzer: A Fast Greybox Fuzzer for Stateful Network Protocols Using Snapshots
灰盒模糊测试被广泛应用于无状态程序的测试中,并且取得了一定的效果。然而,大部分灰盒模糊器在有状态网络协议程序的测试上,速度和代码覆盖率都很低。现存的模糊器在对网络协议程序测试时,首先发送一系列被定义好的输入消息,然后发送变异消息。这个过程消耗了大量的时间。本文提出了SNPSFuzzer,使用快照模糊有状态的网络协议。SNPSFuzzer在网络协议程序处于特定状态时转储上下文信息,并在需要模糊状态时恢复上下文。此外,本文设计了一个消息链分析算法,去探索更多更深层次的网络协议状态信息。实验方面,在24小时的测试中,SNPSFuzzer与AFLNET相比,提高了70.7%的消息处理速度,增加了20.9%的代码覆盖率。此外,SNPSFuzzer在Tinydtls中发现了一个尚未报告的漏洞。
The Relevance of Classic Fuzz Testing: Have We Solved This One?
模糊测试已经发展了30年,面对着模糊测试技术和工具不可思议的进步,问题出现了,经典的、基本的模糊技术是否仍然有用和适用?在这个传统中,我们更新了基本的fuzz工具和测试脚本,并将它们应用于Linux、FreeBSD和MacOS上的大量Unix实用程序。和以前一样,我们的失败标准是程序崩溃或挂起。我们发现Linux上的74个工具中有9个崩溃或挂起,FreeBSD上的78个工具中有15个崩溃或挂起,MacOS上的76个工具中有12个崩溃或挂起。这三个平台上共有24个不同的实用程序出现故障。我们注意到,这些失败率略高于我们在1995年、2000年和2006年对命令行实用程序可靠性的研究。在基本的fuzz传统中,我们调试了每个失败的实用程序,并对失败的原因进行了分类。典型的失败类别,如指针和数组错误以及没有检查返回代码,在当前的结果中仍然广泛存在。此外,我们还发现出现了几种新的失败类型。我们提供了这些失败的例子,以展示导致它们发生的编程实践。顺便说一句,我们测试了现代编程语言(Rust)中有限数量的实用程序,发现它们的可靠性并不比标准实用程序好。
Unleashing Coveraged-Based Fuzzing Through Comprehensive, Efficient, and Faithful Exploitable-Bug Exposing
模糊测试已经成为一种发现软件错误的基本方法。通过模糊测试发现Bug需要两部分:探索代码路径以发现Bug,以及在发现Bug时暴露Bug。现有的模糊研究主要集中在提高代码覆盖率,而不是暴露bug。诸如AddressSanitizer (ASAN)和MemorySanitizer (MSAN)这样的 Sanitizer一直是暴露bug的主要工具。然而,基于 Sanitizer的bug暴露有以下局限性。(1)Sanitizer之间不兼容。(2)Sanitizer产生显著的运行时开销。(3)Sanitizer可能会产生假阳性,(4)暴露的bug可能不会被利用。为了解决这些限制,我们提出了EXPOZZER,一个模糊测试系统,可以全面、有效地暴露bug。EXPOZZER通过适当多样化的双执行环境中的差异检测错误,这不需要维护或检查执行元数据。我们设计了一个实用和确定性的双执行引擎,有双执行和模糊器的协同设计,bug敏感的多样化,全面和高效的分歧检测,以确保EXPOZZER的有效性。评估结果表明,EXPOZZER不仅可以可靠地检测cve分配的漏洞,还可以在经过良好测试的实际程序中检测新的漏洞。EXPOZZER比MemorySanitizer快10倍,与AddressSanitizer相近。
V -Fuzz: Vulnerability Prediction-Assisted Evolutionary Fuzzing for Binary Programs
模糊检测是一种通过使用大量异常输入循环执行目标程序来发现错误的技术。大多数基于覆盖率的模糊器都平等地考虑程序的所有部分,过于关注如何提高代码覆盖率。这样效率很低,因为易受攻击的代码只占用整个代码的一小部分。在本文中,我们设计并实现了一个称为V-Fuzz的进化模糊测试框架,其目的是在有限的时间内高效、快速地发现二进制程序的错误。V-Fuzz由两个主要组件组成:1)漏洞预测模型和2)面向漏洞的进化模糊器。给定一个二进制程序给V-Fuzz,漏洞预测模型将预先估计程序的哪些部分更容易受到攻击。然后,在漏洞预测结果的指导下,模糊器利用进化算法生成更有可能到达脆弱位置的输入。实验结果表明,V-Fuzz算法能够在漏洞预测的辅助下有效地发现漏洞。此外,V-Fuzz还发现了10个常见漏洞和暴露(cve),其中3个是新发现的。
Android Custom Permissions Demystified: A Comprehensive Security Evaluation
权限是Android上保护用户数据和隐私的基本安全机制。鉴于其重要性,安全研究人员从各个方面研究了权限的设计和使用。然而,以往的研究大多集中在系统权限的安全问题上。许多研究人员都忽视了应用程序可以使用自定义权限与其他应用程序共享其资源和功能,然而使用自定义权限的安全隐患尚未明知。在本文中,我们系统地评估了Android自定义权限的设计和实现,并实现了一个用于检测Android操作系统中存在的自定义权限相关漏洞的自动模糊测试工具,CuPerFuzzer+。CuPerFuzzer+将权限机制的操作视为黑盒,执行海量针对性测试用例触发提权。在实验中,CuPerFuzzer+成功发现了47条关键路径的5,932个有效漏洞案例。通过调查这些漏洞案例和分析Android操作系统的源代码,我们进一步发现了Android权限框架中存在的一系列严重设计缺陷,包括自定义权限悬垂、权限组映射不一致、自定义权限提升、权限定义不一致、休眠权限组,权限类型不一致。利用这些缺陷,恶意应用程序可以访问未经授权的平台资源。基于以上观察,我们提出了三个通用设计指南来保护自定义权限。我们的发现已得到Android安全团队的认可,并分配了CVE-2020-0418、CVE-2021-0306、CVE-2021-0307和CVE-2021-0317。
CAGFuzz: Coverage-Guided Adversarial Generative Fuzzing Testing for Image-Based Deep Learning Systems
深度神经网络(DNN)驱动技术已广泛应用于我们生活的各个方面。然而,所应用的DNN总是无法检测到错误行为,这可能会导致严重问题。已有几种方法(例如基于图像的DL系统)被提出用于生成对抗样本以自动测试深度学习系统。然而,这些方法存在两个限制。首先,现有方法只考虑对抗样本的小扰动,为某个特定的DNN模型设计和生成对抗样本。这可能会妨碍对抗样本对其他DNN模型的可移植性。其次,只使用浅层特征(例如像素级特征)来判断生成的对抗样本与原始样本之间的差异。深层特征(图像对象类别和场景语义等高级语义信息)被完全忽略。为了解决这两个问题,我们提出了一种覆盖率引导的对抗样本生成模糊测试方法CAGFuzz,其用于基于图像的DL系统。CAGFuzz能够为主流DNN模型生成对抗样本,以发现它们的潜在错误。首先,我们基于一般数据集训练一个对抗样本生成器(AEG),AEG只考虑数据特征来缓解可迁移性问题。其次,我们提取原始样本和对抗样本的深层特征,并通过余弦相似度来约束对抗样本,以确保对抗样本的深层特征保持不变。最后,我们使用对抗样本重新训练模型。基于几个标准数据集,我们设计了一组专门的实验来评估CAGFuzz。实验结果表明,CAGFuzz可以检测出更多的隐藏错误,增强目标DNN模型的准确性,并生成具有更高可迁移性的对抗样本。
GREYHOUND: Directed Greybox Wi-Fi Fuzzing
最近KRACK和Dragonslayer等复杂Wi-Fi漏洞的增加表明迫切需要有效的Wi-Fi协议测试工具。在本文中,我们概念化、设计并实现了一种名为GREYHOUND的定向模糊测试方法,该方法可自动测试Wi-Fi客户端实施是否存在漏洞,如崩溃与不合规行为。利用整体Wi-Fi协议模型,GREYHOUND在目标Wi-Fi客户端的特定状态下引导模糊器。GREYHOUND与Wi-Fi客户端交换变异的数据包,旨在诱导客户端表现出严重偏离Wi-Fi协议的异常行为。我们已经实现了GREYHOUND并在各种真实的Wi-Fi客户端上对其进行评估,包括智能手机、Raspberry Pi、物联网设备微控制器和医疗设备。我们的评估表明,GREYHOUND不仅可以自动发现需要专门验证的已知漏洞(包括KRACK和Dragonslayer),还能发现流行Wi-Fi客户端设备中的四个新漏洞。所有发现的漏洞均已得到制造商的确认,并为其分配了三个CVE。我们还因发现安全漏洞而赢得了2,200美元的漏洞赏金。此外,我们对三种现有Wi-Fi模糊测试工具进行评估,所有这些工具都无法发现GREYHOUND发现的任何漏洞(包括崩溃)。最后,我们部署GREYHOUND来测试汽车主机上的Wi-Fi客户端实施,GREYHOUND自动发现KRACK、Dragonslayer和这些Wi-Fi实施中的其他异常。这样一个在真实世界程序的尝试证明了GREYHOUND的必要性和有效性。
STATEAFL: Greybox fuzzing for stateful network servers
对网络服务器进行模糊测试是一项技术挑战,因为目标服务器的行为取决于其在一系列多消息中的状态。现有解决方案成本高昂且难以使用,因为它们依赖于手动定制的工件,例如协议模型、协议解析器和学习框架。本文工作的目的是为网络服务器开发一个只依赖于目标程序的轻量级分析,无需手动定制工件的灰盒模糊器(STATEAFL),类似于 AFL 模糊器为无状态程序实现的方式。所提模糊器通过在编译时对内存分配和网络 I/O 操作插入探针来对目标服务器进行检测。在运行时,它通过拍摄长期内存区域的快照并应用模糊哈希算法(局部敏感哈希)将内存内容映射到唯一的状态标识符来推断目标服务器的当前协议状态。模糊器逐步构建用于指导模糊测试的协议状态机。我们实施并发布了 STATEAFL 作为开源软件。作为可重复实验的基础,我们将 STATEAFL 与大量网络服务器的流行协议集成在一起,无需手动定制来适应协议。实验结果表明,该模糊器可以在无需手动定制的情况下应用于大量流行协议的网络服务器,并且它可以实现与定制模糊测试相当甚至更好的代码覆盖率和错误检测。此外,我们的定性分析表明,从内存中推断出的状态比仅使用来自消息的响应代码更好地反映了服务器行为。
我们将此次统计的论文大体分为两类,一是技术创新,如在种子调度技术,引导,变异技术上的创新;另一种是面向实际应用的创新,如面向协议,物联网的创新。具体分类情况如下:
减少插桩开销技术
MinSIB: Minimized static instrumentation for fuzzing binaries(Elsevier, Computers & Security)
基于fuzz的对抗样本生成技术
Fuzzing-based hard-label black-box attacks against machine learning models(Elsevier, Computers & Security)
Fuzz研究综述
Fuzzing vulnerability discovery techniques: Survey, challenges and future directions(Elsevier, Computers & Security)
多线程交错技术
Fuzzing with automatically controlled interleavings to detect concurrency bugs(Elsevier, The Journal of Systems & Software)
并行技术
UltraFuzz: Towards Resource-saving in Distributed Fuzzing(IEEE Transactions on Software Engineering)
测试样例生成技术
Hashing Fuzzing: Introducing Input Diversity to Improve Crash Detection(IEEE Transactions on Software Engineering)
路径覆盖率监控技术
Path Sensitive Fuzzing for Native Applications(IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING)
Fuzz与concolic execution结合技术
Probabilistic Path Prioritization for Hybrid Fuzzing(IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING)
Fuzz技术兼容性研究
The Relevance of Classic Fuzz Testing: Have We Solved This One? (IEEE Transactions on Software Engineering)
Sanitizer优化技术
Unleashing Coveraged-Based Fuzzing Through Comprehensive, Efficient, and Faithful Exploitable-Bug Exposing(IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING)
漏洞位置预测技术
V -Fuzz: Vulnerability Prediction-Assisted Evolutionary Fuzzing for Binary Programs(IEEE TRANSACTIONS ON CYBERNETICS)
面向协议的方法
Coverage-Directed Differential Testing of X.509 Certificate Validation in SSL/TLS Implementations(ACM Transactions on Software Engineering and Methodology)
Vulnerability Detection of ICS Protocols via Cross-State Fuzzing(IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS)
SNPSFuzzer: A Fast Greybox Fuzzer for Stateful Network Protocols Using Snapshots(IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY)
面向深度学习张量编译器的方法
Coverage-Guided Tensor Compiler Fuzzing with Joint IR-Pass Mutation(Proceedings of the ACM on Programming Languages)
面向SMT闭箱函数的方法
Satisfiability Modulo Fuzzing: A Synergistic Combination of SMT Solving and Fuzzing(Proceedings of the ACM on Programming Languages)
面向物联网的方法
AflIot: Fuzzing on linux-based IoT device with binary-level instrumentation(Elsevier, Computers & Security)
面向可编程控制器的方法
Fuzzing proprietary protocols of programmable controllers to find vulnerabilities that affect physical control(Elsevier, Journal of Systems Architecture)
面向嵌入式系统的方法
Tardis: Coverage-Guided Embedded Operating System Fuzzing(IEEE, IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS)
面向Android自定义权限的方法
Android Custom Permissions Demystified: A Comprehensive Security Evaluation(IEEE, IEEE TRANSACTIONS ON SOFTWARE ENGINEERING)
面向深度学习库的方法
CAGFuzz: Coverage-Guided Adversarial Generative Fuzzing Testing for Image-Based Deep Learning Systems(IEEE TRANSACTIONS ON SOFTWARE ENGINEERING)
面向WiFi协议的方法
GREYHOUND: Directed Greybox Wi-Fi Fuzzing(IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING)
面向网络服务器的方法
STATEAFL: Greybox fuzzing for stateful network servers(Springer, Empirical Software Engineering )
以上就是本次分享的全部内容,欢迎各位读者发消息与我们共同探讨。