Top Related Projects
OSS-Fuzz - continuous fuzzing for open source software.
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Scalable fuzzing infrastructure.
Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)
Quick Overview
Syzkaller is an unsupervised, coverage-guided kernel fuzzer developed by Google. It is designed to find bugs in operating system kernels by generating, running, and mutating programs that invoke system calls. Syzkaller supports multiple operating systems and architectures, making it a powerful tool for kernel developers and security researchers.
Pros
- Highly effective at finding kernel bugs and vulnerabilities
- Supports multiple operating systems (Linux, FreeBSD, NetBSD, OpenBSD, Windows, Android, Fuchsia)
- Provides extensive documentation and detailed crash reports
- Continuously updated and maintained by Google and the open-source community
Cons
- Complex setup process, especially for non-Linux systems
- Requires significant computational resources for optimal performance
- May generate false positives or duplicate bug reports
- Steep learning curve for users unfamiliar with kernel development or fuzzing techniques
Getting Started
To get started with Syzkaller, follow these steps:
-
Clone the repository:
git clone https://github.com/google/syzkaller.git
-
Install dependencies (for Ubuntu):
sudo apt-get install golang-go gcc binutils bison flex make
-
Build Syzkaller:
cd syzkaller make
-
Configure Syzkaller (create a
my.cfg
file with appropriate settings) -
Run Syzkaller:
./bin/syz-manager -config my.cfg
For detailed instructions and configuration options, refer to the official documentation in the repository.
Competitor Comparisons
OSS-Fuzz - continuous fuzzing for open source software.
Pros of OSS-Fuzz
- Broader scope: Supports fuzzing for multiple programming languages and various types of software
- Continuous integration: Integrates easily with CI/CD pipelines for automated fuzzing
- Large-scale infrastructure: Leverages Google's computing resources for extensive fuzzing
Cons of OSS-Fuzz
- Higher complexity: Requires more setup and configuration compared to Syzkaller
- Less specialized: Not as focused on kernel fuzzing as Syzkaller
Code Comparison
Syzkaller (syscall description):
open(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd
OSS-Fuzz (build script):
#!/usr/bin/python3
import os
import sys
import subprocess
def build_fuzzers(src, work, project_name):
# Build steps here
Key Differences
- Syzkaller focuses on kernel fuzzing, while OSS-Fuzz is a general-purpose fuzzing platform
- Syzkaller uses a custom description language for syscalls, whereas OSS-Fuzz relies on project-specific build scripts
- OSS-Fuzz supports a wider range of programming languages and integrates with various build systems
Use Cases
- Choose Syzkaller for specialized kernel and driver fuzzing
- Opt for OSS-Fuzz when fuzzing diverse open-source projects across different languages and platforms
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Pros of AFLplusplus
- More versatile, supporting a wider range of target programs and platforms
- Offers advanced features like power schedules and custom mutators
- Actively maintained with frequent updates and community contributions
Cons of AFLplusplus
- Steeper learning curve due to numerous configuration options
- May require more manual setup and tuning for optimal performance
- Less specialized for kernel fuzzing compared to Syzkaller
Code Comparison
AFLplusplus example (instrumentation):
#define AFL_LLVM_PASS
#include "config.h"
#include "debug.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "llvm/ADT/Statistic.h"
#include "llvm/IR/IRBuilder.h"
Syzkaller example (syscall description):
include <linux/keyctl.h>
resource fd[int32]: 0xffffffffffffffff, AT_FDCWD
resource key[int32]
keyctl$get_keyring_id(id keyring_id, create bool) key
keyctl$join_session_keyring(name ptr[in, string]) key
Both projects are powerful fuzzing tools, but AFLplusplus is more general-purpose, while Syzkaller specializes in kernel fuzzing. AFLplusplus offers more flexibility and features, but Syzkaller provides a more streamlined experience for its specific use case.
Scalable fuzzing infrastructure.
Pros of ClusterFuzz
- Supports multiple programming languages and platforms
- Offers a web interface for easier management and result analysis
- Provides scalable distributed fuzzing infrastructure
Cons of ClusterFuzz
- More complex setup and configuration process
- Requires more resources for deployment and maintenance
- Steeper learning curve for new users
Code Comparison
Syzkaller (system call definition):
syz_open_dev = (dev ptr[in, string], id intptr, flags flags[open_flags]) fd
ClusterFuzz (fuzzer configuration):
fuzz_target:
language: cpp
engine: libFuzzer
sanitizer: address
Both projects focus on fuzzing, but Syzkaller specializes in kernel fuzzing, while ClusterFuzz is a more general-purpose fuzzing platform. Syzkaller uses a custom description language for system calls, whereas ClusterFuzz employs configuration files for various fuzzing settings.
ClusterFuzz offers broader language support and a user-friendly interface, making it suitable for diverse projects. However, this versatility comes at the cost of increased complexity and resource requirements. Syzkaller, being more specialized, may be easier to set up for kernel-specific fuzzing tasks but lacks the extensive features and language support of ClusterFuzz.
Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)
Pros of Honggfuzz
- Simpler setup and usage, making it more accessible for beginners
- Supports a wider range of targets, including userspace applications
- Offers unique features like hardware-based feedback for ARM
Cons of Honggfuzz
- Less specialized for kernel fuzzing compared to Syzkaller
- May not be as effective for finding complex, multi-step vulnerabilities in kernels
- Lacks some advanced features specific to kernel fuzzing
Code Comparison
Syzkaller (system call definition):
open(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd
Honggfuzz (example usage):
honggfuzz -f input_corpus/ -w output_corpus/ -- ./target_binary ___FILE___
Both tools use different approaches for defining and executing fuzz targets. Syzkaller focuses on system call definitions for kernel fuzzing, while Honggfuzz uses a more general command-line approach for various target types.
Syzkaller is specifically designed for kernel fuzzing, offering advanced features like coverage-guided syscall generation and kernel-specific sanitizers. Honggfuzz, while versatile, may not provide the same level of specialized kernel fuzzing capabilities but offers broader applicability across different target types.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
syzkaller - kernel fuzzer
syzkaller
([siËzËkÉËlÉ]
) is an unsupervised coverage-guided kernel fuzzer.
Supported OSes: FreeBSD
, Fuchsia
, gVisor
, Linux
, NetBSD
, OpenBSD
, Windows
.
Mailing list: syzkaller@googlegroups.com (join on web or by email).
Found bugs: Darwin/XNU, FreeBSD, Linux, NetBSD, OpenBSD, Windows.
Documentation
Initially, syzkaller was developed with Linux kernel fuzzing in mind, but now it's being extended to support other OS kernels as well. Most of the documentation at this moment is related to the Linux kernel. For other OS kernels check: Darwin/XNU, FreeBSD, Fuchsia, NetBSD, OpenBSD, Starnix, Windows, gVisor. Akaros,
- How to install syzkaller
- How to use syzkaller
- How syzkaller works
- How to install syzbot
- How to contribute to syzkaller
- How to report Linux kernel bugs
- Tech talks and articles
- Research work based on syzkaller
Disclaimer
This is not an official Google product.
Top Related Projects
OSS-Fuzz - continuous fuzzing for open source software.
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Scalable fuzzing infrastructure.
Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot