Fuzz

与 Syzkaller 类似,Healer 使用 Syzlang 描述所提供的 syscall 信息来生成确认参数结构约束和部分语义约束的系统调用序列,并通过不断执行生成的调用序列来发现内核错误,导致内核崩溃。
现有 fuzz 大多以代码覆盖率为引导指标。以AFL为例,它使用映射至 hashmap 中的基于 edge 的覆盖率信息来引导测试。这种覆盖率信息不太准确,因为只统计至 edge 层面,同时还会产生覆盖 hash 冲突,丢失覆盖率信息,给模糊测试带来一些不良限制。
火狐内部的进程间通信(IPC)层是火狐多进程安全架构的基石。
相关源代码以及构建方式已开源至 github 上。重申一下,该 fuzz 目前处于实验性版本,可能有亿点点不太稳定(笑)。
Directed fuzzing 可以翻译为定向模糊测试,导向型模糊测试,是灰盒模糊测试中的一种。
本文提及的IPC fuzzer方法通过程序拆解和分析应用程序的字节码来实现fuzz功能,而且该fuzzer支持输入生成分析和输出后结果分析,这些结果可以使我们了解崩溃原因详情。
此文章主要是对AFL仓库中doc目录下的所有文档进行翻译。
在前两篇文章中,我分析了afl-gcc的相关处理逻辑。简单来说,afl-gcc会将必要的函数以及桩代码插入到我们的源汇编文件中,这样,经过编译的程序将会带有一些外来的函数。但是。这些函数到底是怎样生效的呢,在本篇文章中,我将对AFL的主逻辑,也就是afl-fuzz进行分析。
​ 在第二部分中,我将重点介绍如何构建我们自己的自定义 ASAN 拦截器,以便在实现自定义内存池时捕获内存错误,以及如何拦截文件系统系统调用以检测目标应用程序中的逻辑错误。
​ 我将分三部分详细介绍我的 Apache fuzzing 研究。在第一部分中,我将简要介绍 Apache HTTP 的工作原理,并让您深入了解自定义 mutator 以及如何将它们有效地应用于 HTTP 协议。