Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft ASGI POST request
-
DeliveryOmit or understate Content-Length header
-
ExploitStream large multipart file body
-
ExecutionBypass FILE_UPLOAD_MAX_MEMORY_SIZE check
-
PersistExhaust server memory
-
ImpactTrigger service degradation
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Length parameter validation
|
| Exploitation Conditions | Exploitation requires: (1) a Django application using ASGI mode (not WSGI), (2) a publicly accessible or network-accessible file upload endpoint, (3) no Content-Length validation enforced by an upstream reverse proxy or web server, and (4) FILE_UPLOAD_MAX_MEMORY_SIZE configured in Django (the default is 2.5 MB). The vulnerability does NOT require authentication (PR:N) or user interaction (UI:N). It is limited to ASGI deployments; WSGI-based Django applications are unaffected because WSGI servers typically enforce upload limits before reaching the Django application layer. The attack is further constrained by available server memory and network bandwidth, so instances with small RAM pools may hit system limits before Django's internal checks. |
| Impact | CVSS 6.3 with AV:N/AC:L indicates network-accessible exploitation with low complexity. However, the CVSS vector includes AT:P (attack time, possibly in attack tool required) and targets availability only (VA:L, scope=N), indicating medium rather than critical severity. The vulnerability is not confirmed actively exploited (no KEV listing in provided data), but the low attack complexity and lack of authentication requirements (PR:N, UI:N) mean any remote actor can probe and exploit affected instances. The real-world risk depends heavily on deployment: Django instances behind load balancers or proxies that enforce Content-Length validation are protected; instances directly exposed to untrusted networks without such protections face denial-of-service risk. The vulnerability is not a code execution or data breach vector but a resource exhaustion attack surface. Given that Django's own documentation recommends web-server-level upload limits, many deployments may already have mitigations in place, reducing practical impact. |
| Exploit ScenarioDerived | An attacker sends an ASGI POST request to a Django file upload endpoint (e.g., a form submission handler) with a Content-Length header set to 100 bytes but a multipart form body containing 100 MB of data. Django's upload handler reads the body into memory without validating that it exceeds FILE_UPLOAD_MAX_MEMORY_SIZE, consuming gigabytes of RAM. If the attacker repeats this across multiple concurrent connections, the application server exhausts available memory and becomes unresponsive, achieving denial of service. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 05, 2026
Django 6.0 before 6.0.5 and 5.2 before 5.2.14 allow remote attackers to bypass the FILE_UPLOAD_MAX_MEMORY_SIZE limit by submitting ASGI requests with missing or understated Content-Length headers, potentially loading large files into memory and causing denial of service through resource exhaustion. No active exploitation confirmed, but the vulnerability requires only network access and no authentication, making it trivially exploitable once the bypass is understood.
RemediationAI
Upgrade Django to version 6.0.5 or later for Django 6.0 users, or 5.2.14 or later for Django 5.2 users. Apply the security releases from the Django project's May 2026 security release announcement. As a compensating control, configure file upload limits at the web server layer (nginx, Apache, or equivalent), independent of Django's FILE_UPLOAD_MAX_MEMORY_SIZE setting-this is Django's recommended practice and will prevent exploitation even on unpatched or unsupported versions. Additionally, deploy a reverse proxy or load balancer that validates and enforces Content-Length constraints before requests reach the Django application, ensuring malformed or missing headers trigger rejection rather than processing. Monitor application memory usage and implement per-request memory quotas to detect and halt anomalously large uploads in real time.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Django's file upload handling in ASGI mode relies on the Content-Length header to enforce the FILE_UPLOAD_MAX_MEMORY_SIZE setting, which limits in-memory file storage to prevent memory exhaustion attacks. CWE-130 (Improper Handling of Length Parameters) identifies the root cause: the framework fails to validate or enforce upload size limits when the Content-Length header is absent, malformed, or intentionally understated by a client. This affects ASGI deployments specifically, as the ASGI specification requires servers to parse headers from incoming requests. When Content-Length is missing or incorrect, Django does not fall back to an alternative size-checking mechanism, allowing attackers to stream arbitrarily large payloads into memory buffers without triggering the intended protective limit.
Know when Django gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Primary rating from Vendor (DSF).
CVSS VectorVendor: DSF
Lifecycle Timeline
1DescriptionCVE.org
An issue was discovered in 6.0 before 6.0.5 and 5.2 before 5.2.14. ASGI requests with a missing or understated Content-Length header can bypass the FILE_UPLOAD_MAX_MEMORY_SIZE limit, potentially loading large files into memory and causing service degradation.
As a reminder, Django expects a limit to be configured at the web server level rather than solely relying on FILE_UPLOAD_MAX_MEMORY_SIZE. Earlier, unsupported Django series (such as 5.0.x, 4.1.x, and 3.2.x) were not evaluated and may also be affected. Django would like to thank Kyle Agronick for reporting this issue.
Blast Radius
ecosystem impact- 12 pypi packages depend on django (12 direct, 0 indirect)
Ecosystem-wide dependent count for version 5.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
The package python/cpython from 0 and before 3.6.13, from 3.7.0 and before 3.7.10, from 3.8.0 and before 3.8.8, from 3.9
In Django 1.10.x before 1.10.8 and 1.11.x before 1.11.5, HTML autoescaping was disabled in a portion of the template for
An issue was discovered in Django 3.2 before 3.2.14 and 4.0 before 4.0.6. Rated critical severity (CVSS 9.8), this vulne
Django 3.1.x before 3.1.13 and 3.2.x before 3.2.5 allows QuerySet.order_by SQL injection if order_by is untrusted input
Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. Rated critical severity (CVSS 9.8
An authentication/authorization bypass in the djust Python live-view framework (versions prior to 1.0.7) lets unauthenti
Unauthenticated arbitrary Python module import in djust before 1.0.7 lets any client that can reach the WebSocket or SSE
Django 1.11 before 1.11.29, 2.2 before 2.2.11, and 3.0 before 3.0.4 allows SQL Injection if untrusted data is used as a
Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/j
Forged content modification in django-page-cms through 2.0.13 lets unauthenticated remote attackers exploit five CSRF-ex
Cross-site request forgery in djust's Server-Sent-Events transport affects all versions prior to 1.0.7 and allows a cros
Unauthenticated remote attackers can read live Django view and session state and invoke server-side handlers through dju
Same technique Authentication Bypass
View allVendor StatusVendor
SUSE
Severity: Medium| Product | Status |
|---|---|
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Fixed |
| openSUSE Leap 16.0 | Fixed |
| openSUSE Tumbleweed | Fixed |
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Fixed |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Fixed |
| openSUSE Leap 15.6 | Fixed |
EUVD-2026-27381
GHSA-w26r-rmm8-9c29
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB