[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。