2023信息安全领域四大顶会fuzz方向论文汇总
2023-12-29 15:58:28 Author: mp.weixin.qq.com(查看原文) 阅读量:8 收藏

信息安全领域四大顶会代表了信息安全领域研究的前沿方向,一直备受关注,其论文涵盖的安全领域非常广泛。小编将2023年四大顶会中与fuzz技术相关的论文统计出来以供大家查阅。小编还将此次分享的论文在研究方向上进行了分类,以供大家参考。论文及摘要情况如下:

USENIX Security

Fuzztruction: Using Fault Injection-based Fuzzing to Leverage Implicit Domain Knowledge

论文作者

Nils Bars,Moritz Schloegel,Tobias Scharnowski, Nico Schiller,Thorsten Holz

论文作者机构

Ruhr-Universität Bochum,CISPA Helmholtz Center for Information Security

所属方向

用例生成

论文摘要

现今的数字通信依赖于复杂的协议和规范来交换结构化消息和数据。通信自然涉及两个端点:一个生成数据,另一个消耗数据。

传统的模糊测试方法用模糊器取代了一个端点进行生成,并在被测目标程序上快速执行许多变异输入。虽然这种完全自动化的方法适用于松散结构的情况,但这不适用于高度结构化的形式,尤其是那些经过复杂转换(如压缩或加密)的架构。

在这项工作中,本文提出了一种新的视角,即在不依赖重量级程序分析技术、粗粒度语法近似或人类领域专家的情况下,以高度复杂的格式生成输入。

本文没有对目标程序的输入进行变异,而是在数据生成程序中注入错误,使这些数据几乎是预期的格式。这样的数据绕过了被测程序中的初始解析阶段,并到达更深层次的程序状态,从而触发更有趣的程序行为。

为了实现这一概念,本文提出了一系列以有针对性的方式对生成器进行变异的编译时和运行时分析方法,使生成器保持完整,并能产生满足复杂格式约束的半有效输出。

本文在名为FUZZTRUCTION的原型中实现了这种方法,并表明它优于最先进的模糊器AFL++、SYMCC和WEIZZ。FUZZTRUCTION比现有方法覆盖范围要大得多,尤其是在使用加密原语的目标上。在本文的评估过程中,FUZZTRUCTION发现了151个独特的崩溃(在重复数据消除之后)。

到目前为止,本文手动分类并报告了27个错误,其中4个被分配了CVE编号。

DynSQL: Stateful Fuzzing for Database Management Systems with Complex and Valid SQL Query Generation

论文作者

Zu-Ming Jiang,Jia-Ju Bai,Zhendong Su

论文作者机构

ETH Zurich,Tsinghua University

所属方向

面向数据库的方法

论文摘要

数据库管理系统是现代软件的重要组成部分。为了确保数据库管理系统的安全性,最近的方法通过自动生成SQL查询将模糊化应用于测试数据库管理系统。

然而,现有的DBMS模糊器在生成复杂有效的查询方面受到限制,因为它们严重依赖于预定义的语法模型和关于DBMS的固定知识,并且不能捕获DBMS特定的状态信息。因此,这些方法遗漏了DBMS中的许多深层缺陷。

在本文中,本文提出了一种新的有状态模糊方法来有效地测试DBMS并发现深层缺陷。本文的基本想法是,在DBMS处理每个SQL语句后,可以动态收集有用的状态信息,以便于以后生成查询。

基于这个想法,本文的方法利用捕获的状态信息执行动态查询交互,以增量生成复杂有效的SQL查询。为了进一步提高生成查询的有效性,本文的方法使用查询处理的错误状态来过滤无效的测试用例。

本文将本文的方法实现为一个完全自动的模糊测试框架DynSQL。DynSQL在6个广泛使用的数据库管理系统(包括SQLite,MySQL, MariaDB, PostgreSQL, MonetDB和ClickHouse)上进行了评估,发现了40个独特的错误。在这些错误中,38个已被确认,21个已被修复,19个已被分配CVE ID。

在本文的评估中,DynSQL优于其他最先进的DBMS模糊器,实现了41%的代码覆盖率,并发现了许多其他模糊器遗漏的错误。

FuzzJIT: Oracle-Enhanced Fuzzing for JavaScript Engine JIT Compiler

论文作者

Junjie Wang,Zhiyi Zhang,Shuang Liu,Xiaoning Du,Junjie Chen

论文作者机构

College of Intelligence and Computing, Tianjin University;CodeSafe Team, Qi An Xin Group Corp;Monash University

所属方向

面向Java的方法

论文摘要

本文提出了一种新的模糊技术FuzzJIT,用于挖掘JavaScript引擎中的JIT编译器错误。基于本文的见解,JIT编译器只会加速JavaScript代码的执行,而不会改变JavaScript代码的运行结果。

FuzzJIT可以为每个测试用例激活JIT编译器,并敏锐地捕捉JIT编译器引起的任何执行差异。成功的关键是设计一个输入包装模板,它可以主动激活JIT编译器,并使生成的样本能够自行感知,并且在执行过程中进行自发测试。

本文还设计了一组突变策略,以强化对JIT编译器错误的程序元素的挖掘。FuzzJIT钻取JIT编译器,同时保留了模糊测试的高效性。

本文已经实现了该设计,并应用原型在四个主流JavaScript引擎中发现了新的JIT编译器错误。在一个月内,在JavaScriptCore, V8, SpiderMonkey和ChakraCore中分别挖掘到了10个、5个、2个和16个新错误,其中3个被证明是可利用的。

GLeeFuzz: Fuzzing WebGL Through Error Message Guided Mutation

论文作者

Hui Peng,Zhihao Yao,Ardalan Amiri Sani,Dave (Jing) Tian, Mathias Payer

论文作者机构

Purdue University, UC Irvine, EPFL

所属方向

面向Java的方法

论文摘要

WebGL是一组用于GPU加速图形处理的标准化JavaScript API。WebGL接口的安全性至关重要,因为它可能暴露对主机操作系统中底层图形堆栈(包括本机GL库和GPU驱动程序)的远程和非屏蔽访问。

不幸的是,将最先进的模糊技术应用于WebGL接口以发现漏洞是十分具有挑战性的,因为:

(1)其巨大的输入状态空间

(2)在内核中收集并发进程、闭源库和设备驱动程序的代码覆盖率是不可行的。

本文的模糊技术GLeeFuzz通过错误消息而不是代码覆盖来引导输入突变。

根据本文的观察,浏览器会发出有意义的错误消息,以帮助开发人员调试WebGL程序。错误消息指示输入的哪一部分失败(例如,参数不完整、参数无效或API调用之间的依赖关系不满足)。模糊器利用错误消息作为反馈,通过将突变集中在输入的错误部分,有效地扩大了覆盖范围。

本文分析了Chrome的WebGL实现,以确定发出错误的语句和输入的被拒绝部分之间的依赖关系,并使用这些信息来指导输入突变。

本文在不同的桌面和移动操作系统上评估了Chrome、Firefox和Safari上的GLeeFuzz原型。本文发现了7个漏洞,其中4个在Chrome中,2个在Safari中,1个在Firefox中。Chrome漏洞允许远程攻击者冻结GPU,并可能以浏览器权限执行远程代码。

Automata-Guided Control-Flow-Sensitive Fuzz Driver Generation

论文作者

Cen Zhang,Yuekang Li,Hao Zhou,Xiaohan Zhang,Yaowen Zheng,Xian Zhan, Xiaofei Xie,Xiapu Luo,Xinghua Li,Yang Liu,Sheikh Mahbub Habib

论文作者机构

Nanyang Technological University, Continental-NTU Corporate Lab;The Hong Kong Polytechnic University;Xidian University;Southern University of Science and Technology;Singapore Management University;Continental AG, Germany

所属方向

Fuzz驱动生成技术

论文摘要

模糊测试驱动程序对于模糊测试库API是必不可少的。然而,手动编写模糊测试驱动程序是困难和耗时的。因此,已经提出了一些自动生成模糊测试驱动程序的工作。

尽管这些工作可以从目标库的应用程序中学习正确的API使用,但仍有三个挑战阻碍了生成的模糊测试驱动程序的质量:

1)如何学习和利用API使用中的控制依赖性;

2) 如何处理学习API使用的噪音,特别是对于复杂的现实世界应用程序;

3) 如何在模糊驱动程序中组织API使用的独立集合,以更好地与模糊器协调。

为了解决这些挑战,本文提出了RUBICK,一种自动控制流敏感模糊测试驱动程序生成技术。RUBICK具有三个关键特性:

1)它将API使用(包括API数据和控制依赖性)建模为确定性有限自动机;

2) 它利用主动自动机学习算法来提取所学习的API使用;

3) 它综合了一个单一的自动引导模糊测试驱动程序,为模糊器提供了在模糊过程中测试API使用的独立集合的调度接口。

在实验过程中,RUBICK生成的模糊测试驱动程序比基线显示出显著的性能优势,比FUZZGEN生成的模糊驱动器平均多覆盖50.42%的边缘,比OSS-fuzz或人类专家手动编写的模糊驱动器多覆盖44.58%的边缘。

通过学习大型开源项目,RUBICK已经为11个流行的Java项目生成了模糊测试驱动程序,其中两个项目已经合并到OSS-fuzz中。

到目前为止,使用这些模糊驱动程序发现了199个漏洞,其中包括四个CVE,这些漏洞可以影响下载量达数千万的流行PC和Android软件。

PolyFuzz: Holistic Greybox Fuzzing of Multi-Language Systems

论文作者

Wen Li,Jinyang Ruan,Guangbei Yi,Long Cheng,Xiapu Luo,Haipeng Cai

论文作者机构

Washington State University;Clemson University;The Hong Kong Polytechnic University

所属方向

面向多语言程序的方法

论文摘要

使用多种编程语言构建一个软件系统的做法虽然在软件开发过程中具有许多优势,但也会在生成的代码中引入额外的安全漏洞。随着这种做法越来越普遍,确保多语言系统的安全迫在眉睫。

模糊测试一直是一种强大的安全测试技术,但现有的模糊器通常仅限于单语言软件。在本文中,本文介绍了 PolyFuzz,它是一种灰盒模糊器,可通过跨语言覆盖反馈以及对跨语言程序输入和分支谓词(各部分)之间语义关系的明确建模,对给定的多语言系统进行整体模糊测试。

PolyFuzz 具有可扩展性,可支持以不同语言组合编写的多语言代码,并已针对 C、Python、Java 及其组合进行了实现。

本文对 PolyFuzz 和最先进的单语言模糊器进行了评估,并以这些语言作为基准,对 15 个真实世界的多语言系统和 15 个单语言基准进行了测试。

在多语言程序中,PolyFuzz 的代码覆盖率比基准高出 25.3-52.3%,发现的错误也比基准多出 1-10个,而在单语言程序中,PolyFuzz 的代码覆盖率比基准高出 10-20%。

整体上,PolyFuzz发现了12个之前未知的多语言漏洞,2个单语言漏洞,其中5个获得了CVE编号。论文结果表明,PolyFuzz在跨语言模糊测试上有巨大优势,相比于单语言模糊器在多语言整体fuzzing的场景中具有巨大的需求。

AIFORE: Smart Fuzzing Based on Automatic Input Format Reverse Engineering

论文作者

Ji Shi,Zhun Wang,Zhiyao Feng,Yang Lan,Shisong Qin,Wei You,Mathias Payer,Chao Zhang

论文作者机构

Institute of Information Engineering,Chinese Academy of Sciences;Institute for Network Science and Cyberspace & BNRist, Tsinghua University;Zhongguancun Lab;Singular Security Lab, Huawei Technologies; School of Cyber Security, University of Chinese Academy of Sciences;EPFL;Renmin University of China

所属方向

种子调度技术

论文摘要

了解程序的输入格式对于模糊测试中有效生成输入至关重要。自动输入格式逆向工程是一种极具吸引力但又极具挑战性的学习格式的方法。

在本文中,本文探讨了自动输入格式逆向工程所面临的几个挑战,并提出了一种智能模糊解决方案 AIFORE,它充分利用了逆向格式并从中受益。输入字段的结构和语义是由处理它们的基本模块(BB)而不是输入规范决定的。

因此,本文首先利用字节级污点分析来识别每个 BB 处理的输入字节,然后利用最小群集算法识别总是一起处理的不可分割输入字段,并利用描述 BB 行为特征的神经网络模型来学习它们的类型。

最后,本文根据推断出的格式知识设计了一种新的功率调度算法,用于指导智能模糊处理。本文实现了 AIFORE 的原型,并评估了格式推断的准确性以及与最先进(SOTA)格式反转解决方案和模糊器相比的模糊性能。

在字段边界和类型识别的准确性方面,AIFORE明显优于SOTA基准。利用AIFORE,本文在15个程序中发现了20个被其他模糊器遗漏的错误。

