← Latest papers
💻 computer science

WuppieFuzz: Coverage-Guided, Stateful REST API Fuzzing

This paper introduces WuppieFuzz, an open-source, coverage-guided, stateful REST API fuzzer built on LibAFL that automates harness creation and utilizes OpenAPI specifications to generate and mutate request sequences for effective vulnerability discovery.

Original authors: Thomas Rooijakkers, Anne Nijsten, Cristian Daniele, Erieke Weitenberg, Ringo Groenewegen, Arthur Melissen

Published 2026-03-26
📖 5 min read🧠 Deep dive

Original authors: Thomas Rooijakkers, Anne Nijsten, Cristian Daniele, Erieke Weitenberg, Ringo Groenewegen, Arthur Melissen

Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer

Imagine you own a massive, high-tech vending machine (the REST API) that dispenses everything from coffee to car keys. It's connected to the internet, so anyone can try to buy something. But what if someone tries to buy a car key by inserting a banana? Or what if they press the buttons in a weird order to trick the machine into spitting out free items?

This is exactly the kind of problem WuppieFuzz solves. It's a new, open-source tool designed to be a "super-taster" for these digital vending machines, finding bugs and security holes before the bad guys do.

Here is how it works, explained through simple analogies:

1. The Problem: Too Many Buttons, Too Many Tricks

Modern software talks to other software using "APIs." Think of an API as a menu of buttons on a vending machine.

  • The Challenge: There are thousands of buttons (endpoints). If you try to test them all by hand, you'd need a team of people working for years.
  • The Old Way: "Fuzzing" is like throwing random objects at the machine to see what breaks. But if you just throw random junk, you might miss the specific combination of buttons that causes the machine to explode.

2. The Solution: WuppieFuzz (The Smart Tester)

WuppieFuzz is like a robotic intern that is incredibly smart, fast, and never gets tired. It was built using a powerful engine called LibAFL (think of this as the robot's brain and muscles).

It has three main "modes" of operation, depending on how much access you have to the machine's internal wiring:

  • Black-Box Mode (The Blindfolded Tester): The robot stands outside the machine. It can only see what comes out (the response) and how long it takes. It doesn't know how the gears work inside.
  • White-Box Mode (The X-Ray Vision): The robot has the blueprints and can see the gears turning inside. It knows exactly which wire is being touched when a button is pressed. This helps it find hidden problems much faster.
  • Grey-Box Mode: A mix of both. It has some inside info but not the full blueprint.

3. How It Learns: The "Recipe Book" (OpenAPI)

One of the hardest parts of testing is knowing what the machine expects. If you try to put a banana in a coffee slot, the machine might just reject it immediately, and the robot learns nothing.

WuppieFuzz reads a Recipe Book (called an OpenAPI Specification).

  • The Magic: Instead of guessing, the robot reads the book to understand the rules. It learns, "Oh, to buy a coffee, I first need a cup, and to get a cup, I need to pay first."
  • Building the Seed: It automatically creates a list of "perfect" test runs (called a Seed Corpus) that follow the rules. It's like the robot practicing the perfect dance steps before trying to trip the machine up.

4. The Dance: Stateful Fuzzing

This is where WuppieFuzz gets really clever. Many bugs only happen if you do things in a specific order.

  • Example: You can't delete a user account if you haven't created one first.
  • The Analogy: Imagine a game of "Simon Says." If you press "Delete" before "Create," nothing happens. But if you press "Create," then "Update," then "Delete," the machine might crash.
  • WuppieFuzz remembers the sequence. It creates a chain of requests (A -> B -> C) and then starts tweaking them. Maybe it changes the "Create" step to be slightly wrong, or swaps the order. It's like a child playing with a Rubik's cube, twisting one side to see if the whole thing falls apart.

5. The Feedback Loop: "Did I Hit a New Spot?"

The robot is guided by a metric called Coverage.

  • The Analogy: Imagine the vending machine is a dark room filled with thousands of light switches. The robot's goal is to flip as many switches as possible to see what lights up.
  • How it works: Every time the robot sends a request, it asks, "Did I turn on a new light?"
    • If Yes: "Great! That path is interesting. Let's try to break it more!"
    • If No: "Okay, we've been here before. Let's try a different path."
  • This is why White-Box mode is faster: The robot can see the lights turn on instantly. In Black-Box mode, it has to guess if it found a new light by looking at the output, which is slower.

6. The Report Card

When the robot finds a bug (like the machine giving free car keys), it doesn't just say "It broke." It writes a detailed report:

  • The "What": Exactly which buttons were pressed.
  • The "How": The exact sequence of events.
  • The "Why": It even draws a map (a graph) showing how the buttons are connected, so human developers can look at the map and say, "Ah, I see the problem! We forgot to check if the user was logged in before deleting."

Why Does This Matter?

In the past, finding these bugs required a human expert to spend weeks manually testing. WuppieFuzz automates this, turning a months-long job into a few hours. It helps companies patch security holes before hackers find them, keeping our digital "vending machines" safe and secure.

In short: WuppieFuzz is a tireless, intelligent robot that reads the manual, learns the dance steps, and then starts twisting the moves until it finds the one that makes the software trip, fall, and reveal its secrets.

Drowning in papers in your field?

Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.

Try Digest →