YFuzz
![Build Status](https://travis-ci.org/yahoo/yfuzz.svg?branch=master)
YFuzz is a project for running fuzzing jobs at scale with Kubernetes.
Table of Contents
Background
Popular fuzzers such as Libfuzzer and AFL have support for running multiple fuzzing processes at once. YFuzz aims to take advantage of this by running each process on a different Kubernetes pod to speed up the fuzzing process.
Projects
- YFuzz Server: The main API server for YFuzz.
- YFuzz CLI: A command-line interface for interacting with the YFuzz server.
- YFuzz Scripts: Docker image with scripts used by YFuzz containers.
Architecture
![Architecture Diagram](https://github.com/yahoo/yfuzz/raw/v0.0.2/architecture.png)
The YFuzz API resides in a kubernetes cluster along with the pods that run the fuzzing jobs and a shared volume that holds corpus data to be shared between the pods.
Planned:
- Each fuzzing pod will have a logging sidecar which streams logs from the pod to a centralized logging service.
- The YFuzz API will have access to a data store with information about users, jobs, and crash files.
Directory Structure
cmd
: Command line utilities.
images
: Dockerfiles used by YFuzz.
pkg
: Shared libraries and packages.
scripts
: Scripts for CI tooling.
services
: Long-running services, such as the yfuzz-server.
Contribute
Please refer to the contributing.md file for information about how to get involved. We welcome issues, questions, and pull requests. Pull Requests are welcome
License
This project is licensed under the terms of the Apache 2.0 open source license.