Strace2025-12-01
Syzkaller 可以配置为在 strace 监控下执行程序并捕获输出。
若
strace_bin被设置为strace二进制文件,syzkaller 将自动使用该strace二进制文件运行所有成功获取的重现用例。- 若 syz-manager 已 ……  [阅读更多]
How to set up syzkaller2025-11-29
针对 Linux 内核进行模糊测试的通用设置说明概述于此处。
其他内核的配置方法请参见: Akaros, FreeBSD, Darwin/XNU, Fuchsia, NetBSD, OpenBSD, Windows.
按照说明完成设置后,您应该能够运行
sy……  [阅读更多]
How to reproduce crashes2025-11-27
如果该漏洞是由 syzbot 报告的,首先需要构建该工具当时所用的内核版本。syzbot 会在报告里提供必要的信息:
Hello, syzbot found the following issue on: HEAD commit: ae58226……  [阅读更多]
Maintainer's Guide2025-11-24
我们保持线性历史记录,并在仓库设置中禁用合并提交(merge commit)。
拉取请求(PR)仅有两个选项:- 变基合并(Rebase and merge)
若 PR 中的所有提交已妥善整理/修复,优先选择此方式, 因其保留 PR 中的提交记录(将 PR 中 ……  [阅读更多]
- 变基合并(Rebase and merge)
Connecting several managers via Hub2025-09-30
syz-hub程序可用于将多个syz-manager连接在一起,并允许它们交换测试程序。使用
make hub编译syz-hub。然后按以下格式创建配置文件:{ "http": ":80", "rpc": ":55555",……  [阅读更多]
Headerparser2025-09-16
headerparser 是一个为 syzkaller 编写设备系统调用描述的辅助工具。
为了让 syzkaller 更智能地对设备节点开展模糊测试,你可以向它提供其预期的 ioctl 参数结构体类型信息。
然而,在某些情况下,参数结构体类型的数量可能很多,……  [阅读更多]
The afl-fuzz approach2025-08-28
AFL++ 是一款暴力模糊测试工具,它结合了一种极其简单但非常可靠的基于插桩技术完成覆盖率引导的遗传算法。AFL++ 采用一种改进的边覆盖率(edge coverage)度量,能够轻松捕捉到程序控制流中细微的、局部性的变化。
注:如果您想深入了解 AFL++……  [阅读更多]
Reproducible builds2025-07-31
通常希望使用相同工具集构建相同源代码是可重现的,即,输出始终完全相同。这使得能够验证二进制分发或嵌入式系统的构建基础设施未被篡改。这样也更容易验证源代码或工具的更改不会影响最终生成的二进制文件。
Building Linux with Clang/LLVM2025-07-26
本文档介绍如何使用 Clang 和 LLVM 工具构建 Linux 内核。
Linux 内核传统上一直使用 GNU 工具链(如 GCC 和 binutils)进行编译。持续的工作使得 Clang 和 LLVM 工具可作为可行的替代品。一些发行版,如 And……  [阅读更多]
Configuration targets and editors2025-07-24
本文件包含使用
make *config的一些帮助。使用
make help列出所有可能的配置目标。xconfig('qconf')、menuconfig('mconf')和 nconfig('nconf')程序也包含内嵌的帮助文本。请务必查看这些帮……  [阅读更多]
Kbuild2025-07-22
该文件记录模块在 Makefile 中出现的顺序。modprobe 使用该文件来确定性解析匹配多个模块的别名。
该文件列出了所有内置到内核中的模块。modprobe 使用该文件来避免尝试加载内置模块时出错。
该文件包含所有内置模块的 modinfo。……  [阅读更多]
Fuzzing binary-only targets2025-07-19
AFL++、libFuzzer 等模糊测试工具在拥有目标程序源代码的情况下表现出色,能够实现高速且基于覆盖率引导的模糊测试。
但对于只有二进制程序而缺少源代码的情况,传统的
afl-fuzz -n(非插桩模式)效果并不理想。为了对黑盒二进制文件进行快速的动……  [阅读更多]
OSPO 101 Training Modules - Module 12024-11-20
在本节中,我们将提供开源、开放标准和闭源软件的定义,并对它们进行比较。我们还将概述这三种元素如何共同作用,提供我们都依赖的技术解决方案。
在本节结束时,你应该能够:
定义开源、开放标准和闭源软件。
解释这三种概念的异同。
理解这三种概念如何协同工
……  [阅读更多]
Building and installing AFL++2024-11-18
通过 docker 来安装已经预编译好的 AFL++ 是一个非常简便的方法: 你可以使用 Dockerfile ,或者直接从 Docker Hub 拉取(适用于 x86_64 和 arm64 架构):
docker pull aflplusplus/afl……  [阅读更多]
OSPO 101 Training Modules2024-09-04
OSPO 101 是一门专注于开源项目办公室(Open Source Program Office,OSPO)管理的课程。
本课程内容按模块化设计,以便其能够按需分块使用:
Adding new OS support2024-09-03
为了让 syzkaller 支持一个新的操作系统内核,以下是需要编辑的 syzkaller 的共同部分。然而,特定内核可能还需要一些特定的更改(例如,从给定内核收集代码覆盖率,或者一些可能弹出并给出调整提示的错误信息)。
每个操作系统都有一个
execut……  [阅读更多]
syz-db2024-09-02
syz-db程序可用于操作由 syz-manager 使用的 corpus.db 数据库。使用
make db构建syz-db,或切换到tools/syz-db目录并运行go build。syz-db目前提供以下通用参数:-arc……  [阅读更多]
Bisecting a bug2024-08-29
请你总是尝试从 kernel.org 获取最新的内核,并从源代码开始构建。如果你对自己能够做到这一点不自信,请将错误报告发给你的发行版供应商,而不是内核开发者。
发现错误并不总是容易的。尽管如此,你还是需要尝试寻找。如果你找不到,请不要放弃。将你发现的尽可……  [阅读更多]
ABI obsolete symbols2024-08-22
ABI stable symbols2024-08-22
本文档记录了开发者定义为稳定的接口。
用户空间程序可以没有限制地自由使用这些接口,并且这些接口将在未来至少2年内保证向后兼容。
大多数接口(如系统调用)预期将永远不会改变,并始终可用。……  [阅读更多]