my own kernel fuzzer - lxfuzz
my long-time project is writing a kernel fuzzer named lxfuzz. it is a coverage-guided fuzzer for the linux kernel. I chose that project for some reasons:
- to learn about fuzzing, its mechanisms etc. in general
- to learn more about the linux kernel, especially
- to improve my C++ skills :) (the language used for lxfuzz)
- profit (finding CVEs)
undert the hood it’s using qemu to run the kernel and kcov for coverage collection. the project is still work-in-progress and developed gradually. the current features are:
- testing syscalls, char devices, sockets, …
- running multiple instaces each assigned cpu cores and memory
- freedom in running the kernel, highly configurable
- coverage collection through the kcov framework
- using hypercalls for fast data transfer between guest and host
- a basic mutator and logging functionality
- kernel panic saving and a crash reproducer
- making use of user namespaces and/or running as a daemon
- and more to come
you can find the current state of development on GitHub as well as some more info. feel free to reach out on me for any questions/advice/etc. :)