Skip to content
NewA calmer, faster ZeroHour
Vulnerability8 · 5 reads

CVE-2026-77050

Unauthenticated memory-exhaustion DoS in Django translation language-code cache

CVSS 4.0
6.9 medium
EPSS
—
Published
·
Modified
Analyze CVE-2026-77050 with Vani AIImpact, affected versions, exploitation status, mitigations and detection

Django's django.utils.translation.get_supported_language_variant() stores every distinct language code it processes as a key in an in-memory cache without any size limit (CWE-789). An unauthenticated attacker can trigger this by sending many requests containing unique, very long language codes — most commonly crafted Accept-Language headers on sites that perform language negotiation, such as those using LocaleMiddleware — and each new code is retained in the cache, consuming process memory. The impact is denial of service only: worker processes can be degraded or OOM-killed as memory fills, but there is no impact on confidentiality or integrity (CVSS 4.0 base 6.9, availability-only). Django 6.1 before 6.1.2, 6.0 before 6.0.9, and 5.2 before 5.2.18 are affected, and older unsupported series (5.1.x, 5.0.x, 4.2.x) were not evaluated and may also be vulnerable. There is no public proof of concept, the issue is not in the CISA KEV catalog, and no exploitation has been reported.

What to do: Upgrade to the fixed release for your series: Django 6.1.2, 6.0.9, or 5.2.18; if you are on an unsupported series (5.1, 5.0, 4.2), move to a supported patched release since fixes will not be backported. As interim mitigation, cap or reject oversized Accept-Language headers (and requests with unusually many/long language tags) at your reverse proxy or WAF, and consider periodic worker recycling plus memory monitoring to detect cache bloat. Verify whether your site enables LocaleMiddleware or otherwise calls get_supported_language_variant() to confirm actual exposure.

ProductAffected
Django Software Foundation Django (Python web framework)—
Estimated exposure
large≈ hundreds of thousands of Django deployments (order of 10^5 sites), concentrated in i18n-enabled applications — Django is one of the most widely deployed Python web frameworks (third-party usage trackers such as BuiltWith/W3Techs estimate roughly 0.5M+ live Django sites), and the vulnerable path is reachable on any deployment that parses…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description · NVD

An issue was discovered in Django 6.1 before 6.1.2, 6.0 before 6.0.9, and 5.2 before 5.2.18. `django.utils.translation.get_supported_language_variant()` is subject to a potential denial-of-service attack when processing many distinct, very long language codes, which are retained as keys in an in-memory cache and consume process memory. Earlier, unsupported Django series (such as 5.1.x, 5.0.x, and 4.2.x) were not evaluated and may also be affected. Django would like to thank Gleb Lizunov for reporting this issue.

Weakness
CWE-789
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

1 story