← Latest papers
💻 computer science

WAFFLED: Exploiting Parsing Discrepancies to Bypass Web Application Firewalls

This paper introduces "WAFFLED," a novel approach that exploits parsing discrepancies in HTTP request handling to bypass five major Web Application Firewalls, validating the widespread nature of the vulnerability through a large-scale study and proposing "HTTP-Normalizer" as an effective mitigation tool.

Original authors: Seyed Ali Akhavani, Bahruz Jabiyev, Ben Kallus, Cem Topcuoglu, Sergey Bratus, Engin Kirda

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

Original authors: Seyed Ali Akhavani, Bahruz Jabiyev, Ben Kallus, Cem Topcuoglu, Sergey Bratus, Engin Kirda

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 a high-security bank vault (the Web Application) guarded by a very strict, rule-following security guard at the door (the Web Application Firewall, or WAF). The guard's job is to check everyone's ID and luggage. If they see a weapon (a malicious attack like SQL injection or XSS), they stop the person immediately.

For years, hackers have tried to trick this guard by hiding weapons inside innocent-looking boxes or disguising them as harmless items. The guard has gotten pretty good at spotting these tricks.

But the researchers in this paper, WAFFLED, discovered a new, sneaky way to get past the guard. They didn't try to hide the weapon; instead, they exploited a communication breakdown between the guard and the vault manager.

The Core Problem: "He Said, She Said"

Imagine the guard and the vault manager speak slightly different dialects of the same language.

  • The Guard (WAF) reads a package and thinks, "This looks safe. The label says 'Flowers'."
  • The Manager (Web Server) reads the same package and thinks, "Wait, if I ignore that weird smudge on the label, this is actually a bomb!"

The guard lets the package through because he thinks it's safe. The manager opens it and gets blown up because he interprets the instructions differently.

In the digital world, this happens because of Parsing Discrepancies. When a computer receives a complex data package (like a form with files, XML, or JSON), different software (the WAF vs. the Web Server) can interpret the "grammar" of that data slightly differently.

The "Waffled" Strategy: The Confusing Menu

The researchers tested this on five major security guards (Cloudflare, AWS, Azure, Google Cloud Armor, and ModSecurity) and seven different vault managers (popular web frameworks like Flask, Spring Boot, Laravel).

They focused on three common types of "packages":

  1. Multipart/Form-Data: Like a lunchbox with multiple compartments (files, text, etc.).
  2. XML: A structured document with tags, like a recipe book.
  3. JSON: A simple list of data pairs, like a shopping list.

The Trick:
Instead of changing the weapon, they changed the packaging instructions in tiny, confusing ways that only the guard would misunderstand.

  • The "Boundary" Blunder: In a multipart form, items are separated by "boundaries" (like dividers in a lunchbox). The researchers added a fake divider or a weird character (like a hidden space or a zero) that the guard ignored, thinking the lunchbox was empty or safe. But the manager saw the hidden divider and opened the compartment containing the weapon.
  • The "Capitalization" Confusion: They changed a header from Content-Type to Content-type or added a tab character. The guard's rulebook said, "If it's not exactly 'Content-Type', ignore it." The manager's rulebook said, "Be flexible, it's still 'Content-Type'."
  • The "Line Break" Lie: They removed a line break that the guard expected to see to know where the instructions ended. The guard thought the instructions were still safe text; the manager realized the instructions had actually started earlier and contained a command to execute the attack.

The Results: A Massive Breach

The results were shocking.

  • They found 1,207 different ways to trick these guards.
  • They tested this on 100 real-world websites (like "forgot password" pages).
  • 90% of the websites accepted the confusing packaging. If a hacker sent a "multipart" form to a site that usually expects a "standard" form, the site accepted it anyway. This means the researchers' tricks work almost everywhere.

The Solution: The "Universal Translator"

The researchers didn't just point out the problem; they built a fix called HTTP-Normalizer.

Think of this as a Universal Translator or a Standardized Packaging Machine placed right before the guard.

  1. The Machine takes any incoming package.
  2. It strictly follows the official "Rulebook" (RFC standards) to re-pack everything perfectly.
  3. It removes all the weird smudges, extra spaces, and confusing instructions.
  4. It hands a perfectly clean, standard package to the guard.

Now, the guard and the manager are looking at the exact same package. If the package contains a weapon, the guard sees it and stops it. If it's safe, it goes through. The "He Said, She Said" confusion is gone.

Why This Matters

  • It's not about hiding: You don't need to be a genius coder to hide a weapon anymore. You just need to know how to confuse the guard's grammar.
  • It's everywhere: Since 90% of websites accept these confusing formats, this vulnerability affects almost the entire internet.
  • The Fix is simple: If security companies (WAFs) and website developers just agree to follow the official grammar rules strictly, these attacks disappear.

In short, the paper shows that security guards are often too flexible with their rules, while the people inside the building are too flexible with theirs. By forcing everyone to speak the exact same, strict language, we can stop these attacks dead in their tracks.

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 →