autofz: Automated Fuzzer Composition at Runtime

论文作者

Yu-Fu Fu,Jaehyuk Lee,Taesoo Kim

论文作者机构

Georgia Institute of Technology

所属方向

多fuzzer融合技术

论文摘要

模糊技术在软件漏洞检测领域越来越受欢迎,这得益于人们在开发各种模糊器方面付出的巨大努力。由于采用了各种模糊技术,大多数模糊器都能在所选目标上表现出卓越的性能。然而,矛盾的是,模糊器的多样性也给本文选择最适合复杂现实世界程序的模糊器带来了困难,本文称之为选择负担。

为了解决这个问题,各社区试图创建一套标准基准来比较和对比模糊器在各种应用中的性能,但结果总是不尽如人意--平均而言性能最好的模糊器并不能保证为用户感兴趣的目标提供最佳结果。

为了克服这一问题,本文提出了一种自动化、非侵入式的元模糊器(称为 autofz),通过动态组合最大限度地发挥现有最先进模糊器的优势。

对于终端用户来说,这意味着与其花时间选择采用哪种模糊器(概念类似于 ML 中的超参数调整),不如简单地将所有可用模糊器都放到 autofz 中(概念类似于 AutoML),从而获得最佳的最优结果。

关键的思路是监控模糊器的运行进度,即所谓的趋势(概念类似于梯度下降),并对每个模糊器的资源分配(如 CPU 时间)进行细粒度调整。

这与现有的静态组合一组模糊器或通过对每个目标程序进行详尽预训练的方法形成了鲜明对比--autofz 可以在运行时以细粒度的方式为活动工作负载推导出一组合适的模糊器。

本文的评估结果表明,在计算资源相同的情况下,autofz 在 12 个可用基准中的 11 个基准中的表现优于任何表现最佳的单个模糊器,在 20 个基准中的 19 个基准中的表现优于最佳协作模糊方法,而无需事先了解覆盖范围。

此外,在 UNIFUZZ 和 FTS 上,autofz 发现的错误平均比单个模糊器多 152%,在 UNIFUZZ 上,比协作模糊法多 415%。

Automated Exploitable Heap Layout Generation for Heap Overflows Through Manipulation Distance-Guided Fuzzing

论文作者

Bin Zhang,Jiongyi Chen,Runhao Li,Chao Feng,Ruilin Li,Chaojing Tang,

论文作者机构

National University of Defense Technology

所属方向

面向堆布局利用的方法

论文摘要

生成可利用的堆布局是利用堆溢出产生有效漏洞的基本步骤。为此,从目标程序中识别出的堆基元,作为操纵堆布局的功能单元,被战略性地用于构建可利用的状态。为了灵活使用基元,之前的研究只关注特定程序类型或具有派发器循环结构的程序。

除此之外,由于难以明确、灵活地使用基元,自动生成可利用的堆布局对于通用程序来说非常困难。

本文介绍了 Scatter,它能以无基元的方式生成可利用的堆布局,以解决通用程序中的堆溢出问题。Scatter 的核心是一个模糊器,它以一种新的操纵距离为指导,这种操纵距离可以测量受害者对象在堆布局空间中损坏的距离。

为了使基于模糊的方法实用化,Scatter 利用了一系列技术来提高效率,并处理堆管理器在实际环境中的复杂行为所带来的副作用。

本文的评估结果表明,Scatter 可以针对 10 个通用程序中 27 个堆溢出中的 18 个,成功生成总共 126 个可利用的堆布局。

Bleem: Packet Sequence Oriented Fuzzing for Protocol Implementations

论文作者

Zhengxiong Luo, Junze Yu, Feilong Zuo, Jianzhong Liu, Yu Jiang, Ting Chen, Abhik Roychoudhury, Jiaguang Sun

论文作者机构

Tsinghua University, University of Electronic Science and Technology of China, National University of Singapore

所属方向

面向网络协议的方法

论文摘要

协议实现是网络基础设施的重要组成部分。协议实现中隐藏的缺陷很容易使设备受到对手的攻击。因此,保证其正确性非常重要。然而,由于反馈机制无效和协议状态空间探索技术不足,常用的漏洞检测技术(如模糊测试)在测试这些实现时面临越来越多的挑战。

本文介绍的 Bleem 是一种面向数据包序列的黑盒模糊器,用于协议实现的漏洞检测。Bleem 并不关注单个数据包的生成,而是在序列级别上生成数据包。

它通过非侵入式分析系统输出序列来提供有效的反馈机制,借助及时涵盖各方的状态空间跟踪来支持引导式模糊,并利用交互式数据流信息来生成协议逻辑感知的数据包序列。

本文在 15 个广泛使用的知名协议(如 TLS 和 QUIC)的实现上对 Bleem 进行了评估。结果表明,与 Peach 等最先进的协议模糊器相比,Bleem 在 24 小时内实现了大幅提高的分支覆盖率(最高提高了 174.93%)。

此外,Bleem 还暴露了著名协议实现中的 15 个安全关键漏洞,并分配了 10 个 CVE。

BoKASAN: Binary-only Kernel Address Sanitizer for Effective Kernel Fuzzing

论文作者

Mingi Cho, Dohyeon An, Hoyong Jin, and Taekyoung Kwon

论文作者机构

Yonsei University

所属方向

二进制消杀器技术

论文摘要

内核地址扫描器(KASAN)是在 Linux 内核中查找无用和越界错误的重要工具,它需要内核源代码来进行编译时检测。要将 KASAN 应用于闭源系统,本文必须开发一种纯二进制 KASAN,而这是一项挑战。

使用二进制重写和处理器支持来为二进制模块运行 KASAN 的技术需要一个应用 KASAN 的内核,因此仍然需要内核源代码。动态仪器提供了一种替代方法,但大大增加了性能开销,使得内核模糊不切实际。

为了解决这些问题,本文提出了第一个实用的二进制 KASAN(名为 BoKASAN),它可以通过对整个内核二进制文件的动态检测有效地进行地址清除。

本文的关键想法是选择性消毒,它能确定要消毒的目标进程,并挂钩页面故障机制,从而显著降低动态仪器的性能开销。

本文的主要观点是,内核漏洞与模糊器创建的进程最为相关。因此,BoKASAN 会特意对与这些进程相关的目标内存区域进行清理,而对剩余内存区域不进行清理,以便有效地进行内核模糊测试。

本文的评估结果表明,BoKASAN 在闭源系统上非常实用,即使在纯二进制内核和模块上也能达到 KASAN 的编译器级性能。

在 Linux 内核上,与 KASAN 相比,BoKASAN 在 Janus 数据集中检测到的错误略多,而在 Syzkaller/SyzVegas 数据集中检测到的错误略少;在 5 天的模糊测试中,BoKASAN 发现的唯一错误数量相同,执行的基本模块数量也相近。对于 Windows 内核和 Linux 内核的二进制模块,BoKASAN 都能有效地发现漏洞。消融结果表明,选择性消毒影响了这些结果。

CarpetFuzz: Automatic Program Option Constraint Extraction from Documentation for Fuzzing

论文作者

Dawei Wang, Ying Li, Zhiyu Zhang, Kai Chen

论文作者机构

SKLOIS, Institute of Information Engineering, Chinese Academy of Sciences, China; School of Cyber Security, University of Chinese Academy of Sciences, China; Beijing Academy of Artificial Intelligence, China

所属方向

样例生成技术

论文摘要

软件中的大规模代码支持着丰富多样的功能,同时也包含着潜在的漏洞。模糊法作为最流行的漏洞检测方法之一,在业界和学术界都在不断发展,旨在通过覆盖更多代码发现更多漏洞。

然而,本文发现,即使使用了最先进的模糊器,仍有一些未开发的代码只能通过特定的程序选项组合来触发。由于没有考虑选项之间的约束(或称为关系),简单地改变选项可能会产生许多无效组合。

在本文中,本文利用自然语言处理(NLP)技术从程序文档中自动提取选项描述,并分析选项之间的关系(如冲突、依赖关系),然后过滤掉无效组合,只留下有效组合进行模糊测试。

本文开发了一款名为 CarpetFuzz 的工具,并对其性能进行了评估。结果显示,CarpetFuzz 以 96.10% 的精确度和 88.85% 的召回率准确提取了文档中的关系。基于这些关系,CarpetFuzz 减少了 67.91% 的待测选项组合。它帮助 AFL(american fuzzy lop) 多发现了 45.97% 其他模糊器无法发现的路径。在分析了 20 个流行的开源程序后,CarpetFuzz 发现了 57 个漏洞,其中包括 43 个未披露的漏洞。本文还成功获得了 30 个漏洞的 CVE ID。

DDRace: Finding Concurrency UAF Vulnerabilities in Linux Drivers with Directed Fuzzing

论文作者

Ming Yuan, Bodong Zhao, Penghui Li, Jiashuo Liang, Xinhui Han, Xiapu Luo, Chao Zhang

论文作者机构

Tsinghua University, Zhongguancun Lab, The Chinese University of Hong Kong, Peking University, The Hong Kong Polytechnic University

所属方向

面向UAF漏洞的方法

论文摘要

use-after-free(UAF)漏洞占 Linux 驱动程序漏洞的很大一部分。人们已经提出了许多解决方案来查找并发漏洞或 UAF 漏洞,但很少有解决方案能直接用于有效查找并发 UAF 漏洞。

在本文中,本文提出了首个并发定向灰盒模糊解决方案 DDRace,以高效发现 Linux 驱动程序中的并发 UAF 漏洞。

首先,本文确定候选的use-after-free位置作为目标站点,并提取相关的并发元素,以缩小定向模糊的探索空间。

其次,本文设计了一种新颖的漏洞相关距离度量和交织优先级方案,以引导模糊器更好地探索 UAF 漏洞和线程交织。

最后,为了使测试用例具有可重复性,本文设计了一种自适应内核状态迁移方案来辅助连续模糊测试。

本文实现了 DDRace 的原型,并在上游 Linux 驱动程序上对其进行了评估。结果表明,DDRace 能有效发现UAF漏洞。它发现了 4 个未知漏洞和 8 个已知漏洞,比其他最先进的解决方案更有效。

Forming Faster Firmware Fuzzers

论文作者

Lukas Seidel, Dominik Maier, Marius Muench

论文作者机构

Qwiet AI, TU Berlin, VU Amsterdam, University of Birmingham

所属方向

面向嵌入式的方法

论文摘要

最近,评估嵌入式系统固件安全性的一种趋势是重新托管,即在虚拟化环境而非原始硬件平台上运行固件。固件重新托管的一个重要用例是模糊测试,以动态发现安全漏洞。

然而,最先进的实现方法因仿真器引起的高开销而受到影响,导致执行速度不尽如人意。本文提出了近乎原生的重新托管,而不是仿真:在与目标设备共享指令集系列的高性能系统上,将嵌入式固件作为 Linux 用户空间进程运行。

本文利用针对 ARM Cortex-M 固件的吞吐量优化重托管和模糊处理框架 SAFIREFUZZ 实现了这种方法。AFIREFUZZ 采用单片纯二进制固件映像,使用高级仿真(HLE)和动态二进制重写,以较低的开销在功能更强大的硬件上运行这些映像。通过复制 HALucinator(最先进的基于 HLE 的二进制固件重托管系统)的实验,本文发现 SAFIREFUZZ 在 24 小时模糊测试过程中平均吞吐量提高了 690 倍,同时覆盖的基本区块增加了 30%。

Intender: Fuzzing Intent-Based Networking with Intent-State Transition Guidance

论文作者

Jiwon Kim, Benjamin E. Ujcich, Dave (Jing) Tian

论文作者机构

Purdue University, Georgetown University

所属方向

面向意图网络的方法

论文摘要

基于意图的网络(IBN)将网络配置的复杂性从网络运营商手中抽象出来,重点关注运营商希望网络做什么,而不是如何实施配置。虽然这种抽象减轻了网络管理的挑战,但迄今为止,人们很少关注 IBN 带来的新的安全问题,这些问题会对整个网络的正确运行产生不利影响。

为了说明此类安全问题的普遍性,本文通过研究 ONOS 网络操作系统中具有代表性的 IBN 实现的现有错误报告,将 IBN 的安全挑战系统化。

本文发现,61% 的 IBN 相关漏洞都是语义漏洞,这些漏洞即使不是不可能,也很难被最先进的漏洞发现工具有效检测到。

为了解决现有的局限性,本文提出了 Intender,这是第一个针对 IBN 的语义感知模糊框架。Intender 利用网络拓扑信息和意图操作依赖(IOD)来高效生成测试输入。Intender 引入了一种新的反馈机制--意图状态转换引导(ISTG),它可以跟踪意图状态的转换历史。

本文使用 ONOS 对 Intender 进行了评估,发现了 12 个漏洞,其中 11 个是 CVE 指定的安全关键漏洞,影响了整个网络控制平面的完整性和可用性。与最先进的模糊工具 AFL、Jazzer、Zest 和 PAZZ 相比,Intender 生成的有效模糊输入最多可提高 78.7 倍,覆盖率最多可提高 2.2 倍,检测到的独特错误最多可提高 82.6 倍。

使用 IOD 的 Intender 可减少 73.02% 的冗余操作,在有效操作上多花费 10.74% 的时间。与代码覆盖率指导相比,采用 ISTG 的 Intender 可多实现 1.8 倍的意图状态转换。

KextFuzz: Fuzzing macOS Kernel EXTensions on Apple Silicon via Exploiting Mitigations

论文作者

Tingting Yin, Zicong Gao, Zhenghang Xiao, Zheyu Ma, Min Zheng, Chao Zhang

论文作者机构

Tsinghua University, Ant Group, State Key Laboratory of Mathematical Engineering and Advanced Computing, Hunan University, Zhongguancun Laboratory

所属方向

面向macOS内核驱动的方法

论文摘要

macOS 驱动程序,即内核扩展(kext),对攻击者来说是极具吸引力的攻击目标。然而,自动发现kexts中的漏洞极具挑战性,因为kexts大多是闭源的,而且在定制的苹果芯片上运行的最新macOS对工具链的支持有限。大多数现有的静态分析和动态测试解决方案都无法应用于最新的 macOS。

在本文中,本文提出了首个智能模糊解决方案 KextFuzz,用于检测在苹果芯片上运行的最新 macOS kexts 中的错误。与现有的驱动模糊解决方案不同,KextFuzz不需要源代码、执行跟踪、管理程序或硬件功能(如覆盖跟踪),因此具有通用性和实用性。

本文注意到,macOS 已经部署了许多缓解措施,包括指针验证、代码签名和用户空间内核层包装器,以挫败潜在的攻击。这些缓解措施可以为本文提供额外的知识和资源,以实现内核模糊测试。

KextFuzz 利用这些缓解方案,对二进制文件进行覆盖范围跟踪、测试受保护且不常访问的特权 kext 代码,并推断出 kext 接口的类型和语义信息。KextFuzz 在 macOS kexts 中发现了 48 个独特的内核漏洞。其中一些漏洞可能会造成不可恢复的拒绝服务或损害等严重后果。

MINER: A Hybrid Data-Driven Approach for REST API Fuzzing

论文作者

Chenyang Lyu, Jiacheng Xu, Shouling Ji, Xuhong Zhang, Qinying Wang, Binbin Zhao, Gaoning Pan, Wei Cao, Peng Chen, Raheem Beyah

论文作者机构

Zhejiang University, Georgia Institute of Technology, Ant Group

所属方向

面向REST API的方法

论文摘要

近年来,REST API模糊技术应运而生,用于探索云服务中的错误。其性能在很大程度上取决于序列构建和请求生成。

然而,现有的 REST API 模糊器很难生成具有精心构建的请求的长序列,以触发云服务中难以触及的状态,这限制了其发现深度错误和安全漏洞的性能。

此外,它们还无法发现在请求生成过程中使用未定义参数所导致的特定错误。因此,本文在本文中提出了一种名为 MINER 的新型混合数据驱动解决方案,通过三种新设计共同解决上述局限性。

首先,MINER 收集其请求通过云服务检查的有效序列作为模板,并为长序列模板分配更多执行任务。

其次,为了提高序列模板中请求的生成质量,MINER 创造性地利用最先进的神经网络模型来预测关键请求参数,并为其提供适当的参数值。

第三,MINER 实现了一种新的数据驱动安全规则检查器,以捕捉由未定义参数引起的新型错误。

本文在 GitLab、Bugzilla 和 WordPress 上通过 11 个 REST API 对 MINER 与最先进的模糊器 RESTler 进行了评估。

结果表明,MINER 的平均通过率比 RESTler 高 23.42%。MINER 发现的独特错误平均比 RESTler 多 97.54%,人工分析后发现的可重现错误比 RESTler 多 142.86%。

本文报告了所有新发现的错误,其中 7 个已被相应的供应商确认为逻辑错误。

MorFuzz: Fuzzing Processor via Runtime Instruction Morphing enhanced Synchronizable Co-simulation

论文作者

Jinyan Xu, Yiyuan Liu, Sirui He, Haoran Lin, Yajin Zhou, Cong Wang

论文作者机构

Zhejiang University, City University of Hong Kong

所属方向

面向处理器的方法

论文摘要

现代处理器过于复杂,不可能没有漏洞。最近,一些硬件模糊技术在验证处理器设计方面取得了可喜的成果。然而,由于处理器的复杂性,它们存在复杂的输入语法、欺骗性突变引导和模型实现差异等问题。因此,如何有效、高效地验证处理器仍是一个悬而未决的问题。

本文提出了一种新型处理器模糊测试工具 MorFuzz,它能有效地发现软件可触发的硬件错误。MorFuzz 背后的核心思想是利用运行时信息生成具有有效格式和有意义语义的指令流。

MorFuzz 设计了一种新的输入结构来提供多级运行时突变原语,并提出了动态改变指令的指令变形技术。

此外,本文还将协同仿真框架扩展到各种微体系结构,并开发了状态同步技术以消除实现差异。本文在三种流行的开源 RISC-V 处理器上对 MorFuzz 进行了评估:CVA6、Rocket、BOOM,发现了 17 个新错误(分配了 13 个 CVE)。评估结果表明,与最先进的模糊测试工具 DifuzzRTL 和著名的约束指令生成器 riscv-dv 相比,MorFuzz 的状态覆盖率分别提高了 4.4 倍和 1.6 倍。

MTSan: A Feasible and Practical Memory Sanitizer for Fuzzing COTS Binaries

论文作者

Xingman Chen, Yinghao Shi, Zheyu Jiang, Yuan Li, Ruoyu Wang, Haixin Duan, Haoyu Wang, Chao Zhang

论文作者机构

Tsinghua University, Institute of Information Engineering, Chinese Academy of Sciences, Arizona State University, Zhongguancun Laboratory, Huazhong University of Science and Technology

所属方向

二进制消杀器技术

论文摘要

模糊测试已被广泛采用,用于查找程序中的漏洞,特别是在源代码不可用的情况下。但二进制模糊测试的效果和效率受到了二进制代码内存安全检测工具的缺乏的限制。这种缺乏二进制代码内存安全检测工具的问题是由于编译程序时信息丢失以及二进制仪器化方面的挑战所致。

在本文中,本文提出了一种可行且实用的硬件辅助内存安全检测工具,名为MTSan,用于二进制模糊测试。

MTSan可以在运行时检测空间和时间上的内存安全违规。它采用了一种新颖的渐进式对象恢复方案,用于恢复二进制代码中的对象,并使用自定义的二进制重写方案,为二进制代码添加基于内存标记的内存安全检测策略。

此外,MTSan利用了硬件功能,即ARM Memory Tagging Extension (MTE),以显著降低其运行时开销。

本文在AArch64架构上实现了MTSan的原型,并对其效果和性能进行了系统评估。本文的评估结果显示,与现有的二进制代码内存安全检测工具相比,MTSan能够检测到更多的内存安全违规,同时引入更低的运行时和内存开销。

FishFuzz: Catch Deeper Bugs by Throwing Larger Nets

论文作者

Han Zheng, Jiayuan Zhang, Yuhang Huang, Zezhong Ren, He Wang, Chunjie Cao, Yuqing Zhang, Flavio Toffalini, Mathias Payer

论文作者机构

National Computer Network Intrusion Protection Center, University of Chinese Academy of Science; School of Computer and Communication Sciences, EPFL; Zhongguancun Laboratory; School of Computer and Communication, Lanzhou University of Technology; School of Cyber Engineering, Xidian University; School of Cyberspace Security, Hainan University

所属方向

定向fuzzing技术

论文摘要

模糊测试工具能有效地探索程序以发现漏洞。灰盒模糊测试工具会对初始输入数据进行变异,并监测程序的执行。每当某个变异输入导致程序表现出新的行为(例如,执行之前未观察到的代码或增加某些代码路径的执行频率)时,该输入将被保存以供进一步的变异。

灰盒模糊测试工具可以直接度量其探索进展。通过反复执行相同的程序目标,使用大量的变异输入,它们可以被动地发现和利用任何潜在的软件漏洞。

有向灰盒模糊测试工具(DGFs)将搜索范围缩小到特定的代码位置,但到目前为止,它们通常使用一个单一的评分机制来处理所有的程序目标,而没有动态地进行优先级设置。

FISHFUZZ 引入了一种新的输入优先策略,基于以下三个关键概念:

(i)一种新颖的多距离度量,其精度与目标数量无关

(ii)一种动态目标排名,并丢弃已经详细探索过的目标。

(iii)一种基于超参数的智能队列剔除算法,可在探索和利用之间交替进行。

FISHFUZZ 使模糊测试工具能够有效地扩展到数千个程序目标,并优先考虑有趣的位置,从而实现对软件程序更全面的测试。

为了展示通用性,本文在两个成熟的灰盒模糊测试工具(AFL 和 AFL++)上实现了 FISHFUZZ。

在评估中,FISHFUZZ 使用所有的标签作为程序目标。与其他现代的有向灰盒模糊测试工具和覆盖率引导的模糊测试工具进行比较表明,FISHFUZZ 一直保持更高的代码覆盖率,相较于基准模糊测试工具,发现的漏洞比基准模糊测试工具多 282%,而且重现现有漏洞的速度比基准模糊测试工具快 68.3%。此外,FISHFUZZ 还在47个不同的程序中发现了56个新的软件漏洞,其中包括38个CVE。

µFUZZ: Redesign of Parallel Fuzzing using Microservice Architecture

论文作者

Yongheng Chen, Rui Zhong, Yupeng Yang, Hong Hu, Dinghao Wu, Wenke Lee

论文作者机构

Georgia Institute of Technology, Pennsylvania State University

所属方向

并行技术

论文摘要

模糊测试作为一种检测软件缺陷的有效测试技术已被广泛采用。研究人员探索了许多并行模糊方法,以加快漏洞检测速度。

然而,现有的方法都是建立在串行模糊测试工具的基础上,依赖于周期性的模糊状态同步。这种设计有两个局限性。首先,模糊测试工具的同步串行设计可能会因为阻塞I/O操作而浪费CPU性能。其次,状态同步要么太迟,导致本文使用次优策略进行模糊处理,要么太频繁,导致巨大的开销。

本文重新设计了微服务架构下的并行模糊,并提出了μFUZZ原型。为了在存在 I/O 的情况下更好地利用 CPU 性能,μFUZZ 将同步模糊循环分解成并发的微服务,每个微服务有多个工作线程。为了避免状态同步,μFUZZ将状态分区到不同的服务和它们的工作线程中,使它们可以独立工作,但仍然可以获得很好的综合结果。

本文的实验表明,μFUZZ 的表现优于现有第二好的模糊测试工具,在24小时内平均代码覆盖率提高了24%,漏洞检测率提高了 33%。此外,μFUZZ 还在经过充分测试的实际程序中发现了 11 个新漏洞。

HyPFuzz: Formal-Assisted Processor Fuzzing

论文作者

Chen Chen, Rahul Kande, Nathan Nguyen, Flemming Andersen, Aakash Tyagi, Ahmad-Reza Sadeghi, Jeyavijayan Rajendran

论文作者机构

Texas A&M University, Technische Universität Darmstadt

所属方向

面向处理器的方法

论文摘要

最新研究表明,硬件模糊测试工具可以有效检测现代处理器中的安全漏洞。然而,现有的硬件模糊测试工具不能很好地探测难以触及的设计空间。因此,这些模糊测试工具无法有效模糊处理器中对安全至关重要的控制和数据流逻辑,从而遗漏了安全漏洞。

为了应对这一挑战,本文提出了混合模糊测试工具 HyPFuzz,它利用形式验证工具来帮助模糊处理器中难以触及的部分。为了提高 HyPFuzz 的有效性,本文对时间和空间进行了优化。

首先,本文开发了一种调度策略,以防止形式化工具和模糊测试工具的能力利用不足或过度。其次,本文开发了启发式策略,以便在设计空间中为正式工具选择目标点。

本文在五款广泛使用的开源处理器上对 HyPFuzz 进行了评估。HyPFuzz 检测到了最新处理器模糊测试工具检测到的所有漏洞,并发现了之前广泛模糊和形式验证所遗漏的三个新漏洞。这就产生了两个新的常见漏洞和暴露(CVE)条目。与最新的处理器模糊测试工具相比,HyPFuzz 的覆盖率提高了 11.68 倍

Hoedur: Embedded Firmware Fuzzing using Multi-Stream Inputs

论文作者

Tobias Scharnowski, Simon Wörner, Felix Buchmann, Nils Bars, Moritz Schloegel, Thorsten Holz

