Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privilege signed cookie legitimately
-
DeliveryIdentify colliding (name, salt) concatenation pair in target app
-
ExploitCraft request presenting cookie to colliding context endpoint
-
ExecutionServer validates HMAC signature successfully
-
ImpactAccess context-mismatched cookie data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Exploitation requires three concurrent conditions: (1) the target Django application must call |
| Impact | The CVSS 4.0 base score of 2.3 accurately reflects the low real-world risk. The vector AV:N/AC:L/AT:P/PR:L/UI:N breaks down as: network-reachable (AV:N), low complexity once a collision pair is identified (AC:L), but critically requiring the presence of a vulnerable target configuration (AT:P) - specifically, an application must have two code paths each calling get_signed_cookie with (name, salt) pairs that collide under concatenation. This is a non-trivial prerequisite. Additionally, PR:L indicates the attacker must already possess a legitimately issued signed cookie from one context before attempting to replay it in the colliding context. Impact is limited to VC:L (low confidentiality breach on the vulnerable system), with no integrity or availability impact. No EPSS data was provided; given the low CVSS, narrow preconditions, and absence from CISA KEV, probabilistic exploitation at scale is unlikely. No public exploit identified at time of analysis. This is a real but low-priority issue unless an application is specifically identified to have colliding (name, salt) pairs in its cookie-signing logic. |
| Exploit ScenarioDerived | An attacker who holds a legitimately issued signed cookie from one application endpoint - for example, a low-privilege session token named 'user_pref' signed with salt 'sett' - identifies that another endpoint calls get_signed_cookie with name 'user' and salt 'prefs_ett', producing the same concatenated salt string 'user_prefs_ett' in both cases. The attacker presents their original cookie to the second endpoint, where it passes signature verification despite being issued for a different context, potentially exposing data or functionality intended only for that second context. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 03, 2026
Cookie context confusion in Django's signed cookie implementation allows a remote low-privileged attacker to substitute a cookie signed in one application context into a different context where a distinct (name, salt) pair produces the same concatenated string. Affected are Django 6.0 before 6.0.6 and Django 5.2 before 5.2.15; older unsupported series (5.0.x, 4.1.x, 3.2.x) were not evaluated but may also be affected. The real-world impact is limited to low-confidence data exposure (VC:L), with no public exploit identified at time of analysis, and the CVSS 4.0 score of 2.3 reflects a low-severity, contextually constrained flaw.
RemediationAI
Upgrade to Django 6.0.6 or Django 5.2.15, which contain the vendor-released patch addressing the non-injective salt derivation. The fix is expected to introduce a separator or structurally distinct encoding between the cookie name and salt to ensure injectivity. Upgrade guidance and release notes are available at https://www.djangoproject.com/weblog/2026/jun/03/security-releases/ and security announcements at https://groups.google.com/g/django-announce. For deployments that cannot immediately upgrade, a targeted workaround is to audit all usages of get_signed_cookie in the application codebase and ensure no two (name, salt) pairs share the same concatenated string - for example, by enforcing a fixed-length cookie name prefix or using a delimiter character (such as ':') in the salt argument that cannot appear in cookie names. Note that this manual audit approach is error-prone and does not address the underlying library flaw; upgrading remains the only reliable remediation. Unsupported Django series (5.0.x and older) should be migrated to a supported branch as a priority.
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
The vulnerability resides in django.http.HttpRequest.get_signed_cookie, part of Django's cryptographic cookie-signing subsystem (CPE: cpe:2.3:a:djangoproject:django:*). Django signs cookies using HMAC with a salt to bind a signed value to a specific purpose or context. The bug is that salt derivation is performed by naively concatenating the cookie name and the caller-supplied salt string - a non-injective function. Because concatenation of two strings is not uniquely reversible (e.g., name='ab', salt='cdef' produces the same string as name='abc', salt='def'), two completely distinct (name, salt) pairs can produce an identical HMAC key input. The root cause is classified as CWE-347 (Improper Verification of Cryptographic Signature): the signature itself may be cryptographically valid, but it is accepted in an unintended context because the domain-separation mechanism is broken. This is conceptually similar to JWT algorithm confusion or salt-reuse attacks in token systems, which explains the 'Jwt Attack' tag applied by the reporter.
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:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Primary rating from Vendor (6a34fbeb-21d4-45e7-8e0a-62b95bc12c92) · only source for this CVE.
CVSS VectorVendor: 6a34fbeb-21d4-45e7-8e0a-62b95bc12c92
Lifecycle Timeline
1DescriptionCVE.org
An issue was discovered in Django 6.0 before 6.0.6 and 5.2 before 5.2.15. django.http.HttpRequest.get_signed_cookie in Django uses a non-injective salt derivation (concatenating the cookie name and salt argument), which allows a remote attacker to use a cookie in a context different from the one where it was signed, via distinct (name, salt) pairs that produce the same concatenation. 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 Peng Zhou 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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
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
EUVD-2026-34086
GHSA-h7pc-vwp9-298g
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB