python-multipart, Quadratic Complexity Denial of Service, CVE-2026-53539 (High) -DC-Jun2026-444

Listen to this Post

Intro: How CVE-2026-53539 Works

The vulnerability resides in the `QuerystringParser` within python_multipart/multipart.py, which processes `application/x-www-form-urlencoded` POST data. The issue arises from an inefficient algorithm used to locate field separators.
To parse each field, the parser employs a two-step lookup:
1. It first scans the entire remaining buffer for an ampersand (&).
2. If no `&` is found, it then scans for a semicolon (;) to find the field boundary.
This approach is catastrophically inefficient for request bodies that use the semicolon as a separator. For a request containing a payload like `a;a;a;…` (repeating `a;` 500,000 times, totaling 1 MB), the payload contains no `&` characters.
Consequently, for every single field in the payload, the parser performs a full scan of the remaining data searching for &. This results in `O(B²)` byte comparisons, where `B` is the buffer size. In the 1 MB example, the parser performs approximately `10¹¹` comparisons, leading to several seconds of CPU consumption for a single HTTP request.
This issue is particularly dangerous because the parser is synchronous. A single attacker-controlled request can block an entire worker process for seconds, making it unavailable to serve legitimate traffic. Frameworks like Starlette and FastAPI, which call request.form(), are directly affected.

DailyCVE Form:

Platform: `python-multipart`
Version: `<0.0.30` Vulnerability : `CPU-DoS` Severity: `High` date: `2026-06-05`

Prediction: `2026-05-31`

What Undercode Say:

Simulate an attack by sending a small, malicious request.
This creates a 1MB payload of "a;aaaaaa...".
Run this against a vulnerable server.
for i in {1..500000}; do echo -n "a;"; done > payload.txt
curl -X POST https://victim.com/login -H "Content-Type: application/x-www-form-urlencoded" --data-binary "@payload.txt"
Monitor server CPU usage while the request is being processed.
top -p $(pgrep -f "uvicorn|gunicorn")

Exploit:

An attacker can simply send an HTTP POST request with a `Content-Type: application/x-www-form-urlencoded` header and a body consisting of repeated `a;` patterns. As the server processes the semicolons, the `O(B²)` complexity will cause high CPU usage, effectively creating a Denial of Service (DoS).

Protection:

Upgrade to `python-multipart` version 0.0.30 or later. This version changes the parser to treat only `&` as a field separator, aligning with the WHATWG URL standard. Consequently, `;` is no longer recognized as a separator and is parsed as ordinary field data, making the parsing algorithm run in linear `O(B)` time.

Impact:

A successful exploit leads to uncontrolled CPU consumption, resulting in a Denial of Service (DoS). Because the parsing is synchronous, a single malicious request can block a worker process for seconds, halting all other request processing on that worker. Sustained concurrent attacks can keep all workers busy, rendering the service unavailable to legitimate users.

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top