论文作者机构

CISPA Helmholtz Center for Information Security, Ruhr University Bochum

所属方向

面向嵌入式的方法

论文摘要

嵌入式系统及其各种相互连接的组件构成了本文数字基础设施的支柱。尽管嵌入式系统非常重要,但以可扩展的方式分析其安全性却一直难以实现,且极具挑战性。

近来的固件复位工作为嵌入式系统带来了可扩展的动态分析,使模糊分析用于自动漏洞评估变得可行。由于这些工作的重点是设备行为建模而非模糊处理,因此它们能以临时方式与现成的模糊处理程序集成。它们将传统的平面二进制模糊输入重新解释为一系列硬件响应。实际上,这给模糊器带来了一种脆弱、不透明、难以有效变异的输入布局。

本文的工作基于这样一种观察,即虽然固件仿真近来已非常成熟,但以无效方式向模糊测试工具提供的输入空间却非常有限。

本文重新组织了以前扁平、顺序和不透明的固件模糊测试输入,将其划分为多个严格类型化且协调一致的数据流。这使得本文的模糊测试工具 HOEDUR 能够执行类型感知的变异并保持其进展。它还使固件模糊处理能够使用最先进的突变技术。

总之,本文发现这些技术大大提高了模糊测试的有效性。本文的评估显示,HOEDUR 的覆盖率是最先进固件模糊测试工具的 5 倍,发现了其他模糊测试工具没有发现的错误,发现已知错误的速度提高了 550 倍。HOEDUR 总共发现了 23 个以前未知的错误。

ReUSB: Replay-Guided USB Driver Fuzzing

论文作者

Jisoo Jang, Minsuk Kang, Dokyung Song

论文作者机构

Yonsei University

所属方向

面向USB的方法

论文摘要

设备驱动程序的漏洞不断威胁操作系统内核的安全性。由于USB驱动程序应用广泛且攻击载体种类繁多,尤其令人担忧。

最近,模糊测试技术已经被证明在查找USB驱动程序中的漏洞方面是有效的。现有的fuzzer已经发现USB驱动程序中的大量漏洞;但不幸的是,发现的代码路径和漏洞数量却停滞不前。一个关键的障碍是 USB 驱动程序的状态性;也就是说,它们的大部分代码只有在输入特定序列时才能被覆盖。

本文观察到,在USB驱动程序的可信边界定义的记录和重放直接有助于克服障碍。达到深层状态可以通过再现记录的执行,与模糊测试结合,从而找到更深层次的代码路径和漏洞。

本文提出了ReUSB,一种USB驱动程序fuzzer,它根据驱动程序的二维纪录和重放,引导模糊测试以增强其效果。

本文要应对两个基本挑战:重放USB驱动程序的执行过程,以及在模糊测试中放大重放的效果。

为此,本文首先引入了一组在描述并发、二维跟踪中不可或缺的语言级构造,而这些构造在现有的内核fuzzer中却缺失。

此外,本文提出了一种时间、并发和上下文感知的重放方法,能够高保真地复现已记录的驱动程序执行过程。然后,本文在重放记录的执行过程中引导模糊测试,扩大了高保真重放的效果,同时通过重放检查点减轻了重放引起的速度减慢和副作用。

本文测试了ReUSB,并使用3类共10个应用广泛的USB驱动程序的二维跟踪进行了评估。结果表明,ReUSB能显著提高对于USB驱动程序的模糊测试效果;与,它将这些驱动程序的代码覆盖率提高了76%,超过了先进的基准方法,并发现了15个以前未知的错误。

Systematic Assessment of Fuzzers using Mutation Analysis

论文作者

Philipp Görz, Björn Mathis, Keno Hassler, Emre Güler, Thorsten Holz, Andreas Zeller, Rahul Gopinath

论文作者机构

CISPA Helmholtz Center for Information Security, Ruhr-Universität Bochum, University of Sydney

所属方向

变异技术

论文摘要

Fuzzing是一种发现程序中漏洞的重要方式。尽管过去几年在这一领域已经取得了长足进步,但衡量和比较模糊测试工具的有效性仍然是一个有待解决的研究问题。

在软件测试中,评估测试质量的黄金标准是突变分析,即评估测试的发现综合性漏洞的能力:如果一组测试无法检测到此类突变,就认为其无法检测到真正的漏洞。突变分析包含了各种覆盖率测试方法,并提供了包含大量可能难以触发和检测的故障的故障集,从而避免了饱和和过拟合的问题。遗憾的是,由于突变需要独立评估,使得传统的突变分析成本过高。

在本文中,本文应用了现代突变分析技术,这些技术汇集了多种突变,使本文首次能够利用突变分析进行评估和分比较。本文为模糊测试工具引入了一个评估标准,并将其应用到一些流行的模糊测试工具和课题。

在综合评估中,本文展示了本文是如何使用该标准评估模糊测试工具的性能,并衡量改进技术的影响。所需的CPU时间仍然是可控的:分析一个模糊测试工具所需的CPU年数为4.09年,涉及7个测试方面和共141278个突变。

本文发现,当今的模糊测试工具只能探测到一小部分突变,这应当被是为是未来研究的挑战,尤其是在检测非常规故障和突变触发(进而导致故障)两方面技术的改进。

No Linux, No Problem: Fast and Correct Windows Binary Fuzzing via Target-embedded Snapshotting

论文作者

Leo Stone, Rishi Ranjan, Stefan Nagy, Matthew Hicks

论文作者机构

Virginia Tech, University of Utah

所属方向

面向windows二进制程序的方法

论文摘要

覆盖率指导的模糊测试仍然是现今发现软件安全漏洞最成功的方法。速度在模糊测试中至关重要,因为保持高测试用例吞吐率可以更快速的执行程序各个分支,从而更快的发现漏洞。

高性能的模糊测试工具利用linux内核的可定制性来实现进程快照:面向模糊测试的执行原语,显著的提高了测试用例的吞吐率。

然而,在这种速度在windows上式中难以实现。其内核的闭源特性防止了当前基于内核的快照技术被移植,这严重限制了对于windows程序的模糊测试的效率。因此,要加快对windows软件生态系统的审查,就需要一种快速、正确且与内核无关的模糊测试机制。

本文建议通过目标嵌入式快照技术,使状态快照成为应用程序级的问题,而不是内核级的问题。目标嵌入式快照结合了二进制级和调用库级的hook,使程序对自身进行快照而不涉及其源代码和windows内核。

本文在10个真实的windows二进制程序上进行的评估表明,目标嵌入式快照克服了以往Windows模糊执行机制(即进程创建、基于forkserver的复制和持久模式)在速度、正确性和兼容性方面的挑战。结果是性能提高了7-182倍。

DAFL: Directed Grey-box Fuzzing guided by Data Dependency

论文作者

Tae Eun Kim, Jaeseung Choi, Kihong Heo, Sang Kil Cha

论文作者机构

KAIST, Sogang University

所属方向

定向fuzzing技术

论文摘要

尽管针对导向型灰盒的研究越来越多,但现存的导向型灰盒测试工具不能很好的随程序的复杂性而扩展。

在本文中,本文发现了当前导向型灰盒测试工具面临的两大可扩展性挑战。特别是本文发现传统的覆盖率反馈并不能总为到达目标程序点提供有意义的指导,而且现有的种子距离机制与具有复杂控制结构的程序的适配度不高。

为了解决这些问题,本文提出了一种新的模糊测试工具,称为DAFL。DAFL选择与目标程序点相关的代码部分,且仅从这些部分获得覆盖率反馈。

此外,考虑到程序执行的数据流语义,DAFL还能计算精确的种子距离。结果是很好的。在41个实际漏洞中,DAFL相比于AFL、AFLGo、WindRanger和Beacon分别多发现4、6、9和5个漏洞。

此外,在所有测试工具都产生了中位TTE的情况下,与AFLGo、WindRanger和Beacon等3种最先进的导向型测试工具相比,DAFL的平均速度至少快4.99倍。

ACTOR: Action-Guided Kernel Fuzzing

论文作者

Marius Fleischer, Dipanjan Das, Priyanka Bose, Weiheng Bai, Kangjie Lu, Mathias Payer, Christopher Kruegel, Giovanni Vigna

论文作者机构

University of California, Santa Barbara, University of Minnesota, EPFL

所属方向

种子调度技术

论文摘要

Fuzzing技术能够可靠且有效率的发现包括操作系统内核在内的软件中的漏洞。一般来说,代码覆盖率越高,所能发现的漏洞越多。这也是为什么现存的内核模糊测试工具都采用了生成一系列输入的策略,试图最大化它们所执行的代码量。然而仅仅执行代码可能不足以发现需要特定操作序列的漏洞。

综合输入来触发某些漏洞主要依赖于两方面:

(i)执行代码所采取的操作,以及(ii)采取这些操作的顺序。操作是一种高级操作,如堆分配,由执行代码执行,具有特定的语义。

ACTOR,一种动作导向的内核模糊测试框架,并没有采用传统方法。本文利用本文对触发动作及其时间关系的理解来生成模糊程序(输入),而不是专注于代码覆盖率优化。具体来说,本文首先捕捉可能在不同时间对共享数据结构进行操作的动作。然后,本文以特定领域语言表达的错误模板为指导,将这些操作作为构建模块综合起来构建程序。

Fuzz The Power: Dual-role State Guided Black-box Fuzzing for USB Power Delivery

论文作者

Kyungtae Kim, Sungwoo Kim, Kevin R. B. Butler, Antonio Bianchi, Rick Kennell, Dave (Jing) Tian

论文作者机构

Purdue University, University of Florida

所属方向

面向USB的方法

论文摘要

USB Power Delivery(USBPD)是最先进的电源充电协议。由于高效的充电性能,该协议被智能手机和笔记本电脑等设备广泛采用,已经成为欧盟和北美的USB充电标准。

由于充电的低级特性和协议的复杂性,USBPD通常是是通过在带有USBPD物理层的专用微控制器(MCU)上运行的专有固件来实现的。在这些实现中的错误不仅会导致人身安全问题(如过度充电),还会造成设备安全问题(如允许攻击者重新刷新USBPD固件)。

本文提出了FUZZPD,这是第一个具有双重作用状态引导功能的黑盒模糊测试技术,针对具有闭源USBPD固件的现成USBPD设备。

FUZZPD只需要一个USBType-C物理连接,就能以即插即用的方式运行。为便于对USBPD固件进行黑盒模糊测试,FUZZPD根据USBPD标准手动创建了一个双角色状态机,从而实现了状态覆盖和模糊测试输入的转换。

FUZZPD还提供了多级突变策略,允许通过状态内和状态间突变进行细粒度的状态感知模糊测试。

本文使用Chromebook作为主机测试了FUZZPD,并针对7个不同供应商的12个USBPD移动设备、7个不同供应商的7个USB集线器和5个不同供应商的5个充电器进行了评估。

FUZZPD发现了15个独特的漏洞,其中9个已得到相应供应商的确认。此外,本文还对FUZZPD和多种最先进的黑盒模糊技术进行了比较,结果表明FUZZPD的代码覆盖率比其他解决方案高出40%到 3倍。

然后,本文将 FUZZPD 与 USBIF 的USBPD合规性测试套件进行了比较,结果表明FUZZPD可以多发现 7 个错误,代码覆盖率高出2倍。FUZZPD是实现安全可信 USB 充电的第一步。

S&P

TEEzz: Fuzzing Trusted Applications on COTS Android Devices

论文作者

Marcel Busch, Aravind Machiry, Chad Spensky, Giovanni Vigna, Christopher Kruegel, Mathias Payer

论文作者机构

EPFL, Purdue University, Allthenticate, UC Santa Barbara

所属方向

面向安卓的方法

论文摘要

安全和隐私敏感的智能手机应用程序使用可信执行环境(TEE)来保护敏感操作免受恶意代码的攻击。按设计,TEE具有对整个系统的特权访问,但几乎不会透露其内部工作的细节。

此外,现实世界中的TEE在与可信应用程序(TA)通信时强制执行严格的格式和协议交互,这禁止了有效的自动化测试。

TEEzz是第一个能够在生产智能手机上有效模糊测试TA的TEE感知模糊测试框架,即TA在加密和受保护的TEE中运行,模糊测试器只能观察与TA的交互,但无法对TA的代码或数据进行控制。

与传统的模糊测试技术不同,传统技术会监视被模糊测试程序的执行,并在崩溃后查看其内存,TEEzz只需要对目标的有限视图。TEEzz通过自动尝试推断TA API的字段类型和消息依赖关系,设计状态和类型感知的模糊变异器,并创建一个设备上的原位模糊测试器,克服了TEE模糊测试的关键限制(例如,无法看到执行的TA、专有的交换格式以及交互的值依赖性)。

