BlogsGitLabProtocol Fuzzer Community Edition

Protocol Fuzzer Community Edition

Protocol Fuzzer Community Edition

7
posts
2019–2021

GitLab has open-sourced the core protocol fuzz testing engine of Peach Fuzzer as GitLab Protocol Fuzzer Community Edition. This provides the engine to run and orchestrate fuzz tests and define custom protocols, making advanced protocol fuzz testing capabilities accessible to the open-source community, security researchers, and students. This complements existing API fuzz testing features within GitLab. The acquisition of Peach Tech and Fuzzit brings coverage-guided and behavioral fuzz testing in

2021

We're open sourcing Protocol Fuzzer Community Edition!

3/23/2021

GitLab has open-sourced the core protocol fuzz testing engine of Peach Fuzzer, now available as GitLab Protocol Fuzzer Community Edition. This release includes the engine for running and orchestrating fuzz tests and defining custom protocols, previously only available in commercial versions. This move aims to empower the open-source community, security researchers, and students with advanced fuzz testing capabilities to find vulnerabilities.

2020

How to fuzz Go code with go-fuzz continuously

12/3/2020

This post details how to integrate go-fuzz with GitLab CI/CD. It explains the go-fuzz algorithm, provides a step-by-step guide for building and running go-fuzz with a sample Go program, and demonstrates how to configure a `.gitlab-ci.yml` file to include fuzz testing as a pipeline stage. It also highlights the use of `gl-fuzz` CLI for running fuzzing sessions and regression tests.

How to fuzz Rust code continuously

12/3/2020

This post details how to use `cargo-fuzz` for fuzzing Rust code, explaining its relationship with libFuzzer and its coverage-guided algorithm. It provides a step-by-step guide to building and running a fuzz target using a sample Rust function with an off-by-one bug, demonstrating how the fuzzer finds the bug and generates a crash artifact. It also outlines how to integrate `cargo-fuzz` into GitLab CI/CD pipelines using the `.gitlab-ci.yml` file and the `gitlab-cov-fuzz` CLI for both blocking pipeline execution and long-running asynchronous fuzzing sessions.

Find Bugs with Coverage-Guided Fuzz Testing

10/1/2020

This post introduces GitLab's built-in coverage-guided fuzz testing capability, explaining how it helps discover bugs and security issues by sending random inputs to instrumented applications. It also provides a link to a video tutorial on configuring fuzz testing on GitLab.

How Arctic Engine uses GitLab's fuzz testing

8/19/2020

This post details how Arctic Engine integrated GitLab's fuzz testing capabilities into its CI/CD pipeline to test its sound loader, CSV, and TGA file parsers. It describes the process of creating a test harness with `LLVMFuzzerTestOneInput`, configuring CMakeLists.txt with `-fsanitize=fuzzer`, and adding a few lines to `.gitlab-ci.yml`. The author highlights the discovery of several bugs, including signed integer overflow, division by zero, buffer overruns, and out-of-memory errors, and expresses plans to apply fuzz testing to future network code.

How recent acquisitions introduce fuzz testing to GitLab

7/17/2020

This post announces the acquisition of Peach Tech and Fuzzit, bringing their fuzz testing technologies into GitLab. It details the concept of fuzz testing (coverage-guided and behavioral), explains how GitLab will integrate these into its workflow via CI job templates with inline results, and highlights the open-sourcing of fuzz testing engines. It also outlines the initial release plans for behavioral-guided fuzz testing of web APIs and coverage-guided fuzz testing for Go, with future plans for protocol fuzz testing.

2019

GitLab automates instrumented fuzzing via American Fuzzy Lop

8/14/2019

This post details how to automate instrumented fuzzing with American Fuzzy Lop (AFL) as part of a CI/CD pipeline. It provides a practical example using a Docker image, a sample vulnerable C program, and a Python script to manage AFL execution and artifact collection. It also discusses considerations for distributed fuzzing and potential future automation of crash triage and issue creation.