Description
`python-multipart` is a streaming multipart parser for Python. When using form data, `python-multipart` uses a Regular Expression to parse the HTTP `Content-Type` header, including options. An attacker could send a custom-made `Content-Type` option that is very difficult for the RegEx to process, consuming CPU resources and stalling indefinitely (minutes or more) while holding the main event loop. This means that process can't handle any more requests, leading to regular expression denial of service. This vulnerability has been patched in version 0.0.7.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Kludex python-multipart
Default version status: unaffected
0 to < 0.0.7affected
tiangolo fastapi
Default version status: unaffected
0 to < 0.109.1affected
encode starlette
Default version status: unaffected
0 to < 0.36.2affected
References
- https://github.com/Kludex/python-multipart/security/advisories/GHSA-2jv5-9r88-3w3p ↗
- https://github.com/Kludex/python-multipart/commit/20f0ef6b4e4caf7d69a667c54dff57fe467109a4 ↗
- https://github.com/tiangolo/fastapi/security/advisories/GHSA-qf9m-vfgh-m389 ↗
- https://github.com/encode/starlette/security/advisories/GHSA-93gm-qmq6-w238 ↗
- https://github.com/andrew-d/python-multipart/blob/d3d16dae4b061c34fe9d3c9081d9800c49fc1f7a/multipart/multipart.py#L72-L74 ↗
- https://github.com/encode/starlette/commit/13e5c26a27f4903924624736abd6131b2da80cc5 ↗
- https://github.com/tiangolo/fastapi/commit/9d34ad0ee8a0dfbbcce06f76c2d5d851085024fc ↗
- https://github.com/tiangolo/fastapi/releases/tag/0.109.1 ↗