[2022.04.13] [CCS 2017] Directed Greybox Fuzzing

Source: https://dl.acm.org/doi/abs/10.1145/3133956.3134020 Authors: Marcel Böhme; Van-Thuan Pham; Manh-Dung Nguyen; Abhik Roychoudhury Download Note: https://jbox.sjtu.edu.cn/l/f1PAWf Contributor: lt Overview Question:传统的灰盒模糊测试专注于覆盖率,不具备导向性。覆盖率对每段代码一视同仁,无论新发现的边是否触发crash,它对覆盖率的贡献都是相等的。但存在漏洞的代码段比例很小,这说明,传统的灰盒模糊测试做了很多无用功,比如贡献了覆盖率但没有贡献crash的测试用例所消耗的计算资源。 Answer:AFLGo(DGF的开山之作)面向被测程序的目标点,而非覆盖所有的执行路径;它通过基于模拟退火的能量调度方案实现导向性。 Experiment 比较对象:非导向型的灰盒模糊测试、基于符号执行的导向型白盒模糊测试(DWF)。 应用场景:补丁测试、连续测试、crash复现。 小白鼠:binutils、diffutils、LibXML2、LibMing;BugRedux的benchmark。 Result AFLGo在补丁测试、crash复现上优于非导向型的灰盒模糊测试、基于符号执行的DWF。 17个CVE

[2022.06.23][USENIX Security 2022]MORPHUZZ: Bending (Input) Space to Fuzz Virtual Devices

Source: https://www.usenix.org/system/files/sec22summer_bulekov.pdf Authors: Alexander Bulekov Bandan Das Stefan Hajnoczi Manuel Egele Download Note: https://jbox.sjtu.edu.cn/l/X19YQI Contributor: ydh Overview 整个云生态系统的安全性依赖于hypervisor在客户vm和主机系统之间提供的隔离保证。为了vm与其环境通信,hypervisor提供了大量虚拟设备。如果这些虚拟设备中存在bug和漏洞将会破坏hypervisor提供的隔离性保障。例如,利用虚拟设备中的漏洞可以完成虚拟机逃逸,它允许在不受信任的客户机中的攻击者破坏底层hypervisor并在VM的安全范围之外执行代码。这篇文章提出了一种通用方法,利用对hypervisor设计的洞察,结合覆盖引导模糊测试来找虚拟设备实现中的bug。这种方法不需要对虚拟设备有专业的知识,作者应用这个工具在QEMU和bhyve上的33个不同的虚拟设备,发现了61个bug,22个已经被修复,9个给了CVE。

[2022.04.27] [NDSS 2020] HFL: Hybrid Fuzzing on the Linux Kernel

会议: NDSS’20 链接: https://www.ndss-symposium.org/wp-content/uploads/2020/02/24018-paper.pdf 作者: Kyungtae Kim, Dae R. Jeong, Chung Hwan Kim, Yeongjin Jang, Insik Shin‡ Byoungyoung Lee Contributor: fhr abstract 混合Fuzzing是一种结合模糊测试和符号执行的程序分析技术,在漏洞挖掘领域有良好的前景。模糊生成和精确生成测试用例二者互为补充,能够克服各自的局限性。然而,由于内核所具有的特性,直接将Hybird Fuzzing应用到Kernel上存在如下挑战: (1)由系统调用参数决定的间接控制流分析 (2)系统调用及参数之间隐式依赖关系分析 (3)系统调用参数的嵌套类型推断 本文基于Syzkaller和S2E(binary lifting & klee)提出HFL这一面向kernel的混合fuzzing工具,并提出三项技术来解决上述问题。 (1)通过编译期的分析优化,将间接跳转转换为直接跳转。 (2)通过静态指针分析,选择性地符号化数据变量并推断syscall之间的依赖关系。 (3)根据处理syscall参数的方式不同,在运行时推断嵌套参数类型。 实验结果表明,HFL能够高效地将混合fuzzing技术引入内核的安全分析中。HFL的代码覆盖率高于Moonshine、Syzkaller、TriforceAFL等工作,并且发现了24个未知漏洞。

[2021.09.18] [USENIX Security 2021] Breaking Through Binaries: Compiler-quality Instrumentation for Better Binary-only Fuzzing

Source: https://www.usenix.org/system/files/sec21-nagy.pdf Slides: https://www.usenix.org/system/files/sec21_slides_nagy.pdf Authors: Stefan Nagy, Anh Nguyen-Tuong, Jason D. Hiser, Jack W. Davidson, Matthew Hick Download Note: https://jbox.sjtu.edu.cn/l/21uROA Contributor: ydh Overview 目前的二进制灰盒fuzz技术主要包括三种:硬件辅助追踪覆盖率,效率高但灵活性差;动态二进制模拟插桩,效率低;二进制代码重写,容易出错。这篇文章从基于源码fuzz的编译优化过程中汲取一些有效的方法策略运用在二进制fuzz的插桩中从而提高二进制fuzz的性能和有效性。

[2021.05.18] [NDSS 2021] Emilia: Catching Iago in Legacy Code

Source: https://security.csl.toronto.edu/wp-content/uploads/2021/01/rcui-ndss2021-emilia.pdf Authors: Rongzhen Cui, Lianying Zhao, David Lie. Download Note: https://jbox.sjtu.edu.cn/l/oFjqy9 Contributor: ydh Overview Iago攻击是恶意的操作系统修改运行在TEE中可信应用程序syscall的返回值导致应用程序非预期行为。本文通过fuzz的方法劫持应用程序请求的syscall,并对syscall的返回值fuzz来发现应用程序中潜在的Iago漏洞。 使用本文实现的工具对17个legacy应用程序fuzz,发现了51个Iago漏洞,并对漏洞做了进一步深入分析。

[2021.05.11] [PLDI 2021] Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing

Source: https://arxiv.org/pdf/2104.07460.pdf Authors: Guixin Ye, Zhangyong Tang, Shin Hwei Tan, etc. Download Note: https://jbox.sjtu.edu.cn/l/XFikWG Contributor: pdh Overview 本文介绍了一种名为Comfort的JS引擎fuzz的框架,能够检测出JS引擎编译代码得到的结果和ECMAScript标准定义的不一致的bug。它利用基于transformer的自然语言生成模型GPT-2,根据开源的JS代码语料库,来生成有效的JS测试代码实例,再利用差分测试的方法,来探测出JS引擎中可能存在的漏洞。 本文实现的框架对10种主流引擎(JSC in Safari, V8 in Chrome, ChakraCore in Edge, SpiderMonkey in Firefox, 以及一些移动端的引擎包括Hermes, QuickJS, Rhino, Nashorn, JerryScript, Graaljs)进行了检测,共发现了158个特定JS引擎的bug,其中129个被验证了,115个被修复了。除此之外,21个由Comfort生成的测试用例被加入了ECMAScript官方提供的的标准测试集Test262。