Skip to main content

Django REST Framework EUVDEUVD-2026-56887

| CVE-2026-73228 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-08-11 GitHub_M GHSA-2m8g-3cmr-wg3w
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send oversized POST body to DRF endpoint
  2. Delivery
    Bypass DATA_UPLOAD_MAX_MEMORY_SIZE guard in Request._parse()
  3. Exploit
    Force unbounded memory allocation per request
  4. Execution
    Repeat at volume to exhaust server resources
  5. Impact
    Degrade or deny service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

No special conditions or non-default configuration are required beyond a network-accessible DRF endpoint that accepts POST requests with application/json or application/x-www-form-urlencoded content types - both of which are DRF defaults. Exploitation is fully unauthenticated (CVSS PR:N). Limiting factors include: any upstream reverse proxy or WAF that enforces a global request body size limit would constrain (but not fully prevent) impact; Django's DATA_UPLOAD_MAX_MEMORY_SIZE setting only helps once the patch is applied, as the pre-patch code bypasses it; and the impact is limited to availability (no confidentiality or integrity impact per CVSS C:N/I:N). MultiPartParser-based endpoints and endpoints using custom parsers are NOT affected by this specific bypass.

Impact

The CVSS vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) accurately characterizes this as a low-complexity, network-reachable, unauthenticated availability issue. The low Availability impact score reflects partial, non-persistent disruption rather than full service crash. No EPSS data was provided in the intelligence, and the vulnerability is not listed in the CISA KEV catalog, indicating no confirmed mass or targeted exploitation. The absence of a POC in the provided data further reduces near-term risk. However, the attack surface is broad: any DRF endpoint accepting JSON or URL-encoded POST bodies is vulnerable by default, without any special configuration required. Real-world impact depends on server resource limits, request rate, and whether upstream infrastructure (WAFs, reverse proxies, or load balancers) enforces body-size limits independently. SSVC signals point to a Defer/Scheduled patch posture for most operators: exploitation is not confirmed, technical impact is limited to availability, and the fix is straightforward with no breaking changes per the PR diff.

Exploit ScenarioDerived

An unauthenticated attacker identifies a DRF-backed API endpoint that accepts POST requests with application/json or application/x-www-form-urlencoded content types. The attacker sends a continuous stream of requests each carrying a maximally large request body, causing the DRF Request._parse() method to allocate unbounded memory for each request before Django's size guard can intervene. Sustained flooding of this nature degrades or exhausts available server memory and CPU, resulting in service unavailability for legitimate users. No public exploit code has been identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 11, 2026

Uncontrolled resource consumption in Django REST Framework prior to 3.17.2 allows unauthenticated remote attackers to exhaust server memory and CPU by sending arbitrarily large request bodies via application/json or application/x-www-form-urlencoded content types. The framework's Request._parse() method passes the raw HttpRequest stream directly to JSONParser and FormParser, silently bypassing Django's built-in DATA_UPLOAD_MAX_MEMORY_SIZE guard. No public exploit or active exploitation (CISA KEV) has been identified at time of analysis, but the attack requires no authentication and no special configuration, making any exposed DRF API endpoint a viable target.

RemediationAI

The primary fix is to upgrade Django REST Framework to version 3.17.2 or later, which is confirmed as the vendor-released patch per the GitHub security advisory (https://github.com/encode/django-rest-framework/security/advisories/GHSA-2m8g-3cmr-wg3w) and the merged PR at https://github.com/encode/django-rest-framework/pull/10013. As a compensating control prior to patching, operators should ensure Django's DATA_UPLOAD_MAX_MEMORY_SIZE setting is explicitly configured at an appropriately low value (e.g., 2.5 MB), and additionally enforce request body size limits at the web server or reverse proxy layer (e.g., client_max_body_size in nginx or LimitRequestBody in Apache httpd) - note that these proxy-layer limits do not fix the DRF bypass but do bound the maximum impact. Disabling JSON or form-encoded body parsing globally is not a practical workaround for most APIs. Rate limiting on POST endpoints can reduce the amplification potential of repeated large-body attacks but does not eliminate the vulnerability.

Affected VersionsENISA

django-rest-framework < 3.17.2

Affected Packages

pypi djangorestframework fix: 3.17.2
euvd django_rest_framework fix: 3.17.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in pypi, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Django REST Framework (CPE: cpe:2.3:a:encode:django-rest-framework:*:*:*:*:*:*:*:*) is a widely-used Python toolkit layered on top of Django for building HTTP APIs. Django's core provides a safety valve - DATA_UPLOAD_MAX_MEMORY_SIZE - that limits how much request body data is buffered into memory. The root cause (CWE-400: Uncontrolled Resource Consumption) is that DRF's Request._parse() in rest_framework/request.py forwarded the raw underlying HttpRequest stream object to its JSONParser and FormParser instances, bypassing the size-check mechanism that Django applies when body data is accessed through the controlled request.body property. The fix (PR #10013, commits 2912dc98 and 82ef7b7e) wraps the body read in io.BytesIO(self.body), which causes Django to enforce the DATA_UPLOAD_MAX_MEMORY_SIZE limit before the parser ever sees the data. MultiPartParser and custom parsers were not affected by this bypass and retain their existing streaming path.

Know when Django Rest Framework 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

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 5.3 MEDIUM

Network-reachable, no auth required, no user interaction; impact is partial availability loss only with no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
SUSE MEDIUM
Red Hat 5.3 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

2
Patch available
Aug 11, 2026 - 20:19 EUVD
CVE Published
Aug 11, 2026 - 18:54 cve.org
MEDIUM 5.3

DescriptionCVE.org

Django REST framework is a toolkit for building Web APIs. Prior to 3.17.2, Django REST Framework's request.data parsing in rest_framework/request.py Request._parse() passes the underlying HttpRequest stream to JSONParser and FormParser for application/json and application/x-www-form-urlencoded bodies, bypassing Django's DATA_UPLOAD_MAX_MEMORY_SIZE protection and allowing oversized request bodies to consume additional memory and CPU. This issue is fixed in version 3.17.2.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 443 pypi packages depend on djangorestframework (253 direct, 192 indirect)

Ecosystem-wide dependent count for version 3.17.2.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
High
dominant Python REST API framework, vast Django ecosystem footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
High
Technical Impact
Partial

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Vendor StatusVendor

SUSE

Severity: Moderate

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy