ABI testing symbols2024-08-22
本文档记录了被认为稳定的接口,因为这些接口的主要开发已经完成。
接口可以被更改以添加新功能,但当前接口不会因此被破坏,除非在它们当中发现了严重错误或安全问题。
用户空间程序可以开始依赖这些接口,但它们必须清楚在这些接口被标记为稳定之前可能会发生的变化。
强烈……  [阅读更多]
Linux ABI description2024-08-22
abi-stable abi-testing abi-obsolete abi-removed ……  [阅读更多]
GCC plugin infrastructure2024-08-19
GCC 插件是为编译器提供额外功能的可加载模块[^1]。它们对于运行时插装和静态分析非常有用。 我们可以在编译过程中通过回调[^2],GIMPLE[^3],IPA[^4] 和 RTL Passes[^5] (译者注:Pass 是编译器所采用的一种结构化技术……  [阅读更多]
Pseudo-syscalls2024-08-16
除了常规系统调用外,系统调用描述 文件也包含伪系统调用。它们是在执行器中定义的 C 函数。当测试程序使用伪系统调用时,执行器将在生成的 C 程序中生成伪系统调用函数。
伪系统调用的存在使得测试程序可以拥有执行特定操作的特定代码块,它们还可以作为更加测试友好的……  [阅读更多]
Troubleshooting2024-08-15
如果你在运行 syzkaller 时遇到问题,以下是一些故障排除的方法:
使用
-debug命令行选项使 syzkaller 打印所有可能的调试输出,来自于syz-manager顶级程序及syz-fuzzer实例。使用这个选项时,syzkalle ……  [阅读更多]
Setup: Debian host, QEMU vm, arm kernel2024-08-14
获取最新的
arm-linux-gnueabihf-gcc工具。最新的 Debian 发行版中提供的版本为 7.2.0,这对于本文的工作来说已经足够。你也可以点击 这里 来下载 Linaro 编译器。以下指令已在
v4.16.1上进行测试。请首先检……  [阅读更多]
Reporting Linux kernel bugs2024-08-13
在报告错误之前,请确保没有其他人已经重复报告过它. 最简单的方法是在 syzkaller 邮件列表, syzkaller-bugs 邮件列表 和 syzbot dashboard 中搜索内核栈跟踪中存在的关键栈帧。
请将发现的错误报告给 Linux 内核维护……  [阅读更多]
Continuous integration fuzzing2024-07-31
syz-ci 命令为基于 syzakller 的持续模糊测试提供支持。 它运行一些 syzkaller 管理器,并为这些管理器轮询并重建内核镜像,同时轮询并重建 syzkaller 二进制文件。……  [阅读更多]
内核并发检测器(KCSAN)2024-07-25
内核并发检测器(KCSAN)是一个动态竞争检测器,依赖编译时插桩,并且使用基于观察点的采样方法来检测竞争。KCSAN 的主要目的是检测 数据竞争。
KCSAN 受 GCC 和 Clang 支持,GCC 需要版本 11 或更高,Clang 也需要版本 11 ……  [阅读更多]
Setup: Linux isolated host2024-07-24
以下是如何在隔离计算机上的内核进行模糊测试的指导。 隔离机器以一种限制远程管理的的方式被分开。 由于其特定的硬件设置,我们可能有兴趣对其模糊测试。
这个 syzkaller 配置仅使用SSH来启动和监视一个隔离机器。
考虑到可能只有 SSH 可用,我们将使……  [阅读更多]
Setup2024-07-23
以下为创建 amd64 架构 OpenBSD 主机和 OpenBSD 虚拟机的指令。另外,主机必须运行
-current分支。在整个操作指南中使用的变量如下:
注意:对真实的 Android 设备进行内核模糊测试可能会使其被破坏。
本文详细介绍了在 Android 设备上设置 syzkaller 实例对
arm32/64Linux 内核进行模糊测试的步骤。一些 syzkaller 的功能可能在
arm32上尚……  [阅读更多]
How to contribute to syzkaller2024-07-17
如果你想为本项目做出贡献,请按照下面的指南提交拉取请求。
如果这是你第一次向 syzkaller 提交拉取请求,你需要签署 Google CLA, 并在第一次提交时将自己添加到 AUTHORS/CONTRIBUTORS 文件中。
Syscall description language2024-07-17
又称作
syzlang([siːzˈlæŋg])系统调用描述的伪形式语法:
syscallname "(" [arg ["," arg]*] ")" [type] ["(" attribute* ")"] arg = argname type argna……  [阅读更多]
USB/IP Fuzzing for Linux Kernel2024-07-15
Syzkaller 支持对 Linux 内核 USB/IP 子系统进行外部模糊测试。我们可以设置一个虚拟网络,并将 USB/IP 数据包发送到客户端内核,仿佛它们从外部服务器获取。USB/IP 模糊测试需要启用 USB/IP 配置。你可以在配置部分找到相关列……  [阅读更多]
Configuration2024-07-12
Syzkaller 系统中的
syz-manager进程操作由一个配置文件控制,该文件在调用时通过-config选项传递。 这个配置可基于示例进行编写。 文件为 JSON 格式,包含多个参数。……  [阅读更多]
KCOV: code coverage for fuzzing2024-07-11
KCOV 以一种适用于覆盖率引导的模糊测试的形式收集和暴露内核代码覆盖率信息。一个正在运行的内核的覆盖率数据可以通过
kcov调试文件导出。覆盖率的收集是基于任务启用的,因此 KCOV 可以精确捕获单个系统调用的覆盖率。要注意的是 KCOV 不是为了收集……  [阅读更多]
make headers_install命令以适合于用户空间程序的形式导出内核头文件。Linux 内核导出的头文件描述了用户空间程序尝试使用内核服务的 API。这些内核头文件被系统的 C 库(例如 glibc 和 uClibc)用于定义可用的系统调用,以……  [阅读更多]
Syz-bisect2024-07-11
syz-bisect程序可用于对由 syzkaller 发现的崩溃进行查找责任提交(culprit commit)和修复提交(fix commit)。 它还可以识别触发崩溃的配置选项。使用
make bisect构建syz-bisect。在进行二……  [阅读更多]
Setup: Linux host, QEMU vm, arm64 kernel2024-04-30
这份文档将详细说明如何设置 Syzkaller 实例,以便对你选择的任何 ARM64 Linux 内核进行模糊测试。
我们将使用 buildroot 来创建磁盘映像。 你可以从 这里 获取 buildroot。 解压压缩包,并在其中执行
make menu……  [阅读更多]