CVE-2026-54283: CWE-770: Allocation of Resources Without Limits or Throttling in Kludex starlette
### Summary `request.form()` accepts `max_fields` and `max_part_size` to bound resource consumption while parsing form data. These limits are enforced for `multipart/form-data`, but silently ignored for `application/x-www-form-urlencoded`. An unauthenticated attacker can therefore send a urlencoded body with an arbitrarily large number of fields or an arbitrarily large field, even when the application configured limits it believed would apply. ### Details `request.form()` dispatches to a different parser depending on the `Content-Type`. For `multipart/form-data` the `max_files`, `max_fields`, and `max_part_size` limits are forwarded to the parser, but for `application/x-www-form-urlencoded` the parser is constructed without them. It has no `max_fields` or `max_part_size` parameter to receive them, and it appends every field with no count check and accumulates each field's name and value with no size check. The configured limits are therefore both unreachable and unenforced for url-encoded bodies. Because the url-encoded parser does its work synchronously between stream reads, the two attack shapes have different effects: - **Field count** drives CPU and event-loop blocking. A body of ~1,000,000 fields (a sub-10MB payload such as `f0=v&f1=v&...`) blocks the worker's event loop for several seconds while parsing, during which the worker serves no other request. - **Field size** drives memory. A single large field value (e.g. a 50MB value) is buffered in full to build the `FormData`, forcing memory allocation proportional to the request body. The equivalent `multipart/form-data` request is correctly rejected with `400 Too many fields` / `400 Field exceeded maximum size`. ### Impact This Denial of service (DoS) vulnerability affects all applications built with Starlette (or FastAPI) that call `request.form()` on `application/x-www-form-urlencoded` requests. A single request with a very large number of fields blocks the event loop for several seconds, and a single request with a very large field forces unbounded memory allocation; in either case, parallel requests can render the service unusable. A reverse proxy that enforces a request body size limit reduces but does not eliminate the exposure, since a sub-10MB body is already enough to block the event loop. ### Mitigation Upgrade to a patched version, which forwards `max_fields` and `max_part_size` to the url-encoded parser and enforces them while parsing, raising before the oversized field or excess fields are accumulated. The defaults match `multipart/form-data` (`max_fields=1000`, `max_part_size=1MB`) and can be customized via `request.form(max_fields=..., max_part_size=...)`.
AI Analysis
Technical Summary
Starlette, a lightweight ASGI framework, enforces limits on multipart/form-data requests via max_fields and max_part_size parameters to control resource consumption. However, from versions 0.4.1 up to but not including 1.3.1, these limits are silently ignored for application/x-www-form-urlencoded content types. This allows an unauthenticated attacker to send urlencoded requests with unlimited fields or field sizes, potentially causing resource exhaustion. The vulnerability is identified as CWE-770 (Allocation of Resources Without Limits or Throttling) and is fixed in version 1.3.1.
Potential Impact
An attacker can cause denial of service by sending large or numerous urlencoded form fields that bypass configured limits, leading to resource exhaustion on the server. There is no confidentiality or integrity impact reported. The CVSS score of 7.5 reflects a high severity denial of service vulnerability exploitable remotely without authentication.
Mitigation Recommendations
Upgrade Starlette to version 1.3.1 or later, where this issue is fixed. Patch status is not explicitly stated but the description confirms the fix in 1.3.1. Until then, applications should be aware that configured limits do not apply to application/x-www-form-urlencoded requests and may consider additional application-level validation or filtering.
CVE-2026-54283: CWE-770: Allocation of Resources Without Limits or Throttling in Kludex starlette
Description
### Summary `request.form()` accepts `max_fields` and `max_part_size` to bound resource consumption while parsing form data. These limits are enforced for `multipart/form-data`, but silently ignored for `application/x-www-form-urlencoded`. An unauthenticated attacker can therefore send a urlencoded body with an arbitrarily large number of fields or an arbitrarily large field, even when the application configured limits it believed would apply. ### Details `request.form()` dispatches to a different parser depending on the `Content-Type`. For `multipart/form-data` the `max_files`, `max_fields`, and `max_part_size` limits are forwarded to the parser, but for `application/x-www-form-urlencoded` the parser is constructed without them. It has no `max_fields` or `max_part_size` parameter to receive them, and it appends every field with no count check and accumulates each field's name and value with no size check. The configured limits are therefore both unreachable and unenforced for url-encoded bodies. Because the url-encoded parser does its work synchronously between stream reads, the two attack shapes have different effects: - **Field count** drives CPU and event-loop blocking. A body of ~1,000,000 fields (a sub-10MB payload such as `f0=v&f1=v&...`) blocks the worker's event loop for several seconds while parsing, during which the worker serves no other request. - **Field size** drives memory. A single large field value (e.g. a 50MB value) is buffered in full to build the `FormData`, forcing memory allocation proportional to the request body. The equivalent `multipart/form-data` request is correctly rejected with `400 Too many fields` / `400 Field exceeded maximum size`. ### Impact This Denial of service (DoS) vulnerability affects all applications built with Starlette (or FastAPI) that call `request.form()` on `application/x-www-form-urlencoded` requests. A single request with a very large number of fields blocks the event loop for several seconds, and a single request with a very large field forces unbounded memory allocation; in either case, parallel requests can render the service unusable. A reverse proxy that enforces a request body size limit reduces but does not eliminate the exposure, since a sub-10MB body is already enough to block the event loop. ### Mitigation Upgrade to a patched version, which forwards `max_fields` and `max_part_size` to the url-encoded parser and enforces them while parsing, raising before the oversized field or excess fields are accumulated. The defaults match `multipart/form-data` (`max_fields=1000`, `max_part_size=1MB`) and can be customized via `request.form(max_fields=..., max_part_size=...)`.
CVSS v3.1
Score 7.5high
Affected software
Kludex
starlette
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
Starlette, a lightweight ASGI framework, enforces limits on multipart/form-data requests via max_fields and max_part_size parameters to control resource consumption. However, from versions 0.4.1 up to but not including 1.3.1, these limits are silently ignored for application/x-www-form-urlencoded content types. This allows an unauthenticated attacker to send urlencoded requests with unlimited fields or field sizes, potentially causing resource exhaustion. The vulnerability is identified as CWE-770 (Allocation of Resources Without Limits or Throttling) and is fixed in version 1.3.1.
Potential Impact
An attacker can cause denial of service by sending large or numerous urlencoded form fields that bypass configured limits, leading to resource exhaustion on the server. There is no confidentiality or integrity impact reported. The CVSS score of 7.5 reflects a high severity denial of service vulnerability exploitable remotely without authentication.
Mitigation Recommendations
Upgrade Starlette to version 1.3.1 or later, where this issue is fixed. Patch status is not explicitly stated but the description confirms the fix in 1.3.1. Until then, applications should be aware that configured limits do not apply to application/x-www-form-urlencoded requests and may consider additional application-level validation or filtering.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2026-06-12T17:46:37.292Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 6a39735ceed863c81e39629e
Added to database: 06/22/2026, 17:39:40 UTC
Last enriched: 06/29/2026, 21:51:49 UTC
Last updated: 09/21/2026, 22:01:35 UTC
Views: 136
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
External Links
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.