CVE-2025-14550
Django vulnerability analysis and mitigation

Overview

CVE-2025-14550 is a denial-of-service vulnerability in Django's ASGIRequest handler that allows a remote, unauthenticated attacker to exhaust server resources by sending crafted HTTP requests containing multiple duplicate headers. It affects Django versions 6.0 before 6.0.2, 5.2 before 5.2.11, and 4.2 before 4.2.28; earlier unsupported series (5.0.x, 4.1.x, 3.2.x) were not formally evaluated but may also be affected. The vulnerability was reported by Jiyong Yang and disclosed on February 3, 2026. It carries a CVSS v3.1 base score of 7.5 (High) and a CVSS v4.0 base score of 2.7 (Low) (GitHub Advisory, Django Blog).

Technical details

The root cause is classified under CWE-407 (Inefficient Algorithmic Complexity) and CWE-167 (Improper Handling of Additional Special Element). Django's ASGIRequest class does not efficiently handle HTTP requests that contain a large number of duplicate headers; processing such requests triggers worst-case algorithmic behavior that consumes disproportionate CPU or memory resources. The attack requires no authentication, no user interaction, and is reachable over the network with low complexity, making it trivially exploitable against any publicly accessible Django ASGI application. The fix is tracked in the Django source repository at commit eb22e1d (GitHub Advisory, Django Changeset).

Impact

Successful exploitation causes a denial-of-service condition against the affected Django ASGI application, degrading or completely interrupting service availability. There is no impact on confidentiality or data integrity — the vulnerability is limited to availability. Applications deployed using WSGI (rather than ASGI) are not affected by this specific issue, limiting the scope to ASGI-based deployments (GitHub Advisory, Django Blog).

Exploitability

No public proof-of-concept exploit code or in-the-wild exploitation has been reported for CVE-2025-14550. The EPSS score is approximately 0.041% (22nd percentile), indicating a low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Detection plugins are available from Nessus (IDs: 297743, 298044, 298350, 300515, 300516, 300641, 301388, 303901, 303903) and Qualys (IDs: 6031874, 6047774, 296136) (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify internet-facing Django applications running in ASGI mode (e.g., via Daphne, Uvicorn, or Hypercorn) on versions prior to 4.2.28, 5.2.11, or 6.0.2 using tools like Shodan or Censys, or by inspecting HTTP response headers for Django version indicators.
  2. Craft malicious request: Construct an HTTP request containing a large number of duplicate headers (e.g., hundreds of repeated X-Custom-Header: value entries) targeting any accessible endpoint of the ASGI application.
  3. Send the request: Transmit the crafted request to the target server. No authentication or special privileges are required.
  4. Trigger resource exhaustion: The ASGIRequest handler processes the duplicate headers with inefficient algorithmic complexity, consuming excessive CPU or memory and causing the application to become unresponsive or crash, resulting in a denial-of-service condition.
  5. Sustain the attack: Repeat requests in rapid succession to maintain the DoS condition and prevent service recovery (GitHub Advisory, Django Blog).

Indicators of compromise

  • Network: Unusual volume of HTTP requests with abnormally large or numerous headers targeting ASGI Django endpoints; requests with hundreds of repeated identical header names from a single or rotating source IP.
  • Logs: Django/ASGI server logs showing repeated requests with excessive header counts; elevated request processing times or timeouts logged by the ASGI server (Daphne, Uvicorn, Hypercorn).
  • Process: Sustained high CPU or memory utilization by the Django ASGI worker processes without a corresponding increase in legitimate traffic; worker process crashes or restarts correlated with specific request patterns.

Mitigation and workarounds

Django has released patched versions 4.2.28, 5.2.11, and 6.0.2, which resolve this vulnerability. Upgrading to one of these versions is the recommended remediation. As a temporary workaround, operators can deploy a reverse proxy (e.g., nginx) in front of the ASGI application configured to limit the number or size of HTTP headers per request, reducing exposure until an upgrade is possible. Downstream vendors including Red Hat (via RHSA-2026:2694, RHSA-2026:3958, RHSA-2026:3959, RHSA-2026:5970, RHSA-2026:5971, RHSA-2026:13508), Ubuntu (USN-8009-1), Oracle Solaris, Debian, SUSE, Fedora, and Mageia have also issued patches (Django Blog, Red Hat Bugzilla, Oracle).

Community reactions

The Django security team published a blog post on February 3, 2026 announcing the security releases and a follow-up post on February 4, 2026 discussing recent trends observed by the security team (Django Blog, Django Security Trends). Security news outlets including SecurityOnline, GBHackers, CyberSecurityNews, and CyberPress covered the release, often grouping it with other Django vulnerabilities patched in the same release cycle. The vulnerability was also discussed on the oss-security mailing list (oss-sec). Community reaction was measured, reflecting the limited scope (ASGI-only, DoS-only) and low EPSS score.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

python-django: 3:3.2.25-0+deb12u2

Fixed

sid

python-django: 3:4.2.28-1

Fixed

trixie

python-django: 3:4.2.28-0+deb13u1

Fixed

RHEL / CentOS

Unknown

Alpine

Fixed

edge

py3-django: 4.2.28-r0

Fixed

v3.23

py3-django: 4.2.28-r0

Fixed

SourceThis report was generated using AI

Related Django vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-15830MEDIUM6.9
  • Django logoDjango
  • py3-django
NoYesAug 04, 2026
CVE-2026-53877MEDIUM6.3
  • Django logoDjango
  • openstack-horizon-2026.1
NoYesJul 07, 2026
CVE-2026-53878MEDIUM5.3
  • Django logoDjango
  • python-django5
NoYesJul 07, 2026
CVE-2026-48588LOW2.3
  • Django logoDjango
  • authentik-2026.5
NoYesJul 07, 2026
CVE-2026-8404LOW2.3
  • Django logoDjango
  • python311-Django
NoYesJun 03, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management