Proj THUDBFuzz Paper Reading: REDQUEEN: Fuzzing with Input-to-State Correspondence
Abstract
P1: feedback带来了进步;但是还有magic numbers和checksums两件事没有解决;taint tracking和symbolic execution需要源码和对系统环境的了解
P2: 本文:工具: REDQUEEN
特点:轻量级taint tracking和symbolic execution
目标:在未知环境中对大型程序做fuzzing
经验:在fuzzing中部分执行还没有改程序状态就会终止了,称这种现象为input-to-state correspondance
前提:认为这种input-to-state correspondance可以用来解决magic bytes和checksum的问题
实验:
- 能够在不同权限等级上(分别在kernel space和userland)超过前沿工具
- 无需针对平台特意添加代码
- 第一次几乎找到了全部LAVA-M数据集中注入的缺陷
- 65 new bugs, 16 CVEs
- outperforms concurrent approaches by up to three orders of magnitude.
1. Intro
P1: fuzzing有用
P2: 需要一些先验知识,具体来说:需要很多seed inputs或者针对该输入格式的generator
A Common Fuzzing Roadblocks
P1: 用List1来举例magic numbers和checksums对fuzzing的阻碍
P2: 过去的工作(例如Angora和T-Fuzz)需要环境的详细描述,比如库调用和底层OS的行为描述,此外,还需要平台指令集的语义描述。对环境描述的需求最终常会导致在需要用复杂指令集拓展的目标程序,或者用不常见的库和操作系统的目标程序上面效率不高。REDQUEEN解决该问题,在开源Userland程序或者闭源OS内核上效果都好
These approaches usually require a rather precise description of the environment (e.g., behavior of library calls or the underlying OS) and the exact semantics of the platform’s instruction set.
B Our Approach: Input-to-State Correspondance
P1: 新方法旨在取代taint tracking和symbolic execution,优点:轻量,能够适用于大型复杂待测程序,也能够在不同的环境下进行测试。现象:很多程序只在输入上应用很少几步解码工作,而且实际上这些编码都集中在有限几种上。normally, these values are directly used in the context of hard condition such as checks for a specific header value (magic bytes)
P2:
方法总论: 跟踪程序,观察在比较指令中用到的值
1.用随机bytes为输入染色(类似taint tracking,更轻量)
2. 推测可以通过更改相应的输入字节来控制这些值
3. (这里强调使用的是fast fuzzing process)测试是否触发了有趣行为
本文会迅速丢弃由于over-approximation所产生的误报。
优点: 使我们能够跳过代码的复杂部分,例如API调用或未知指令,否则它们将很难进行污点跟踪或符号执行。即使通过未知库函数输入,依赖于大型数据的循环以及浮点指令也不会显着降低结果的质量。我们继续使用相同的原理来实现基于补丁的解决方案来处理校验和测试。与类似的方法相比,我们的方法完全避免了符号执行,同时始终保持具有有效校验和且没有误报的输入队列。
P3: 将较昂贵的分析过程与模糊处理分开。 对于每个特定的新输入,仅搜索一次path-specific input-to-state correspondences。 All actual fuzzing is then performed without this additional overhead。
P4: 实验细节
在GNU binutils上
- 与VUzzer或者KLEE相比,加速了5-5000倍,与AFLFast和LAT-INFEL相比,加速了2-200倍
在LAVA-M数据集上 - 找到2600个bugs,其中335个没有列出
- LAVA-M注入的已知bugs只有2/2265个没有找到
P5: REDQUEEN found 10 bugs in 2 different Linux file system drivers and 55 bugs in 16 user-space programs and software libraries
C. Contributions
rt
II. Related Work
rt