由于商业现成(COTS)Android设备上针对TA的系统模糊测试研究的有限可用性,本文对现有解决方案进行了广泛的研究,探索了它们的局限性,并展示了TEEzz如何改进现有技术水平。

首先,本文证明了通用内核驱动程序模糊测试工具对于模糊测试TA是无效的。然后,本文通过一个基准实验为模糊测试TA建立了一个基准。本文展示了TEEzz优于其他黑盒模糊测试工具,可以改进灰盒方法(如果TA的源代码可用),甚至可以在有状态目标上优于灰盒方法。

本文发现了13个OPTEE TA最新版本中的以前未知的漏洞,其中TEEzz是唯一触发三个漏洞的模糊测试工具。本文还在流行的手机上运行了TEEzz,并发现了40个独特的漏洞,其中一个已经被分配了CVE编号。

Precise Detection of Kernel Data Races with Probabilistic Lockset Analysis

论文作者

Gabriel Ryan, Abhishek Shah, Dongdong She, Suman Jana

论文作者机构

Columbia University

所属方向

面向Linux内核的方法

论文摘要

寻找数据竞争对于确保现代内核开发的安全至关重要。然而,在内核中寻找数据竞争是具有挑战性的,因为它需要联合搜索可能的系统调用组合和并发执行计划。

内核竞争测试系统通常通过执行来自语料库的一组模糊种子,并在跟踪中应用调度模糊和动态竞争预测的组合来执行此搜索。

然而,预测哪些种子组合可以在内核中暴露竞争是困难的,因为由于线程间通信和同步,模糊种子在并发执行时通常会遵循不同的执行路径。

为了解决这个挑战,本文引入了一种新的内核竞争预测分析方法,概率锁集分析(PLA),它解决了内核竞争预测所面临的挑战。

PLA利用观察结果,系统调用几乎总是执行某些对共享内存的内存访问来执行它们的功能。PLA使用随机并发跟踪采样来识别一致执行的内存访问,并估计在内核锁同步的情况下它们之间的竞争概率。通过优先考虑高概率竞争,PLA能够进行准确的预测。

本文将PLA与可比较的内核竞争测试方法进行评估,并显示它在24小时内以3倍的速率发现竞争。本文使用PLA在Linux内核v5.18-rc5中找到了183个竞争,其中包括102个有害竞争。PLA能够在经过大量测试的核心内核模块中找到具有严重安全影响的竞争,包括内存管理中的使用后释放,网络加密中的越界写入以及泄漏内核堆内存信息。其中一些漏洞已经被现有系统忽视多年:PLA发现的一个涉及越界写入的竞争自2013年(版本v3.14-rc1)以来一直存在于内核中,并被指定为高严重性CVE。

SegFuzz: Segmentizing Thread Interleaving to Discover Kernel Concurrency Bugs through Fuzzing

论文作者

Dae R. Jeong, Byoungyoung Lee, Insik Shin, Youngjin Kwon

论文作者机构

School of Computing, KAIST, Department of Electrical and Computer Engineering, Seoul National University

所属方向

面向Linux内核的方法

论文摘要

通过模糊测试来检测并发漏洞是一项艰巨的挑战。识别内核并发错误与非并发错误相比,需要分析两个或多个线程之间可能的交错。

然而,由于线程交错的搜索空间非常广阔,不可能调查所有可想象的线程交错。为了探索广阔的搜索空间,先前的大多数方法执行随机或简单的启发式搜索,没有考虑线程交错的覆盖率或使用了不足的覆盖形式。

结果,它们要么进行低效的搜索,执行冗余的执行,要么忽视了覆盖范围无法解决的并发错误。

为了克服这些限制,本文提出了SegFuzz,这是一个用于内核并发错误的模糊测试框架。在探索线程交错搜索空间时,SegFuzz将整个线程交错分解为一组段落,每个段落表示少量指令的交错,并将各个段落用作交错覆盖,称为交错段覆盖。在搜索线程交错时,SegFuzz对已探索的交错段落中的交错进行变异,构造尚未探索的新的线程交错。

使用SegFuzz,本文在Linux内核中发现了21个新的并发错误,并通过展示SegFuzz在识别已知错误方面比现有方法平均快4.1倍,证明了SegFuzz的高效性。

RSFuzzer: Discovering Deep SMI Handler Vulnerabilities in UEFI Firmware with Hybrid Fuzzing

论文作者

Jiawei Yin,Menghao Li,Yuekang Li,Yong Yu,Boru Lin,Yanyan Zou,Yang Liu,Wei Huo,Jingling Xue

论文作者机构

nstitute of Information Engineering, Chinese Academy of Sciences, Beijing, China; School of Cyber Security, University of Chinese Academy of Sciences, Beijing, China; Key Laboratory of Network Assessment Technology, Chinese Academy of Sciences; Beijing Key; Laboratory of Network Security and Protection Technology; Nanyang Technological University

UNSW Sydney

所属方向

面向嵌入式的方法

论文摘要

System Management Mode (SMM) 是一种由统一可扩展固件接口 (UEFI) 固件支持的 x86 处理器的安全操作模式。

SMM 旨在提供一个安全的执行环境,用于访问高度特权的数据或控制底层硬件(例如电源管理)。在 SMM 中运行的程序称为 SMM 驱动程序,而系统管理中断(System Management Interrupt,SMI)处理程序是 SMM 驱动程序中最重要的组件,因为它们是唯一能够接收和处理来自 SMM 执行环境外部数据的组件。

尽管在操作系统受到威胁时,SMM 可以作为额外的保护层,但是 SMM 驱动程序,特别是 SMI 处理程序中的漏洞可能会使此保护失效,并对设备造成严重的损害。因此,早期发现 SMI 处理程序漏洞对于 UEFI 固件的安全性非常重要。

为此,研究人员提出使用混合模糊测试技术来检测 SMI 处理程序漏洞。尤其是,Intel 开发了一款名为 Excite 的混合模糊测试工具,用于保护 Intel 产品。尽管现有的混合模糊测试技术可以检测 SMI 处理程序中的漏洞,但是由于存在两个主要问题,它们的有效性受到限制:

1)它们只能通过最常见的输入接口向 SMI 处理程序提供输入,缺乏利用其他输入接口的能力。

2)它们没有意识到多个 SMI 处理程序共享的变量,无法探索与这些变量相关的代码段。

针对现有工作面临的挑战,本文提出了一种名为 RSFuzzer 的混合灰盒模糊测试技术,它可以学习输入接口和格式信息,并检测通过调用多个 SMI 处理程序触发的深层隐藏漏洞。本文实现了 RSFuzzer,并对六个供应商提供的 16 个 UEFI 固件镜像进行了评估。

实验结果显示,与最先进的混合模糊测试技术相比,RSFuzzer 平均可以覆盖 617% 更多的基本块,并且可以检测到 828% 更多的漏洞。此外,本文在评估的 UEFI 固件镜像中发现并报告了 65 个 0-day 漏洞,并分配了 14 个 CVE ID。值得注意的是,在这些 0-day 漏洞中,有 6 个是在 Intel 的商业现货产品中发现的,这些产品在发布之前可能已经经过了 Excite 的测试。

Callee: Recovering Call Graphs for Binaries with Transfer and Contrastive Learning

论文作者

Wenyu Zhu, Zhiyao Feng, Zihan Zhang, Jianjun Chen, Zhijian Ou, Min Yang, Chao Zhang

论文作者机构

Tsinghua University & BNRist, China; Tsinghua University & BNRist, China; Tsinghua University & BNRist, China; Tsinghua University & Zhongguancun Laboratory, China; Tsinghua University, China; Fudan University, China; Tsinghua University & BNRist & Zhongguancun Laboratory, China

所属方向

间接调用补全技术

论文摘要

恢复二进制程序的调用图对于基于它们的跨过程分析任务和应用程序至关重要。其中一个核心挑战是识别间接调用的目标(即间接被调用者)。现有的解决方案都存在高误报和漏报问题,导致调用图不准确。

在本文中,本文提出了一种结合迁移学习和对比学习的新解决方案 Callee。关键点是深度神经网络(DNNs)可以自动识别与间接调用相关的模式。受问答应用程序的进展启发,本文利用对比学习来回答调用点-被调用者问题。

然而,最困难的挑战之一是DNNs需要大规模数据集才能达到高性能,而收集大规模间接调用的真实情况可能需要大量的计算资源。

因此,本文利用迁移学习技术,使用易于收集的直接调用数据来预训练DNNs,并进一步对DNNs进行微调时使其适用于间接调用数据集。

本文利用几组目标对Callee进行了评估,结果显示本文的解决方案可以以94.6%的F1-Measure匹配调用点和被调用者,要比最先进的解决方案要好得多。此外,本文将Callee应用于二进制代码相似性检测和混合模糊测试两个应用程序,并发现它可以显著提高它们的性能。

Toss a Fault to Your Witcher: Applying Grey-box Coverage-Guided Mutational Fuzzing to Detect SQL and Command Injection Vulnerabilities

论文作者

Erik Trickel, Fabio Pagani, Chang Zhu, Lukas Dresel, Giovanni Vigna, Christopher Kruegel, Ruoyu Wang, Tiffany Bao, Yan Shoshitaishvili, Adam Doupe

论文作者机构

Arizona State University, UC Santa Barbara, Arizona State University, UC Santa Barbara, UC Santa Barbara, UC Santa Barbara, Arizona State University, Arizona State University, Arizona State University, Arizona State University

所属方向

面向网络应用的方法

论文摘要

针对Web应用的黑盒漏洞扫描器尝试在没有访问源代码的情况下自动识别网络应用程序中的漏洞。然而,它们通过使用手动策略的漏洞产生输入列表来进行扫描,这显著降低了黑盒扫描器探索网络应用程序输入空间的能力,可能导致漏报。

此外,黑盒扫描器必须尝试推断漏洞是否被触发,这可能导致误报。为了克服这些限制,本文提出了一种新颖的网络漏洞发现框架 Witcher,它受灰盒覆盖率引导模糊测试的启发。Witcher 实现了故障升级的概念,以检测 SQL 和命令注入漏洞。

此外,Witcher 捕获覆盖信息,并创建以输出为导向的输入指导,以聚焦输入生成,从而增加了网络应用程序的状态空间探索。

在一个包含18个使用PHP、Python、Node.js、Java、Ruby和C编写的网络应用程序的数据集中,其中13个已知存在漏洞,Witcher 能够发现36个已知漏洞中的23个(64%),并额外发现了67个以前未知的漏洞,其中4个获得了CVE编号。在本文的实验中,Witcher 在发现漏洞数量和覆盖网络应用程序方面都优于最先进的扫描器。

UTopia: Automatic Generation of Fuzz Driver using Unit Tests

论文作者

Bokdeuk Jeong, Joonun Jang, Hayoon Yi, Jiin Moon, Junsik Kim, Intae Jeon, Taesoo Kim, WooChul Shim, Yong Ho Hwang

论文作者机构

Samsung Research, Republic of Korea; Georgia Institute of Technology, USA

所属方向

Fuzz驱动生成技术

论文摘要

模糊测试可能是在软件中检测安全漏洞最实用的方法,但在针对库的测试中需要相当大的努力来采用它。为了发挥作用,高质量的模糊驱动程序应首先生成一个适当的 API 序列,可以详尽地探索程序状态。

为了减轻这一负担,现有解决方案尝试从消费者代码中推断 API 的有效序列(即 API 的实际使用),或者直接从样本执行中提取它们来生成模糊驱动程序。

不幸的是,所有现有方法都存在一个共同问题:观察到的 API 序列,无论是静态推断还是动态监控,都与自定义应用逻辑混在一起。

然而,本文观察到单元测试是由 API 实际设计者精心设计的,用于验证其正确使用,而且编写单元测试在其开发过程中是一种常见做法(例如,在超过 70% 的热门 GitHub 项目中)。

本文中,本文提出了 UTOPIA,这是一个开源工具和分析算法,可以自动地从现有单元测试中合成有效的模糊驱动,几乎不需要人为干预。

为了证明其有效性,本文将 UTOPIA 应用于 55 个开源项目库,包括 Tizen 和 Node.js,并从 8,000 个符合条件的单元测试中自动生成了 5,000 个模糊驱动。

此外,本文执行了约 5 百万核心小时的生成的模糊器,并发现了 123 个漏洞。更重要的是,其中 2,400 个生成的模糊驱动被采用到了 Tizen 项目的持续集成流程中,表明了合成模糊驱动的质量。本文提出的工具和结果是公开可用的,并为研究人员和实践者广泛采用而得到维护。

SelectFuzz: Efficient Directed Fuzzing with Selective Path Exploration

论文作者

Changhua Luo, Wei Meng, Penghui Li

论文作者机构

Chinese University of Hong Kong

所属方向

定向fuzzing技术

论文摘要

