Executive brief
A vulnerability in the python-multipart library, commonly used by web frameworks like FastAPI and Starlette, allows attackers to crash or slow down web services. By sending a specially crafted web form, an attacker can force the server to spend excessive amounts of processing power on a single request. This can lead to a denial-of-service (DoS) condition where the server becomes unresponsive to legitimate users.
Technical details
The QuerystringParser in python-multipart (prior to version 0.0.30) implements an inefficient two-step lookup for field separators when parsing 'application/x-www-form-urlencoded' bodies. It first scans the entire remaining buffer for '&' before falling back to ';'. If a body uses ';' as a separator and contains no '&', the parser performs a full failed scan of the remaining buffer for every field iteration, resulting in O(B^2) complexity. A remote, unauthenticated attacker can send a small body (e.g., "a;a;a;...") to trigger high CPU consumption, potentially exhausting worker processes in synchronous environments like FastAPI or Starlette. The issue is resolved in version 0.0.30 by adopting a single bounded scan that only recognizes '&' as a separator.
Affected products
- Kludex python-multipart < 0.0.30
Timeline
- 2026-06-04: advisory: GitHub advisory published by maintainer
- 2026-06-22: disclosed: CVE published to NVD