CVE-2025-54121 json
Starlette has possible denial-of-service vector when parsing large files in multipart forms
published 2025-07-21 15 mo ago modified 2026-09-10 1 mo ago also EUVD-2025-22159 , GHSA-2c2j-9gv5-cj73 , PYSEC-2026-1941
- cvss
- 5.3
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.7%
- EPSS 0.7% chance of exploitation in 30 days, percentile 51%
- public exploits
- 0
- none known
Summary
Starlette is a lightweight ASGI (Asynchronous Server Gateway Interface) framework/toolkit, designed for building async web services in Python. In versions 0.47.1 and below, when parsing a multi-part form with large files (greater than the default max spool size) starlette will block the main thread to roll the file over to disk. This blocks the event thread which means the application can't accept new connections. The UploadFile code has a minor bug where instead of just checking for self._in_memory, the logic should also check if the additional bytes will cause a rollover. The vulnerability is fixed in version 0.47.2.
Patch / fix
- pypi starlette 0.47.2
- encode starlette 0.47.2
- kludex starlette 0.47.2
- starlette Debian 12 0.26.1-1+deb12u1
- starlette Debian 14, Debian 13 0.46.1-3
debian advisories DEBIAN-CVE-2025-54121
- python-starlette SLES for SAP applications 16.0, SLES 16.0 0.41.3-160000.3.1
- python-starlette openSUSE Leap 15.6 0.35.1-150600.3.6.1
suse advisories SUSE-SU-2026:22151-1SUSE-SU-2025:02544-1
- python-starlette openSUSE Leap 16.0 0.41.3-160000.3.1
- python-starlette openSUSE Tumbleweed 0.47.2-1.1
opensuse advisories openSUSE-SU-2026:20975-1openSUSE-SU-2025:15381-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2025-54121 updated cvss 5.3
starlette: Starlette denial-of-service
-
Red Hat OpenShift Lightspeed openshift-lightspeed/lightspeed-service-api-rhel9 Red Hat AI Inference Server rhaiis/vllm-cuda-rhel9, rhaiis/vllm-rocm-rhel9 Red Hat Ansible Automation Platform 2 ansible-automation-platform-24/de-minimal-rhel8, ansible-automation-platform-24/de-minimal-rhel9, ansible-automation-platform-25/de-minimal-rhel8, ansible-automation-platform-25/de-minimal-rhel9, ansible-automation-platform-24/ee-supported-rhel8, ansible-automation-platform-24/ee-supported-rhel9, +5 more Red Hat Enterprise Linux AI (RHEL AI) rhelai1/gemma-2-9b-it, rhelai1/bootc-amd-rhel9, rhelai1/bootc-intel-rhel9, rhelai1/gemma-2-9b-it-fp8, rhelai1/skills-adapter-v3, rhelai1/bootc-nvidia-rhel9, +24 more Red Hat OpenShift AI (RHOAI) rhoai/odh-rhel8-operator, rhoai/odh-dashboard-rhel8, rhoai/odh-modelmesh-rhel8, rhoai/odh-mm-rest-proxy-rhel8, rhoai/odh-mm-rest-proxy-rhel9, rhoai/odh-feast-operator-rhel9, +44 more Red Hat Satellite 6 satellite/iop-advisor-engine-rhel9affected: workaround, no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 15 mo ago
Exploit prediction
0.66% chance of exploitation in the next 30 days, higher than 51% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| GitHub | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| OSV | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | starlette | <0.47.2 |
0.47.2 |
Affected products
- encode starlette
Classification
- Weakness
-
- CWE-770 Allocation of Resources Without Limits or Throttling
References
-
github.com
/encode/starlette/commit/9f7ec2eb512fcc3fe90b43cb9dd9e1d08696bec1
web, patch
-
github.com
/encode/starlette/security/advisories/GHSA-2c2j-9gv5-cj73
web
-
github.com
/encode/starlette/blob/fa5355442753f794965ae1af0f87f9fec1b9a3de/starlette/datastructures.py#L436C5-L447C14
web
-
github.com
/encode/starlette/discussions/2927#discussioncomment-13721403
web
-
nvd.nist.gov
/vuln/detail/CVE-2025-54121
advisory
-
github.com
/encode/starlette
package
-
pypi.org
/project/starlette
package
-
github.com
/advisories/GHSA-2c2j-9gv5-cj73
advisory
Sources
- CVE List CVE-2025-54121
- GitHub Advisory GHSA-2c2j-9gv5-cj73
- NVD CVE-2025-54121
- OSV PYSEC-2026-1941
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.