定向灰盒模糊测试器专门用于测试特定的目标代码。它们已被应用于许多安全应用,比如重现已知崩溃和检测由不完整的补丁引起的漏洞。然而,现有的定向模糊测试器偏向于发现新代码,而不管新发现的代码与目标代码是否相关。结果是,模糊测试器会大量探索无关的代码,效率较低。

在本文中,本文区分目标程序中的相关代码和不相关代码,后者不会触发目标代码中的漏洞。本文提出了 SelectFuzz,一种新的定向模糊测试器,它选择性地探索相关的程序路径,以实现高效的崩溃重现和漏洞检测。它识别了两种类型的相关代码:路径分歧代码和数据依赖代码,分别捕捉了与目标代码的控制和数据依赖关系。

然后,它选择性地插装和探索只相关的代码块。本文还提出了一种新的距离度量标准,准确衡量了不同程序路径和输入的达到概率。本文使用不同程序集中的真实漏洞对 SelectFuzz 进行了评估。SelectFuzz 的表现明显优于基线定向模糊测试器,速度提高了多达 46.31 倍,并在 Google Fuzzer Test Suite 中取得最佳效果。本文的实验证明了 SelectFuzz 和现有技术(如路径修剪)的互补性。

最后,在使用 SelectFuzz 进行测试时,本文发现了 14 个之前未知的漏洞,其中包括 6 个新的 CVE 编号。本文的报告已帮助相关程序修复了 11 个漏洞。

Finding Specification Blind Spots via Fuzz Testing

论文作者

Ru Ji, Meng Xu

论文作者机构

University of Waterloo

所属方向

面向形式化验证的方法

论文摘要

经过形式化验证的程序只有在其规范(SPEC)完整且没有漏洞的情况下才是正确的。但是如何确保SPEC完整且没有漏洞呢?

本文介绍了一种潜在的答案——名为FAST(Fuzzing-Assisted Specification Testing)的方法。关键洞察是利用并综合形式化验证程序中的“冗余”和“多样性”进行交叉检查。

具体而言,在同一代码库中,SPEC、实现(CODE)和测试套件都源自相同的业务需求集。因此,如果某个意图在CODE和测试用例中被捕捉到,但在SPEC中却没有体现,这就强烈表明SPEC中存在盲点。

FAST以自动化的方式检查SPEC的不完整性问题:首先通过变异测试定位SPEC的空白,即通过检查CODE的变体是否符合原始SPEC来进行。

如果是这样,FAST进一步利用测试套件推断该空白是由意图还是错误引入的。根据代码库的大小,FAST可以选择以枚举方式或进化方式生成CODE的变体。FAST被应用于两个具有形式化验证特性的开源代码库,并分别确认了它们SPEC中的13个和21个盲点。这凸显了SPEC不完整性在实际应用中的普遍存在。

ODDFuzz: Discovering Java Deserialization Vulnerabilities via Structure-Aware Directed Greybox Fuzzing

论文作者

Sicong Cao, Biao He, Xiaobing Sun, Yu Ouyang, Chao Zhang, Xiaoxue Wu, Ting Su, Lili Bo, Bin Li, Chuanlei Ma, Jiajia Li, Tao Wei

论文作者机构

Yangzhou University, Ant Group, Tsinghua University, East China Normal University

所属方向

面向Java的方法

论文摘要

Java反序列化漏洞在实践中是一个严重的威胁。研究人员已经提出了静态分析解决方案来定位候选的漏洞,并提出了模糊测试解决方案来生成用于触发这些漏洞的概念证明(PoC)序列化对象。然而,现有的解决方案的有效性和效率有限。

在本文中,本文提出了一种新颖的混合解决方案ODDFuzz,以高效地发现Java反序列化漏洞。首先,ODDFuzz执行轻量级的静态污点分析,以识别可能导致反序列化漏洞的候选gadget链。在这一步骤中,ODDFuzz尝试定位所有候选项并避免误报。然后,ODDFuzz执行定向灰盒模糊测试(DGF)来探索这些候选项并生成PoC测试用例以减少误报。具体而言,ODDFuzz采用了一种结构感知的种子生成方法来保证测试用例的有效性,并采用了一种新颖的混合反馈和向前策略来引导定向模糊测试。

本文实现了ODDFuzz的原型,并在流行的Java反序列化存储库ysoserial上进行了评估。结果显示,ODDFuzz能够发现34个已知gadget链中的16个,而两种最先进的基线方法只能识别其中的三个。

此外,本文还在包括Oracle WebLogic Server、Apache Dubbo、Sonatype Nexus和protostuff在内的真实应用程序上评估了ODDFuzz,并发现了六个以前未报告的可利用的gadget链,其中五个已被分配CVE编号。

ViDeZZo: Dependency-aware Virtual Device Fuzzing

论文作者

Qiang Liu, Flavio Toffalini, Yajin Zhou, Mathias Payer

论文作者机构

Zhejiang University, China; EPFL, Switzerland

所属方向

面向虚拟设备的方法

论文摘要

虚拟机通过由虚拟设备通信信息(例如I/O操作)驱动的虚拟设备与其主机环境进行交互。通过发送特定的信息,对手可以利用虚拟设备中的漏洞逃离虚拟机,从而获得主机访问权限。

尽管已经在虚拟设备中发现了数百个错误,但基于覆盖的虚拟设备模糊器几乎不考虑信息内依赖性(虚拟设备信息中的字段可能依赖于另一个字段)和信息间依赖性(信息可能依赖于先前发布的消息),从而导致有限的可扩展性或效率。

VIDEZZO是本文用于虚拟设备的依赖感知的新模糊测试框架,它通过使用轻量级语法注释信息内依赖关系,并通过使用新的变异规则自学习消息间依赖关系,克服了现有虚拟设备模糊器的局限性。

具体来说,VIDEZZO挖掘消息依赖关系,并应用三类针对信息的变异。这种方法避免了分析规范的大量手动工作,并通过满足依赖性来加快缓慢的探索,从而产生了一个可扩展且高效的模糊器,从而促进了虚拟设备中的错误发现。

在本文的评估中,VIDEZZO涵盖了两个管理程序、四个体系结构、五个设备类别和28个虚拟设备,并能更快地达到了具有竞争力的覆盖范围。此外,VIDEZZO成功地发现了24个不同类型的现有错误和28个新错误。本文正在积极与社区接触,本文提交的7个补丁已经被接受。

DevFuzz: Automatic Device Model-Guided Device Driver Fuzzing

论文作者

Yilun Wu, Tong Zhang, Changhee Jung, Dongyoon Lee

论文作者机构

Stony Brook University, Samsung Electronics, Purdue University

所属方向

面向驱动的方法

论文摘要

设备驱动程序的安全性对整个操作系统的可靠性至关重要。然而,验证设备驱动程序是否能够正确处理来自硬件设备的潜在恶意输入仍然非常具有挑战性。

不幸的是,现有的基于符号执行的解决方案通常无法扩展,而利用模糊测试的解决方案需要真实的设备或手动设备模型,这使得许多设备驱动程序测试不足且不安全。

本文提出了一种新的模型引导设备驱动程序模糊测试框架DEVFUZZ,它不依赖物理设备。DEVFUZZ使用符号执行来自动生成探测模型,该模型可以指导模糊器正确初始化被测设备驱动程序。

DEVFUZZ还利用静态和动态程序分析来构建MMIO、PIO和DMA设备模型,以进一步提高模糊化的有效性。DEVFUZZ成功测试了来自不同操作系统(Linux、FreeBSD和Windows)的191个不同总线类型(PCI、USB、RapidIO、I2C)的设备驱动程序,检测到72个错误,其中41个已被修补并合并进了主干程序。

SyzDescribe: Principled, Automated, Static Generation of Syscall Descriptions for Kernel Drivers

论文作者

Yu Hao, Guoren Li, Xiaochen Zou, Weiteng Chen, Shitong Zhu, Zhiyun Qian, Ardalan Amiri Sani

论文作者机构

University of California, Riverside; University of California, Irvine

所属方向

面向Linux内核的方法

论文摘要

最近几年对系统内核进行模糊测试的操作总体上是有效的。例如,自2017年以来,syzkaller在Linux内核中发现了数千个错误。syzkaller的一个必要组件是系统调用描述的集合,这些描述通常由专家提供。

然而,据本文所知,当前的系统调用描述主要是手动编写的,这既耗时又容易出错。考虑到有许多内核驱动程序(用于新硬件设备及其他设备)正在随着时间的推移不断开发和发展,这尤其具有挑战性。

在本文中,本文提出了一个原则性的解决方案,用于生成Linux内核驱动程序的系统调用描述。最核心的是,本文总结并建模了从核心内核和驱动程序之间的“协定”中提取的关键不变量或程序设计约定。这使本文能够以编程的方式理解内核驱动程序是如何初始化的,以及它的相关接口是如何构建的。有了这一点,本文开发了一个名为SyzDescribe的工具,该工具已经针对数百个内核驱动程序进行了测试。

结果表明,SyzDescribe生成的系统调用描述与手动编写的描述相比具有相同的竞争力,并且比以前的工作(即DIFUZE和KSG)要好得多。最后,本文分析了本文的描述与基本事实之间的差距,并指出了未来的改进机会。

NDSS

A Case Study on Fuzzing Satellite Firmware

论文作者

Tobias Scharnowski, Felix Buchmann, Simon Woerner, Thorsten Holz

论文作者机构

Ruhr-Universitat Bochum, CISPA Helmholtz Center for Information Security

所属方向

面向嵌入式的方法

论文摘要

卫星在本文现代的数字基础设施中扮演着重要角色,如提供通信、导航和地球观测等关键功能。为了维护卫星的正常运行会需要进行远程访问,因此确保这种访问的安全性是开发和操作卫星的重要方面。虽然传统上卫星并未经常受到攻击,但未来情况可能会有所改变。因此,确保卫星固件的安全性变得越来越重要,固件是控制卫星任务的空间部分的软件。

在这项工作中,本文对最新的嵌入式固件分析技术在卫星有效载荷数据处理系统中的应用进行了案例研究。本文探索了是否可以使用FUZZWARE,一种最先进的固件模糊测试系统,对这些固件映像进行测试。在这个案例研究中,本文还描述和应用了手动优化FUZZWARE配置的过程,并且测量了不同优化的影响。

最后,对于卫星系统硬件的相关研究,本文明确了它的挑战性,以及未来优化模糊测试性能的方向,以实现完全自动化。作为本文案例研究的一部分,本文在3个卫星固件映像中识别并负责披露了6个漏洞。

No Grammar, No Problem: Towards Fuzzing the Linux Kernel without System-Call Descriptions

论文作者

Alexander Bulekov, Bandan Das, Stefan Hajnoczi, Manuel Egele

论文作者机构

Boston University, Red Hat

所属方向

面向操作系统的方法

论文摘要

整个计算生态系统的完整性取决于操作系统(OS)的安全性。不幸的是,由于操作系统代码的规模和复杂性,每年都会发现数百个安全问题。因此,操作系统一直是应用安全分析工具的重要测试对象。

近年来,模糊测试已成为自动发现软件安全问题的主要技术。因此,运用模糊测试方法已经能够在内核中发现数千个漏洞。然而,现代操作系统模糊测试工具(如Syzkaller)依赖于为内核中的每个接口模糊测试创建精确、广泛、手动编写的测试框架和语法。由于对语法的依赖,目前的操作系统模糊测试工具面临着规模扩展的问题。

在本文中,本文提出了FUZZNG,一种用于模糊测试操作系统系统调用的通用方法。与Syzkaller不同,FUZZNG不需要详细描述系统调用接口才能正常运行。相反,FUZZNG利用了内核设计的基本特性,以重新塑造和简化模糊测试器的输入空间。因此,FUZZNG只需要为每个新目标提供一个小的配置:基本上是模糊测试器应该探索的文件和系统调用号码的列表。

本文在Linux内核上实现了FUZZNG。在Syzkaller中对10个被广泛使用的Linux组件进行测试,结果显示,平均而言,FUZZNG达到了Syzkaller覆盖范围的102.5%。FUZZNG找到了9个新的漏洞(其中5个是Syzkaller多年来已经广泛模糊测试过的组件)。

此外,FUZZNG的轻量级配置文件大小不到Syzkaller手动编写的语法的1.7%。关键是,FUZZNG在没有初始种子输入或专家指导的情况下实现了这一点。

FUZZILLI: Fuzzing for JavaScript JIT Compiler Vulnerabilities

论文作者

Samuel Groß, Simon Koch, Lukas Bernhard, Thorsten Holz, Martin Johns

论文作者机构

Google, TU Braunschweig, Ruhr-University Bochum, CISPA Helmholtz Center for Information Security

所属方向

面向Java的方法

论文摘要

JavaScript已经成为互联网基础设施的重要组成部分,我无法想象今天的交互式网络应用程序离开了这种编程语言是什么样的。然而,这种互动性意味着网络应用程序依赖于越来越多的计算密集型JavaScript代码,这给负责高效执行代码的JavaScript引擎带来了负担。

