Skip to main content

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 (>= v2.6)

To install Honggfuzz please refer to the official documentation.

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-tritondse 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.


Docker

You can also run PASTIS using Docker:

# Pull from GitHub's registry.

docker pull ghcr.io/quarkslab/pastis:latest



# Or build the image.

docker build -t pastis .



# And run a container.

docker run -v <HOST-WORKSPACE>:/workspace --cap-add=SYS_PTRACE --user $(id -u $USER):$(id -g $USER) -it ghcr.io/quarkslab/pastis # or pastis if you buily the image locally.

To open another terminal to an already running container:

docker exec -it $(docker ps | grep 'pastis' | awk '{print $1}') /bin/bash

The PASTIS Docker image has already installed all the needed dependencies such as AFL++ and Honggfuzz.


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

Release files for pastis-framework 1.0.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pastis-framework 1.0.13
File Size Uploaded
pastis-framework-1.0.13.tar.gz 89.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pastis-framework 1.0.13
File Interpreter ABI Platform
pastis_framework-1.0.13-py3-none-any.whl Python 3 none any Details

Total release size: 195.0 kB

Release files / pastis-framework-1.0.13.tar.gz

Download URL pastis-framework-1.0.13.tar.gz
Size 89.4 kB
Tags Source
SHA-256 checksum
How to use checksums
bae83cd70a4f7008b506d117a89e27404273911887df7bc2c3a2ecdf0e2e3149
BLAKE2b-256 checksum
How to use checksums
8282c659e045b488699b54388756cef8f2029cf6a5f8fab1cad3af3e4c35a25f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.9

Release files / pastis_framework-1.0.13-py3-none-any.whl

Download URL pastis_framework-1.0.13-py3-none-any.whl
Size 105.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e24da5b184c6f2f0eacd9eee21f200c7ccf63ba11769e7537bc6557af8b95aa3
BLAKE2b-256 checksum
How to use checksums
57eb93805dde916e8cf91494b53f0816abea82e6e41636ab96b8b79e639ced52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.9

Release history Release notifications | RSS feed

This release

1.0.13 This release

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page