内核并发检测器(KCSAN)
2024-07-25
内核并发检测器(KCSAN)是一个动态竞争检测器,依赖编译时插桩,并且使用基于观察点的采样方法来检测竞争。KCSAN 的主要目的是检测 数据竞争。
KCSAN 受 GCC 和 Clang 支持,GCC 需要版本 11 或更高,Clang 也需要版本 11 ……  [阅读更多]
Setup: Linux isolated host
2024-07-24
以下是如何在隔离计算机上的内核进行模糊测试的指导。 隔离机器以一种限制远程管理的的方式被分开。 由于其特定的硬件设置,我们可能有兴趣对其模糊测试。
这个 syzkaller 配置仅使用SSH来启动和监视一个隔离机器。
考虑到可能只有 SSH 可用,我们将使……  [阅读更多]
Setup
2024-07-23
以下为创建 amd64 架构 OpenBSD 主机和 OpenBSD 虚拟机的指令。另外,主机必须运行
-current
分支。在整个操作指南中使用的变量如下:
注意:对真实的 Android 设备进行内核模糊测试可能会使其被破坏。
本文详细介绍了在 Android 设备上设置 syzkaller 实例对
arm32/64
Linux 内核进行模糊测试的步骤。一些 syzkaller 的功能可能在
arm32
上尚……  [阅读更多]How to contribute to syzkaller
2024-07-17
如果你想为本项目做出贡献,请按照下面的指南提交拉取请求。
如果这是你第一次向 syzkaller 提交拉取请求,你需要签署 Google CLA, 并在第一次提交时将自己添加到 AUTHORS/CONTRIBUTORS 文件中。
Syscall description language
2024-07-17
又称作
syzlang
([siːzˈlæŋg]
)系统调用描述的伪形式语法:
syscallname "(" [arg ["," arg]*] ")" [type] ["(" attribute* ")"] arg = argname type argna
……  [阅读更多]USB/IP Fuzzing for Linux Kernel
2024-07-15
Syzkaller 支持对 Linux 内核 USB/IP 子系统进行外部模糊测试。我们可以设置一个虚拟网络,并将 USB/IP 数据包发送到客户端内核,仿佛它们从外部服务器获取。USB/IP 模糊测试需要启用 USB/IP 配置。你可以在配置部分找到相关列……  [阅读更多]
Configuration
2024-07-12
Syzkaller 系统中的
syz-manager
进程操作由一个配置文件控制,该文件在调用时通过-config
选项传递。 这个配置可基于示例进行编写。 文件为 JSON 格式,包含多个参数。……  [阅读更多]KCOV: code coverage for fuzzing
2024-07-11
KCOV 以一种适用于覆盖率引导的模糊测试的形式收集和暴露内核代码覆盖率信息。一个正在运行的内核的覆盖率数据可以通过
kcov
调试文件导出。覆盖率的收集是基于任务启用的,因此 KCOV 可以精确捕获单个系统调用的覆盖率。要注意的是 KCOV 不是为了收集……  [阅读更多]
make headers_install
命令以适合于用户空间程序的形式导出内核头文件。Linux 内核导出的头文件描述了用户空间程序尝试使用内核服务的 API。这些内核头文件被系统的 C 库(例如 glibc 和 uClibc)用于定义可用的系统调用,以……  [阅读更多]
Syz-bisect
2024-07-11
syz-bisect
程序可用于对由 syzkaller 发现的崩溃进行查找责任提交(culprit commit)和修复提交(fix commit)。 它还可以识别触发崩溃的配置选项。使用
make bisect
构建syz-bisect
。在进行二……  [阅读更多]
Setup: Linux host, QEMU vm, arm64 kernel
2024-04-30
这份文档将详细说明如何设置 Syzkaller 实例,以便对你选择的任何 ARM64 Linux 内核进行模糊测试。
我们将使用 buildroot 来创建磁盘映像。 你可以从 这里 获取 buildroot。 解压压缩包,并在其中执行
make menu
……  [阅读更多]获取至少 GCC 9 版本的
s390x-linux-gnu-gcc
。最新的 Debian/Ubuntu/Fedora 发行版应该在gcc-s390x-linux-gnu
软件包中提供足够新版本的交叉编译器。获取 Linux 内核源码:
git cl
……  [阅读更多]Found bugs
2024-04-29
panicall 已经将 syzkaller ([1] (video), [2]) 移植到
Darwin/XNU
,并发现了 50 多个漏洞),包括在 苹果安全更新中提到的CVE-2018-4447
和CVE-2018-4435
。 然而,他并没有将他的工……  [阅读更多]Linux-specific syzkaller internals
2024-04-29
可以使用 syzkaller 对一些 Linux 内核系统调用接口进行模糊测试:
Linux kernel configs
2024-04-29
syzkaller
推荐的内核配置一览。参考配置详见 syzbot config。启用覆盖率收集对于提高模糊测试的有效性极其重要:
CONFIG_KCOV=y CONFIG_KCOV_INSTRUMENT_ALL=y CONFIG_KCOV_ENABLE
……  [阅读更多]Kernel Memory Leak Detector
2024-04-28
Kmemleak (Kernel Memory Leak Detector) 提供了一个类似可追踪的垃圾收集器的方法来检测可能的内核内存泄漏。与之不同的是,孤立对象不会被释放,只会在
/sys/kernel/debug/kmemleak
中报告。相似的方法也……  [阅读更多]syzkaller 已支持对网络栈的外部模糊测试。 这是通过使用 TUN/TAP 接口来实现的. 它允许设置一个虚拟网络接口,并将从外部网络接收到的数据包发送到内核。 这触发了真实数据包通过真实网络接口传递的相同路径(除了驱动层)。
您需要启用
CONFIG
……  [阅读更多]Linux is a CNA
2024-04-23
CVE 组织最近宣布,Linux 内核已然正式成为 CVE 编号机构(CNA)。作为 CNA,Linux 具有在其软件产品中发现的漏洞分配 CVE 编号的权限,并向 CVE 数据库做出贡献。
这是一个趋势,越来越多的开源项目开始成为 CNA,以便自己管理对其……  [阅读更多]
Troubleshooting
2024-04-19
如果您在运行 syzkaller 时遇到问题,请检查以下几点。
检查 QEMU 是否能成功启动虚拟机。例如,如果
IMAGE
设置为虚拟机的磁盘映像(根据image
选项的配置值),并且KERNEL
设置为测试内核(根据kernel
选项的配置值), ……  [阅读更多]