为了满足不断提高的性能要求,现代JavaScript引擎配备了复杂的即时编译(JIT)编译器。然而,JIT编译器是一项复杂的技术,因此为潜在的可能是安全关键的故障提供了广泛的攻击面。

在以前对JavaScript的引擎中,本文通常使用模糊测试发现了许多软件故障的bug。不幸的是,这些模糊测试方法并不旨在生成实际触发JIT语义的源代码,因此现有方法不太可能发现JIT漏洞。

在本文中,本文弥补了这个差距,并提出了第一个专注于JIT漏洞的模糊测试工具。更具体地说,本文提出了一种中间表示(IR)的设计和实现,重点是发现JIT编译器的漏洞。本文实现了所提出方法的完整原型,并在六个月的时间内对本文的模糊测试工具进行了评估。总共,本文发现了17个已确认的安全漏洞。本文的结果表明,有针对性的JIT模糊测试是可行的,并且对于JavaScript引擎而言,模糊测试覆盖范围存在一个严重被忽视的漏洞。

LOKI: State-Aware Fuzzing Framework for the Implementation of Blockchain Consensus Protocols

论文作者

Fuchen Ma, Yuanliang Chen, Meng Ren, Yuanhang Zhou, Yu Jiang, Ting Chen, Huizhong Li, Jiaguang Sun

论文作者机构

Tsinghua University, University of Electronic Science and Technology of China, WeBank, School of Software, Tsinghua University

所属方向

面向区块链的方法

论文摘要

区块链共识协议负责协调节点就交易结果达成协议。它们如果出现bug,包括与内存相关的问题和共识逻辑漏洞,可能构成严重威胁。模糊测试是一种用于检测协议漏洞的有前途的技术。然而,现有的模糊测试工具无法处理分布式节点的复杂共识状态,因此会生成大量无用的数据包,限制了它们在达到共识协议的深层逻辑方面的有效性。

在这项工作中,本文提出了一种名为LOKI的区块链共识协议模糊测试框架,用于检测共识内存相关和逻辑bug。LOKI通过伪装成一个节点来实时获取共识状态。

首先,LOKI动态构建一个状态模型,记录每个节点的状态转换。之后,LOKI根据状态模型自适应地生成输入目标、类型和内容。借助bug分析器,LOKI使用明确定义的预期结果检测共识协议的实现bug。

本文在包括Go Ethereum、Meta Diem、IBM Fabric和WeBank FISCO-BCOS在内的四个广泛使用的商业区块链系统上实现和评估了LOKI。LOKI发现了20个严重的以前未知漏洞,并分配了9个CVE编号。其中14个是与内存相关的bug,6个是共识逻辑bug。与诸如Peach、Fluffy和Twins等最先进的工具相比,LOKI的分支覆盖率平均提高了43.21%、182.05%和291.58%。

DARWIN: Survival of the Fittest Fuzzing Mutators

论文作者

Patrick Jauernig, Domagoj Jakobovic, Stjepan Picek, Emmanuel Stapf, Ahmad-Reza Sadeghi

论文作者机构

Technical University of Darmstadt, University of Zagreb, Croatia, Radboud University and TU Delft

所属方向

种子调度技术

论文摘要

模糊测试是一种被广泛采用的自动化软件测试技术。其中一种流行的变异模糊测试可以在实践中发现大量的错误。虽然研究界多年来一直在研究基于变异的模糊测试,但模糊测试工具内部的算法交互非常复杂,并且每个模糊测试实例的随机性可能导致不可预测的效果。大多数改进这种脆弱交互的努力都集中在优化种子调度上。

然而,像Google的FuzzBench这样的实际结果表明,这些方法在实践中并不一致地显示出改进效果。另一种在算法上改进模糊测试过程的方法是优化变异调度。不幸的是,现有的变异调度方法也因缺乏实际改进或存在过多用户可控参数而未能令人信服,其配置需要对目标程序有专业知识。这使得巧妙处理测试用例并实现可衡量的改进成为一个具有挑战性的问题,仍未解决。

本文提出了DARWIN,这是一种新颖的变异调度器,也是第一个在实际场景中展示了模糊测试改进的方法,而无需引入额外的用户可配置参数,使这种方法面向广大模糊测试社区。DARWIN使用进化策略来系统地优化和调整模糊测试过程中变异操作符的概率分布。

本文基于流行的通用模糊测试工具AFL实现了一个原型。在本文自己的覆盖率实验、FuzzBench以及在MAGMA基准测试中最快地发现了21个漏洞中的15个漏洞,DARWIN明显优于最先进的变异调度器和AFL基准测试。最后,在广泛使用的真实应用程序中,DARWIN发现了20个独特的漏洞(包括一个新漏洞),比AFL多66%。

datAFLow: Towards a Data-Flow-Guided Fuzzer

论文作者

Adrian Herrera, Mathias Payer, Antony Hosking

论文作者机构

Australian National University, EPFL

所属方向

数据流引导技术

论文摘要

基于覆盖率引导的灰盒模糊测试器依赖于从控制流覆盖中得出的反馈信息来探索目标程序并发现错误。然而控制流反馈只提供了程序行为的粗略近似,但数据流直观上更准确地描述了程序行为。

尽管具有这种优势,以数据流覆盖为驱动的模糊测试器却受到相对较少的关注,主要出现在使用了重量级程序分析(例如污点分析、符号执行)的情况下。不幸的是,这些更准确的分析会导致运行时开销很大,阻碍了模糊测试器的吞吐量。控制流模糊测试的轻量级数据流替代方案尚未被探索。

本文提出了一种名为DATAFLOW的灰盒模糊测试器,它以轻量级数据流剖析为驱动。控制流边表示程序中操作的顺序,而数据流边捕获产生数据值的操作与消耗这些数据值的操作之间的依赖关系:实际上,这些操作之间可能没有控制依赖关系。

因此,数据流覆盖能够捕获控制流不可见的行为,并直观地发现更多或不同的错误。此外,本文建立了一个关于数据流覆盖的推理框架,可以在探索的计算成本和精度之间取得平衡。

本文对DATAFLOW进行了初步评估,比较了以控制流、污点分析(近似和精确)和数据流为驱动的模糊测试器。本文的初步结果表明,到目前为止,在大多数本文进行模糊测试的目标中,纯覆盖率仍然是发现错误的最佳度量标准(其中72%的目标)。

然而,在控制流与语义解耦的目标(例如解析器)中,数据流覆盖显示出潜力。需要在更广泛的目标范围上进行进一步评估和分析。

CCS

Fuzz on the Beach: Fuzzing Solana Smart Contracts

论文作者

Sven Smolka, Jens-Rene Giesen, Pascal Winkler, Oussama Draissi, Lucas Davi, Ghassan Karame, Klaus Pohl

论文作者机构

University of Duisburg-Essen, Essen, Germany;

所属方向

面向区块链的方法

论文摘要

Solana迅速成为构建去中心化应用程序(DApps)的热门平台,例如用它构建非同质化代币(NFT)的市场。其成功的关键原因之一是Solana具有低交易费用和高性能,这部分是通过其无状态编程模型实现的。尽管文献中提供了广泛的智能合约安全工具支持,但目前的解决方案主要针对以太坊虚拟机。不幸的是,Solana执行环境的无状态特性引入了特定于Solana的新型攻击模式,需要重新思考构建漏洞分析方法。

在本文中,本文填补了这个空白,并提出了FuzzDelSol,这是第一个针对Solana智能合约的仅使用二进制代码进行覆盖引导模糊测试的架构。FuzzDelSol忠实地模拟了运行时的细节,例如智能合约的交互。

此外,由于大多数Solana合约的源代码不可用,FuzzDelSol操作的是合约的二进制代码。因此,由于缺乏语义信息,本文仔细提取了底层程序和状态信息,以开发一组能够涵盖Solana中所有主要的bug类别的bug预测方法。本文对6049个智能合约进行了广泛的评估,结果显示FuzzDelSol的bug预测具有很高的精确度和召回率,发现了具有影响力的漏洞。据本文所知,这是以Solana为主在安全领域进行的最大规模评估。

Hopper: Interpretative Fuzzing for Libraries

论文作者

Peng Chen, Yuxuan Xie, Yunlong Lyu, Yuxiao Wang, Hao Chen

论文作者机构

Tencent Security Big Data Lab, ShenZhen, China; University of California, Davis, Davis, CA, USA

所属方向

Fuzz驱动生成技术

论文摘要

尽管现有的先进模糊测试工具能够高效生成输入,但现有的模糊测试工具仍然无法充分覆盖库中的入口。大多数这些模糊测试工具是由开发人员手工编写的,其质量取决于开发人员对代码的理解。

现有的研究尝试通过从代码和执行跟踪中学习API使用情况来自动生成模糊驱动程序。然而,生成的模糊驱动程序仅局限于被学习代码中的几个特定调用序列。为了解决这些挑战,本文提出了HOPPER,它可以在不需要任何相关领域的知识来编写模糊驱动程序的情况下对库进行模糊测试。它将库模糊测试的问题转化为解释器模糊测试的问题。测试中链接到库的解释器可以解释描述任意API使用情况的输入。

为了使解释器生成的输入在语义上是正确的,HOPPER学习了库中的内部和跨API约束,并以语法感知的形式变异程序。本文实现了HOPPER,并将其与11个手工编写的模糊器和自动化解决方案进行了评估。

本文的结果表明,HOPPER在代码覆盖率和漏洞发现方面远远优于其他模糊器,发现了其他模糊器无法发现的25个以前未知的bug。此外,本文还证明了所提出的内部和跨API约束学习方法可以正确学习库所隐含的约束,从而显著提高模糊测试的效率。实验结果表明,HOPPER能够探索广泛的库API使用范围,用于库模糊测试。

Firmulti Fuzzer: Discovering Multi-process Vulnerabilities in IoT Devices with Full System Emulation and VMI

论文作者

Yung-Tai Cheng, Shin-Ming Cheng

论文作者机构

National Taiwan University of Science and Technology, Taipei

所属方向

面向嵌入式的方法

论文摘要

随着物联网设备的增长,这些设备的数量和复杂性正在迅速增加。然而,许多物联网产品在开发时没有充分考虑安全性,使它们容易受到恶意软件的利用。为了在恶意攻击者发现这些漏洞之前主动解决这些漏洞,信息安全研究人员使用静态和动态分析技术来识别漏洞并提出固件更新。

由于物联网固件架构的多样性,直接在通用个人电脑上对固件进行模糊测试是具有挑战性的。作为解决方案,通常使用仿真技术来创建用于漏洞检测的虚拟环境。然而,现有基于仿真的模糊测试工具通常优先考虑效率,避免使用全系统仿真。这些工具仅限于检测单个程序中的漏洞,无法识别由多个进程之间的交互产生的根深蒂固的漏洞。

为了解决这一挑战,论文提出了 Firmulti Fuzzer,一个利用全系统仿真的模糊测试框架。在本文的方法中,本文进行了两次仿真。第一次仿真使用现有的仿真系统来获取固件的全系统仿真配置。接下来,第二次仿真使用具有虚拟机监控(VMI)功能的仿真器来监控整个系统环境。通过 Firmulti Fuzzer,本文可以跟踪环境中所有程序的执行状态,并在检测到异常时生成通知,从而识别由多个进程之间的交互产生的漏洞。

实验已经显示了 Firmulti Fuzzer 在检测一般漏洞和多进程漏洞方面的有效性。最重要的是,Firmulti Fuzzer 在识别多进程漏洞方面优于其他模糊器。Firmulti Fuzzer 作为提高物联网设备安全性和减轻恶意攻击者利用漏洞的工具,具有很大的潜力。

PyRTFuzz: Detecting Bugs in Python Runtimes via Two-Level Collaborative Fuzzing

论文作者

Wen Li, Haoran Yang, Xiapu Luo, Long Cheng, Haipeng Cai

论文作者机构

Washington State University, Pullman, WA, USA; The Hong Kong Polytechnic University, Hong Kong, China; Clemson University, Clemson, SC, USA

所属方向

面向Python的方法

论文摘要

鉴于 Python 的广泛使用及其持续的影响,Python 运行时系统的安全性和可靠性非常关键。然而,尽管现实世界中 Python 运行时的漏洞持续且日益增多地被报告,但自动检测此类漏洞的技术/工具支持仍然相对缺乏。

在这篇论文中,本文介绍了 PyRTFuzz,这是一种新颖的模糊测试技术/工具,用于全面测试 Python 运行时,包括语言解释器及其运行时库。

PyRTFuzz 结合了基于生成和变异的模糊测试,在编译器和应用程序测试层面上分别通过静态/动态分析来提取运行时 API 描述。这种描述是一种声明性的规范语言用于生成有效和多样的 Python 代码,也是一种自定义的类型引导变异策略,用于格式/结构感知的应用程序输入生成。

