All Projects → pzread → fuzvisor

pzread / fuzvisor

Licence: Apache-2.0 license
A framework provides an interface to monitor and control fuzzers

Programming Languages

rust
11053 projects
C++
36643 projects - #6 most used programming language
CMake
9771 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to fuzvisor

nozaki
HTTP fuzzer engine security oriented
Stars: ✭ 37 (+19.35%)
Mutual labels:  research, fuzzer
htrgouvea.github.io
My past public researches are archived here
Stars: ✭ 18 (-41.94%)
Mutual labels:  research
llvm-semantics
Formal semantics of LLVM IR in K
Stars: ✭ 42 (+35.48%)
Mutual labels:  research
book-notes
📖Notes on books and other things I'm reading 📖
Stars: ✭ 43 (+38.71%)
Mutual labels:  research
cerberus research
Research tools for analysing Cerberus banking trojan.
Stars: ✭ 110 (+254.84%)
Mutual labels:  research
Groundbreaking-Papers
ML Research paper summaries, annotated papers and implementation walkthroughs
Stars: ✭ 90 (+190.32%)
Mutual labels:  research
jdit
Jdit is a research processing oriented framework based on pytorch. The docs is here!
Stars: ✭ 29 (-6.45%)
Mutual labels:  research
vulnerability-lab
漏洞研究
Stars: ✭ 379 (+1122.58%)
Mutual labels:  research
sjm
Sancho McCann's PhD Thesis Research Code
Stars: ✭ 24 (-22.58%)
Mutual labels:  research
linkedresearch.org
🌐 linkedresearch.org
Stars: ✭ 32 (+3.23%)
Mutual labels:  research
research-grants
Protocol Labs Research Grants
Stars: ✭ 143 (+361.29%)
Mutual labels:  research
schemaanalyst
➰ Search-based Test Data Generation for Relational Database Schemas
Stars: ✭ 18 (-41.94%)
Mutual labels:  research
hack
Kubernetes security and vulnerability tools and utilities.
Stars: ✭ 56 (+80.65%)
Mutual labels:  research
knowledge
Everything I know. My knowledge wiki. My notes (mostly for fast.ai). Document everything. Brain dump.
Stars: ✭ 118 (+280.65%)
Mutual labels:  research
trackswitch.js
A Versatile Web-Based Audio Player for Presenting Scientific Results
Stars: ✭ 39 (+25.81%)
Mutual labels:  research
mozilla-sprint-2018
DEPRECATED & Materials Moved: This sprint was to focus on brainstorming for the Joint Roadmap for Open Science Tools.
Stars: ✭ 24 (-22.58%)
Mutual labels:  research
plur
PLUR (Programming-Language Understanding and Repair) is a collection of source code datasets suitable for graph-based machine learning. We provide scripts for downloading, processing, and loading the datasets. This is done by offering a unified API and data structures for all datasets.
Stars: ✭ 67 (+116.13%)
Mutual labels:  research
seeing-red
Using PPG Obtained via Smartphone Cameras for Authentication
Stars: ✭ 29 (-6.45%)
Mutual labels:  research
awesome-utrecht-university
A curated list of awesome open source projects from Utrecht University.
Stars: ✭ 31 (+0%)
Mutual labels:  research
hyper-radar
💡 Research and development at Hyper
Stars: ✭ 12 (-61.29%)
Mutual labels:  research

Fuzvisor

A framework provides an interface to monitor and control fuzzers.

DISCLAIMER: This is not an officially supported Google product.

Fuzvisor is not a fuzzer but a controller of fuzzers. Its collecting server gathers the performance and coverage from multiple fuzzing workers through high-throughput gRPC protocol. And useful static program structures (e.g. control flow graph) are dumped during compile time and loaded by the collecting server for analysis during fuzzing. This framework makes it easier to build and experiment complex fuzzing control algorithm on top of the existing fuzzers (e.g. libfuzzer).

This project is still under heavy development.

Build

Prerequisites

  • CMake >= 3.10
  • Toolchain to build Clang and LLVM
  • Latest Rust toolchain

Build the modified Clang and LLVM

mkdir fuzvisor-build && cd fuzvisor-build
cmake ../fuzvisor
cmake --build .

Usage

Prepare the fuzzing target

Use the LLVM toolchain at fuzvisor-build/third_party/llvm-prefix/src/llvm-build/bin/ to compile your target with libfuzzer. For example:

fuzvisor-build/third_party/llvm-prefix/src/llvm-build/bin/clang -fsanitize=fuzzer -O a.out target.cpp

Start the example coverage collecting server

cd fuzvisor/collector
cargo run --release --example coverage_collector

Start the fuzzing target

Same as running a libfuzzer target. For example:

./a.out -use_value_profile=1 -jobs=16

Then the collecting server will start showing the coverage information.

Observer proxy (I don't want to write Rust code)

Instead of using the collecting server written in Rust, you can also run observer_proxy. It will proxy all data to a gRPC server implementing observer_service in any programming language.

For example:

cargo run --release --bin observer_proxy -- --listen_addr [::1]:2501 --observer_url http://{your observer service server}

You can try the example coverage_observer.py by following the steps below, and see more details in the code.

cd fuzvisor/collector/examples/python
pip install -f requirements.txt
./build.sh
python coverage_observer.py

# Start your fuzzing target.

Branches

This is a heavy-experiment-oriented project. There are some rapid changes on protocol and API in order to support new experiments. Those changes might not be well designed and hacky, therefore they are not directly merged back to the main branch. However, if you find some useful functions are missing, they might have been supported in the branches below.

Branch Description
exp-priority-control Seed priority control

Developer Guides (WIP)

Component Overview

components_overview

Execution Flow

execution_flow

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].