CVE-2026-53538
Full vulnerability record from the local CVENow database.
Description
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.
Severity
LOW
CVSS score
3.7
(v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-06-22 18:16:44.223000
Last modified
2026-10-25 23:10:00.167000
View original CVE JSON
{
"id": "CVE-2026-53538",
"sourceIdentifier": "[email protected]",
"published": "2026-06-22T18:16:44.223",
"lastModified": "2026-10-25T23:10:00.167",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "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."
},
{
"lang": "es",
"value": "Python-Multipart es un analizador multipart de streaming para Python. Antes de la versión 0.0.30, QuerystringParser trataba el ; como un separador de campos en cuerpos application/x-www-form-urlencoded, además del &. El estándar de URL de WHATWG, los navegadores modernos y urllib.parse de Python (desde la corrección de CVE-2021-23336) tratan solo el & como un separador. Esto crea un diferencial de analizador: los mismos bytes son tokenizados en campos diferentes de los que produciría un intermediario compatible con WHATWG, permitiendo a un atacante introducir de contrabando campos de formulario adicionales más allá de un componente de inspección de cuerpo ascendente. Esta vulnerabilidad está corregida en la versión 0.0.30."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "Kludex",
"product": "python-multipart",
"versions": [
{
"version": "< 0.0.30",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N",
"baseScore": 3.7,
"baseSeverity": "LOW",
"attackVector": "NETWORK",
"attackComplexity": "HIGH",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 2.2,
"impactScore": 1.4
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-06-23T14:49:11.715345Z",
"id": "CVE-2026-53538",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-436"
},
{
"lang": "en",
"value": "CWE-444"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:fastapiexpert:python-multipart:*:*:*:*:*:python:*:*",
"versionEndExcluding": "0.0.30",
"matchCriteriaId": "381A8F1D-278D-409F-974A-898BE65DB20C"
}
]
}
]
}
],
"references": [
{
"url": "https://github.com/Kludex/python-multipart/security/advisories/GHSA-6jv3-5f52-599m",
"source": "[email protected]",
"tags": [
"Vendor Advisory"
]
}
]
}