论文对 CPython这种主要的Python应用实现了 PyRTFuzz,并将其应用于正在使用的三个版本。本文的实验揭示了 61 个新的、可证明可利用的漏洞,包括解释器中的和大部分运行时库中的。

本文的结果还展示了 PyRTFuzz 的有希望的可扩展性和成本效益,以及其在进一步发现漏洞方面的巨大潜力。PyRTFuzz 中体现的两级协作模糊测试方法也可能适用于其他语言运行时,特别是解释型语言的运行时。

Greybox Fuzzing of Distributed Systems

论文作者

Ruijie Meng, George Pîrlea, Abhik Roychoudhury, Ilya Sergey

论文作者机构

National University of Singapore, Singapore, Singapore

所属方向

面向分布式系统的方法

论文摘要

灰盒模糊处理是在顺序执行的程序中查找漏洞的轻量级方法。它通过使用来自观察到的测试执行的反馈函数在程序输入的域上进行有偏差的随机搜索,来提供效率和有效性之间的平衡。然而,对于分布式系统测试,目前的实践状态被黑盒工具所主导,这些黑盒工具不试图推断和利用系统过去行为的任何知识来指导漏洞的搜索。

在这项工作中,本文提出了MALLORY:第一个用于分布式系统灰盒模糊测试的框架。与流行的黑盒分布式系统模糊器(如JEPSEN)不同,MALLORY是自适应的,后者通过随机注入网络分区和节点故障或遵循人工定义的时间表来搜索漏洞。它运用了一种新的度量方法来学习如何通过选择不同的故障序列来最大限度地增加观察到的系统行为的数量,从而增加发现新错误的可能性。本文的方法依赖于时间轴驱动的测试。

MALLORY动态构建系统行为的Lamport时间线,并将这些时间线进一步抽象为之前事件的总结,作为指导模糊运动的反馈函数。随后,MALLORY使用Q-learning被动学习策略,使其能够在实时观察摘要的指导下引入故障。

本文已经在一组广泛使用的工业分布式系统上对MALLORY进行了评估。与最早的黑盒模糊器JEPSEN相比,MALLORY在24小时内探索了54.27%的不同状态,实现了2.24倍的加速。同时,MALLORY以1.87倍的速度发现漏洞,从而在给定的时间预算内发现更多漏洞。MALLORY在经过严格测试的分布式系统(如Braft、Dqlite和Redis)中发现了22个零日漏洞(其中18个已被开发人员确认),包括10个新漏洞。分配了6个新的CVE。

NestFuzz: Enhancing Fuzzing with Comprehensive Understanding of Input Processing Logic

论文作者

Peng Deng, Zhemin Yang, Lei Zhang, Guangliang Yang, Wenzheng Hong, Yuan Zhang, Min Yang

论文作者机构

Fudan University, Shanghai, China

所属方向

样例生成技术

论文摘要

模糊测试是安全分析中最流行和最实用的技术之一。在这项工作中,本文的目标是用一种新的输入感知模糊方法NestFuzz来解决高质量输入生成的关键问题。NestFuzz可以通用且自动地对输入格式规范进行建模,并生成有效的输入。

NestFuzz背后的关键观察结果是,目标程序的代码语义总是高度暗示所需的输入格式。因此,NestFuzz应用细粒度程序分析来理解输入处理逻辑,特别是不同输入字段和子结构之间的依赖关系。为此,本文设计了一种新颖的数据结构,即输入处理树,以及一种新的级联依赖感知变异策略来驱动模糊化。

本文对20个经过密集测试的热门程序的评估表明,NestFuzz是有效和实用的。与最先进的模糊器(AFL、AFLFast、AFL++、MOpt、AFLSmart、WEIZZ、ProFuzzer和TIFF)相比,NestFuzz在代码覆盖率和安全漏洞检测方面都表现出色。NestFuzz发现了46个既独特又严重的漏洞。截至本文撰写之时,39个已被确认,37个已被分配CVE ID。

Profile-guided System Optimizations for Accelerated Greybox Fuzzing

论文作者

Yunhang Zhang, Chengbin Pang, Stefan Nagy, Xun Chen, Jun Xu

论文作者机构

University of Utah, Salt Lake City, UT, USA; Nanjing University, Nanjing, China; Samsung Research America, Mountain View, CA, USA

所属方向

种子调度技术

论文摘要

灰盒模糊测试是一种非常受欢迎的安全测试选项,激励着人们进行巨大的努力来提高其性能。先前的研究带来了许多算法上的进展,导致了显著的性能增长。然而,尽管系统级设计对模糊测试吞吐量的影响很大,但对灰盒模糊测试工具的系统级设计却受到了较少关注。

在这篇论文中,本文探讨了灰盒模糊测试的系统级优化。通过实证研究,本文揭示了两个系统级优化机会。首先,常见的使用 fork 服务器的模糊测试模式明显减缓了目标执行速度,可以通过将持续模式与高效的状态恢复相结合来进行优化。其次,灰盒模糊测试工具依赖于本机操作系统(OS)来支持目标程序发出的交互,涉及复杂但与模糊测试无关的操作。简化操作系统交互代表另一个优化机会。

本文开发了两种技术,这些技术是在对模糊测试工具进行短暂分析的基础上得出的,旨在实现上述优化。第一种技术通过从分析中学习关键执行状态并修补目标程序来实现可靠高效的持续模式。第二种技术引入用户空间抽象来模拟操作系统功能,从而减少昂贵的操作系统交互。通过对 20 个程序和 MAGMA 基准测试的评估,本文证明了本文的优化可以加速 AFL 和 AFL++,实现更高的代码覆盖率和更快的漏洞发现。

SyzDirect: Directed Greybox Fuzzing for Linux Kernel

论文作者

Xin Tan, Yuan Zhang, Jiadong Lu, Xin Xiong, Zhuang Liu, Min Yang

论文作者机构

Fudan University, Shanghai, China

所属方向

面向Linux内核的方法

论文摘要

随着操作系统内核的错误报告和修补程序提交数量的急剧增加,迫切需要进行内核级别的错误复现和修补程序测试。定向灰盒模糊测试(DGF)旨在对代码的特定部分进行测试,是进行错误复现和修补程序测试的一种有前景的方法。然而,现有的DGF方法仅专注于用户空间应用程序,在处理操作系统内核时存在固有限制。特别是,这些方法无法准确定位适当的系统调用以及达到目标位置所需的系统调用参数值,导致效率低下且资源浪费。

论文介绍了SyzDirect,这是一个针对Linux内核的DGF解决方案。通过对Linux内核进行创新、可扩展的静态分析,SyzDirect识别出有价值的信息,如正确的系统调用及其参数的条件,以达到目标位置。

在模糊测试过程中,SyzDirect利用静态分析的结果来引导测试用例的生成和变异,然后利用基于距离的反馈进行种子优先级排序和功率调度。

本文在上游Linux内核上对SyzDirect进行了错误复现和修补程序测试的评估。结果显示,与通用内核模糊器相比,SyzDirect可以复现更多的错误(增加320%)并达到更多的目标修补程序(增加25.6%)。它还将错误复现和修补程序达到速度分别提高了154.3倍和680.9倍。

Poster: Combining Fuzzing with Concolic Execution for IoT Firmware Testing

论文作者

Jihyeon Yu, Juhwan Kim, Yeohoon Yun, Joobeom Yun

论文作者机构

Sejong University, Seoul, Republic of Korea

所属方向

面向嵌入式的方法

论文摘要

物联网(IoT)设备的供应每年都在增加。即使在需要复杂性的行业,如无人驾驶、建筑和机器人行业,也在利用物联网设备。

然而,由于物联网设备种类繁多,硬件执行环境具有挑战性,因此物联网设备的安全性较于它的发展是落后的。现有的方法,比如直接设备连接或部分仿真,被用来解决这个问题。然而,全系统仿真更适合大规模分析,因为它可以测试许多硬件而无需设备。

因此,最近的研究已经将仿真和软件测试技术(如模糊测试)整合在一起,但它们仍然不适用于测试各种硬件且效率低下。

在这篇文章中,我们提出了FirmColic,它将模糊测试与共享符号执行相结合,以减轻这些限制。FirmColic是一种增强型过程仿真,通过基于共享符号执行的关键词提取来提高模糊测试的效果。

此外,我们在增强型过程仿真环境中应用了五种调解技术,以提高仿真的成功率。我们证明FirmColic比先前的研究具有更快的检测速度、更多的崩溃检测以及更高的代码覆盖率。

Post Quantum Fuzzy Stealth Signatures and Applications

论文作者

Sihang Pu, Sri AravindaKrishnan Thyagarajan, Nico Döttling, Lucjan Hanzlik

论文作者机构

CISPA Helmholtz Center for Information Security, Saarbruecken, Germany,NTT Research, Palo Alto, USA

所属方向

面向区块链的方法

论文摘要

自比特币问世以来,基于区块链的加密货币中的隐私支付一直是学术界和产业界的研究课题。隐形地址支付是作为提高用户支付隐私的一种解决方案而提出的,事实上,目前几种主要的加密货币都采用了这种支付方式。

这种机制让用户在接收付款时,不会将这些付款相互联系起来,也不会将收款人联系起来。目前已知的隐身地址机制要么(1)在某些合理的对抗模型中不安全,要么(2)在实践中效率低下,要么(3)与许多现有货币不兼容。

在这项工作中,本文将这一机制的底层加密抽象形式化,即隐身签名与基于游戏的形式化定义。本文展示了本文的概念在快速身份在线(FIDO)标准定义的无密码身份验证中的惊人应用。

然后,本文介绍了 SPIRIT,这是首个基于 NIST 标准化签名和密钥封装方案 Dilithium 和 Kyber 的高效后量子安全隐形签名构建。SPIRIT 的基本形式仅在弱安全模型中是安全的,但本文提供了一种高效的通用变换,它提高了 SPIRIT 的安全性,保证了本研究定义的最强安全概念。

与最先进的技术相比,SPIRIT 的签名大小提高了约 3.37 倍,而签名和验证的效率却保持在 0.2 毫秒。本文利用模糊跟踪功能对 SPIRIT 进行了扩展,在该功能下,收件人可以将对接收到的交易的跟踪外包给跟踪服务器,从而满足了与最近在 [CCS 2021] 中引入的模糊消息检测 (FMD) 类似的匿名性概念。

本文还在 SPIRIT 的基础上扩展了一个新的模糊跟踪框架,称为可扩展模糊跟踪。这一新框架可视为 FMD 的对偶框架,因为它将跟踪服务器的计算工作量减少到用户数量的亚线性关系,而不是 FMD 的线性关系。实验结果表明,对于数以百万计的用户,服务器只需 3.4 毫秒即可过滤每条传入信息,这比最先进的技术有了显著提高。

DSFuzz: Detecting Deep State Bugs with Dependent State Exploration

论文作者

Yinxi Liu, Wei Meng

论文作者机构

The Chinese University of Hong Kong, Hong Kong SAR, Hong Kong

所属方向

变异技术

论文摘要

传统的基于随机突变的fuzzer在触发需要特定输入的深层程序状态条件下效率比较低。同时,大量的深层bug尚未被发现。为了提高输入突变的效率,先前的研究利用了污点分析来辨别依赖于控制的关键字节,并仅仅对这些字节进行突变。

然而,现有的工作没有考虑到间接的控制依赖,其中取一个分支的关键字节只能在依赖于一系列其他基本块的控制基本块中设置。这些关键字节不能够被识别,除非这一系列基本块被添加到执行路径中。

现存的方法再确认这些关键字节之前,花费了难以接受的时间和计算资源来尝试多种路径。换句话说,当前突变策略无法有效探索识别关键字节的搜索空间。

在这篇文章中,本文旨在探索一种新的输入产生策略,来满足一系列能够导致深层程序状态的间接的控制依赖关系。本文提出了DSFuzz,一种导向型的模糊测试方案,可以有效地构造用于探索特定的深层程序状态的输入。

DSFuzz专注于只能通过满足一系列特定的间接控制依赖才能够到达的深层目标。通过分析深层状态间接依赖的条件,它可以生成可靠的关键字节来触发相应的分支。同时,策略也排除了不太可能引导至目标状态的控制流。

结果就是,他只需要在具有限制的搜索空间下进行突变。DSFuzz在检测深层程序状态中的错误方面明显优于最先进的导向型灰盒模糊器:其检测到其他工具未能找到的八个新错误。 

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

—END—


文章来源: https://mp.weixin.qq.com/s?__biz=MzU1NTEzODc3MQ==&mid=2247486204&idx=1&sn=a26a7c71230ac5c4f0bd493e1ac246d6&chksm=fbd9a140ccae2856b6544c108b24968c449ba62ec45ccc0ba5fa99f017073e4f2fbe4f2086a3&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh