Blog News How recent acquisitions introduce fuzz testing to GitLab
2020-07-17
4 min read

How recent acquisitions introduce fuzz testing to GitLab

Learn more about fuzz testing and GitLab's recent acquisitions in the space.

peaches2.jpg

GitLab recently acquired two of the leading companies in the fuzz testing space - Peach Tech and
Fuzzit! These two companies bring amazing technology into GitLab. Read on the learn more about the technology and how you can easily integrate fuzz testing into your workflow.

What is fuzz testing?

Fuzz testing is a powerful way to test your apps to find security issues and
flaws in business logic that traditional QA methods miss. Fuzz testing works by passing
randomly generated inputs to your app, and assesses the results.

When the app being tested crashes or behaves in an unexpected way, this is
called a "fault." When a fault is discovered, that means there is a way for a user to provide a
similar, but potentially malicious, input to your app in a production environment to crash or
exploit it. Discovering faults lets you track down bugs in your code that
you wouldn't find otherwise and lets you fix them before an attacker can exploit these weaknesses.

There are a few different methods for fuzz testing. The two primary
methods are what we call "coverage-guided" fuzz testing and "behavioral"
fuzz testing. Fuzzit and Peach Tech bring these to Gitlab, respectively. Both methods approach fuzz testing differently.
Coverage-guided fuzz testing leverages the source code and instrumented versions
of the app to be able to observe the app as it is running and dynamically make
new tests during a fuzz testing session to exercise new parts of the app to find bugs. Behavioral fuzzing
takes a specification of how the app is supposed
to work and tries random inputs to test how it actually works - which usually
will find bugs and security issues. Coverage-guided fuzzing and behavioral fuzzing have unique
advantages and disadvantages, which is why GitLab aims to offer our users both options
so you can choose the right one (or both!) for your use case.

What makes GitLab’s fuzz testing special?

Traditionally, fuzz testing has been difficult to set up and hard get results from.
Some of the challenges with fuzz testing include assembling complex testing harnesses to run the fuzz tests and sorting through large amounts of results, including false positives. These challenges can make it time consuming and challenging to get meaningful results from fuzz testing.
Bringing Peach Tech and Fuzzit fuzz testing techniques into the existing GitLab
workflow means users can take advantage of the powerful benefits of fuzz
testing without any of the traditional difficulties associated with fuzz testing.
By bringing these two technologies into GitLab, we will make it easy for users to integrate fuzz testing into their workflows and present results in a meaningful and actionable way.

Preview of fuzz testing results in an MR
Preview of fuzz testing results in an MR.

GitLab will make fuzz testing part of our existing workflow
so users do not need to use an external tool or interface. Instead, users simply include
a CI job template to use the fuzz testing engines from Fuzzit and Peach Tech. Results will appear inline for developers, alongside the
other build and test outputs they use today.

What about open source?

Open source is near and dear to our hearts at GitLab. We recently moved several
features
to
our open source offering. We’ll continue supporting open source
with fuzz testing as well. We have published several of our fuzz testing
engines as open source, so they are accessible to any user and everyone can contribute. This will
include several of the language-specific coverage-guided fuzz testing engines
as well as Peach Tech Community Edition. In the future, we will consider what
new fuzz testing pieces we can open source to the community as we build new
capabilities for different use cases. One area we are considering is what we
can do as we eventually move into protocol fuzz testing. Watch this space!

When can I get it?

GitLab will release the minimal version of fuzz testing later this year
as part of GitLab Ultimate. This release will enable behavioral-guided fuzz testing of
web APIs that follow the OpenAPI specification standard. We will also be
enabling coverage-guided fuzz testing on apps written in a variety of languages,
starting with Go.

What’s next?

GitLab is excited to add fuzz testing to the already large suite of
application security scanners in GitLab’s Secure stage
and make it part of
the GitLab workflow that developers use already. This makes it easy to shift security
left and take advantage of the benefits of fuzz testing.

As we mature our fuzz testing offering, we will make
integrating fuzz testing results into new parts of the workflow a priority. So GitLab developers
can directly view fuzz testing results and fix any issues they find. We will also focus on enabling advanced
configuration options for users who want to customize their fuzz tests.
Finally, we will be expanding fuzz testing to address
additional use cases, beyond just web apps and APIs. You can read more about
our plans for maturing fuzz testing on our direction page.

Cover image by Ian Baldwin on Unsplash

We want to hear from you

Enjoyed reading this blog post or have questions or feedback? Share your thoughts by creating a new topic in the GitLab community forum. Share your feedback

Ready to get started?

See what your team could do with a unified DevSecOps Platform.

Get free trial

New to GitLab and not sure where to start?

Get started guide

Learn about what GitLab can do for your team

Talk to an expert