LOW 3.7

CVE-2026-53538: Python-Multipart Parser Differential & Form Field Smuggling Vulnerability

Python-Multipart versions before 0.0.30 contain a parser differential vulnerability in how they handle form-encoded data. The library treats semicolons (;) as field separators in form submissions, while modern standards—including web browsers and Python's built-in URL parser—only recognize ampersands (&) as separators. An attacker can exploit this mismatch to inject additional form fields that bypass security inspections performed by upstream components, such as web application firewalls or input validators. The attacker doesn't need special privileges or user interaction, though the attack requires specific conditions to trigger successfully.

Source data · NVD / CISA · public domain

CVSS
3.1 · 3.7 LOW · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
Weaknesses (CWE)
CWE-436, CWE-444
Affected products
1 configuration(s)
Published / Modified
2026-06-22 / 2026-06-26

NVD description (verbatim)

Python-Multipart is a streaming multipart parser for Python. Prior to 0.0.30, QuerystringParser treated ; as a field separator in application/x-www-form-urlencoded bodies, in addition to &. The WHATWG URL standard, modern browsers, and Python's urllib.parse (since the CVE-2021-23336 fix) treat only & as a separator. This creates a parser differential: the same bytes are tokenized into different fields than a WHATWG compliant intermediary would produce, allowing an attacker to smuggle extra form fields past an upstream body inspecting component. This vulnerability is fixed in 0.0.30.

1 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

QuerystringParser in Python-Multipart prior to version 0.0.30 implements non-standard tokenization of application/x-www-form-urlencoded request bodies. By treating both & and ; as field delimiters, the parser creates a canonical form that differs from WHATWG URL Standard-compliant parsing. An intermediary (WAF, API gateway, or request inspector) performing body validation against the standard will parse the same byte sequence into one set of fields, while Python-Multipart on the backend parses it into a different set. This parser confusion enables field smuggling: an attacker can craft a request where malicious fields hidden behind a semicolon-delimited structure evade inspection, then become visible to the downstream application. The vulnerability maps to CWE-436 (Untrusted Input During Startup) and CWE-444 (Inconsistent Interpretation of HTTP Requests).

Business impact

This vulnerability primarily threatens applications that rely on centralized request inspection (WAF rules, API gateway policies, or custom validators) to enforce business logic or security rules on form submissions. If an attacker can smuggle form fields past these controls, they may be able to modify application behavior in unintended ways—for example, bypassing authentication checks, escalating privileges, or manipulating application state. The risk is heightened in microservices architectures where an upstream gateway inspects traffic before routing to Python-based backend services. However, because exploitation requires specific parser differential conditions and the CVSS score is low (3.7), the business impact is typically containable with standard patching discipline.

Affected systems

Python-Multipart library versions prior to 0.0.30 are affected. The vulnerable component is QuerystringParser, which is used to handle form-encoded request bodies in Python web frameworks and applications that integrate this library. Any Python application using an affected version of python-multipart to parse form submissions is potentially at risk if it sits behind a standards-compliant inspection layer that does not recognize ; as a separator. Applications relying solely on Python-Multipart for parsing without intermediate inspection may see unexpected field presence but are not directly exploited by this vector.

Exploitability

Exploitation requires an attacker to craft a malicious form submission and have it processed by an affected instance of python-multipart that sits downstream of a WHATWG-compliant parser. The attack has a CVSS attack complexity of 'High,' meaning specific conditions must be met: the application must use both a standards-compliant upstream inspector and the vulnerable parser downstream, and the attacker must understand the inspection policy to craft a payload that bypasses it. No user interaction is required, and the attack is network-accessible. Real-world exploitation depends on the specific architecture and validation rules in place; script-based or automated exploitation is possible but not trivial.

Remediation

Upgrade Python-Multipart to version 0.0.30 or later. This version aligns QuerystringParser behavior with the WHATWG URL Standard, treating & as the only field separator. Verify the upgrade in your dependency management tool (pip, poetry, etc.) and test form submission handling in your application to ensure no regression. If immediate patching is not feasible, consider disabling semicolon-based field separation at the application layer or enforcing stricter request filtering upstream to reject suspicious semicolon patterns in form bodies.

Patch guidance

Update the python-multipart dependency to version 0.0.30 or later via your package manager. For pip users: pip install --upgrade python-multipart>=0.0.30. For poetry users: poetry update python-multipart. Verify the installed version with pip show python-multipart or poetry show python-multipart, confirming version 0.0.30 or higher. Restart your application to load the patched library. No configuration changes are required; the fix is internal to the parser behavior.

Detection guidance

Monitor application logs for unusual form submission patterns, particularly those containing semicolon-delimited field sequences in POST bodies. Web application firewalls can be configured to flag or block requests with suspicious semicolon usage in form-encoded bodies as a defense-in-depth measure. Conduct a code review to identify all uses of python-multipart within your codebase and verify version compliance. If you have request inspection logs from upstream gateways, compare the parsed fields against those from the Python application layer to detect parser differential conditions.

Why prioritize this

While the CVSS score is low (3.7) and the vulnerability requires specific architectural conditions to exploit, this issue should be prioritized for patching in environments where parser-based security controls are relied upon. Organizations using WAFs, API gateways, or centralized request validators in front of Python applications warrant timely remediation. The fix is straightforward and low-risk, making this an ideal candidate for standard patch cadence. Less critical for applications with direct parsing and minimal upstream inspection.

Risk score, explained

The CVSS 3.1 score of 3.7 (LOW severity) reflects limited scope and low impact: the vulnerability allows integrity compromise (field smuggling) with no confidentiality or availability impact. Attack complexity is high because the parser differential must exist in the application's infrastructure. The absence of authentication requirements and network accessibility prevent the score from being even lower. The risk is real but contingent on specific deployment patterns.

Frequently asked questions

Does this affect my application if I don't use a WAF or upstream inspector?

Your application may still parse form fields unexpectedly due to semicolon handling, but the primary security risk—bypassing inspection controls—does not apply. However, upgrading to 0.0.30 is still recommended to ensure standards-compliant parsing behavior.

Can I work around this without patching immediately?

Temporary mitigations include rejecting requests with semicolons in form bodies at the application layer, or configuring your WAF to normalize requests by converting semicolons to ampersands before they reach the backend. However, these are not substitutes for patching.

Is this vulnerability in CISA's known exploited vulnerabilities list?

No, this CVE is not listed in CISA's KEV catalog, indicating no confirmed in-the-wild exploitation. This does not eliminate the need to patch; it simply indicates current threat activity is low.

How does this relate to CVE-2021-23336?

CVE-2021-23336 was a similar parser differential issue in Python's urllib.parse that was fixed to align with WHATWG standards. Python-Multipart's vulnerability stems from not following the same alignment.

This analysis is based on the CVE record published as of June 2026 and the Python-Multipart upstream advisory. Version numbers, patch availability, and vendor guidance should be verified directly against the official Python-Multipart repository and security advisories. No exploit code or proof-of-concept is provided in this report. Organizations should conduct their own risk assessment based on their specific deployment architecture and threat model. SEC.co makes no warranty regarding the completeness or accuracy of this analysis for any particular environment. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).