Skip to main content

PASTIS framework for collaborative fuzzing

Project description

The PASTIS project is a fuzzing framework aiming at combining various software testing techniques

within the same workflow to perform collaborative fuzzing also called ensemble fuzzing.

At the moment it supports the following fuzzing engines:

Quick start

Installation

The PASTIS framework can be installed with:

pip install pastis-framework

The pip package will install all dependencies and the tritondse

engine.

AFL++

To install AFL++ please refer to the official documentation.

Honggfuzz

Honggfuzz requires a specific build with a patch applied

it can be compiled by applying the following steps:

sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang

git clone https://github.com/quarkslab/pastis.git

cd pastis/engines/pastis-honggfuzz/patches

./make_hf.sh

echo "export HFUZZ_PATH=$PWD/honggfuzz-5a504b49" >> ~/.profile

Usage

The main component is the broker that will serve the appropriate configurations to fuzzing

engines and that will aggregate results. An example is the following:

tar xvf doc/figs/fsm-demo.tar.gz && cd fsm-demo

make

pastis-broker -b bin -s initial -w output

It will run the broker using binaries in the bin directory. Initial corpus

is initial and the whole output workspace will be save in output. By default

it will listen on the local interface on port 5555.

Then fuzzing engines can be launched to start testing the software.

pastis-aflpp online

Or:

pastis-triton online

Full documentation is available: here

Adding a Fuzzer

Integrating a fuzzer requires writing a Python driver using the libpasts library

installed by the package. It requires implementing some callbacks to receive the initial

configuration and also to receive inputs from the broker. Conversely the API enables

sending newly generated inputs to the broker.

The process is further detailed in the documentation.

Note

We warmly welcome any Pull Request to add the support for a new fuzzing engine.


Papers and conference

  • Symbolic Execution the Swiss-Knife of the Reverse Engineer Toolbox

    Venue: KLEE Workshop, 2022 [:books:] [:movie_camera:]

    Authors: Robin David, Richard Abou Chaaya, Christian Heitman

  • From source code to crash test-case through software testing automation

    Venue: European Cyber Week, C&ESAR Workshop, 2021 paper slides

    Authors: Robin David, Jonathan Salwan, Justin Bourroux

Cite Pastis

soon

Contributors

Pastis is powered by Quarkslab and initially financed by DGA-MI.

All contributions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pastis-framework-1.0.1.tar.gz (82.9 kB view hashes)

Uploaded Source

Built Distribution

pastis_framework-1.0.1-py3-none-any.whl (97.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page