terry2012 / razzer

A Kernel fuzzer focusing on race bugs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Razzer: Finding kernel race bugs through fuzzing

Environment setup

Running scripts/envsetup.sh will set up necessary environment variables. One should select the kernel version during environment setup, for example, v4.17

Install

Initialize kernels_repo submodule

Kernel source codes used in this project are in the other reprository which is included as a submodule. To initialize the submodule one should execute git submodule update command as a follow.

git submodule update --init --depth=1 kernels_repo

Install toolchains / tools

scripts/install.sh will try to install all toolchains and tools.

Static analysis

The Razzer's static analysis is based on the LLVM toolchain and the SVF static analysis tool. See documents in docs/static_analysis/.

Fuzzing

Razzer's two-phases fuzzing is based on Syzkaller. The deterministic scheduler is implemented using QEMU/KVM. See documents in docs/fuzzing/.

Paper

Razzer: Finding Kernel Race Bugs through Fuzzing (IEEE S&P 2019)

Trophies

Contributors

About

A Kernel fuzzer focusing on race bugs


Languages

Language:C 72.5%Language:Go 17.1%Language:C++ 4.1%Language:Assembly 1.6%Language:Objective-C 1.2%Language:Python 0.8%Language:Makefile 0.8%Language:Forth 0.7%Language:Shell 0.4%Language:Perl 0.3%Language:Haxe 0.2%Language:Roff 0.1%Language:PHP 0.1%Language:JavaScript 0.0%Language:M4 0.0%Language:XSLT 0.0%Language:Yacc 0.0%Language:HTML 0.0%Language:Lex 0.0%Language:CSS 0.0%Language:NSIS 0.0%Language:CMake 0.0%Language:GDB 0.0%Language:QMake 0.0%Language:sed 0.0%Language:Tcl 0.0%Language:GLSL 0.0%Language:F# 0.0%Language:Awk 0.0%Language:Emacs Lisp 0.0%Language:Batchfile 0.0%