Denial of service (DoS) via deformation `multipart/form-data` boundary
High severity
GitHub Reviewed
Published
Nov 30, 2024
in
Kludex/python-multipart
•
Updated Dec 2, 2024
Description
Published by the National Vulnerability Database
Dec 2, 2024
Published to the GitHub Advisory Database
Dec 2, 2024
Reviewed
Dec 2, 2024
Last updated
Dec 2, 2024
Summary
When parsing form data,
python-multipart
skips line breaks (CR\r
or LF\n
) in front of the first boundary and any tailing bytes after the last boundary. This happens one byte at a time and emits a log event each time, which may cause excessive logging for certain inputs.An attacker could abuse this by sending a malicious request with lots of data before the first or after the last boundary, causing high CPU load and stalling the processing thread for a significant amount of time. In case of ASGI application, this could stall the event loop and prevent other requests from being processed, resulting in a denial of service (DoS).
Impact
Applications that use
python-multipart
to parse form data (or use frameworks that do so) are affected.Original Report
This security issue was reported by:
python-multipart
maintainer on October 3 by @mnqaziReferences