Reading Papers - Hybrid Fuzzing
# XXX
# ICSE'07 - HCT (to-be-reread)
HCT
Taxonomy : hybrid fuzzing
Tag : concolic execution / random testing
在大型程序上,与程序的所有可能行为相比,随机测试所涵盖到的程序行为通常只是很少的一部分,因此在随机测试后仍会存在许多错误。虽然随机测试可以快速执行大量非常长的程序路径以触及程序状态空间的深层状态,但它无法捕获大量的程序行为。
在实践中,符号执行必须符号化地考虑的路径数过多,以至于这些方法(在可以接受的耗时内)最终只能探索程序状态空间的一小部分,以及那些只需执行较短路径就能到达的部分。此外,随着执行长度的增加,沿着执行路径维护和解决符号约束变得昂贵。
总之我们可以认为,随机测试是 deep 但不够 wide 的,而动态符号执行是 wide 但不够 deep 的。
hybrid concolic teseting, HCT 是一种简单的算法,它将随机测试与 concolic execution 交织使用:有效利用二者各自的优势:从初始状态出发,HCT 首先开始执行随机测试以提高覆盖率。当随机测试饱和时(即在执行了一定数量的步骤后没有产生任何新的覆盖时),算法会自动从当前程序状态切换到 concolic execution ,以执行详尽的 depth-bounded 搜索。一旦找到,算法就会恢复到具体执行。
# NDSS'16 - Driller (to-be-reread)
Driller
Taxonomy : hybrid fuzzing
Tag : concolic execution
- 01
- Reading Papers - Kernel Concurrency06-01
- 02
- Linux Kernel - Source Code Overview05-01
- 03
- Linux Kernel - Per-CPU Storage05-01