Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged djust user
-
DeliveryLoad view using state snapshots
-
ExploitEdit unsigned state_json in page
-
ExecutionReturn forged snapshot on reconnect mount
-
PersistServer restores it as trusted state
-
ImpactFlip is_admin/account_id to escalate
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Exploitation requires all of the following: (1) the target djust view must opt into state snapshots (a non-default feature the vendor's workaround says to disable), (2) the application must hold authorization or ownership state such as is_admin, account_id, or balance in public view attributes, and (3) the attacker must have a low-privileged authenticated session able to trigger a back-navigation reconnect mount frame (PR:L). The limiting factors are the opt-in snapshot feature and the developer anti-pattern of trusting public view attributes for authorization; applications that avoid either - or that upgrade to djust 1.0.7 where snapshots are signed and unsigned/forged ones are rejected - are not exploitable. No user interaction by a victim is required (UI:N). |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N, base 8.1) is internally consistent with the described flaw: a network-reachable, low-complexity attack requiring only a low-privileged authenticated session (any client that can hold a view), yielding high confidentiality and integrity impact via privilege escalation, with no availability impact. There is a real gating condition that raises AC in practice but not in the vector: the affected view must opt into state snapshots AND the application must store authorization/ownership state (is_admin, account_id, balance) in public view attributes - the vendor's own workaround confirms both are avoidable. No EPSS score, no CISA KEV listing, and no public proof-of-concept were provided, so this is not confirmed as actively exploited; it is a credible authenticated privilege-escalation issue rather than a mass-exploited internet-wide threat. The main risk driver is the low deployment footprint of djust, which caps real-world exposure despite the high base score. No signal conflicts are present in the data, though the absence of EPSS/KEV/POC leaves exploitation likelihood inferred rather than measured. |
| Exploit ScenarioDerived | An authenticated user of a djust application that uses state snapshots opens a page whose embedded state_json holds authorization attributes, edits the unsigned JSON in their browser to set is_admin to True (or alter account_id/balance), and returns it in the reconnect mount frame during back-navigation. The server restores the forged snapshot as trusted view state, granting the attacker elevated privileges or letting them tamper with business state. No public exploit code was identified at time of analysis, but the manipulation requires only client-side editing of data already present in the page. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Unsigned client-side view state in the djust Python framework (pip/djust, versions before 1.0.7) is restored as trusted state on WebSocket reconnect, allowing an authenticated low-privileged user to tamper with the embedded state_json snapshot and inject arbitrary view attributes such as is_admin, account_id, or balance, achieving privilege escalation and business-state manipulation. The attack is network-reachable, requires no victim interaction, and yields high confidentiality and integrity impact (CVSS 3.1 base 8.1, AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N), but only affects views that opt into the non-default state-snapshot feature and that store authorization or ownership data in public view attributes. The vendor released djust 1.0.7, which signs snapshots and rejects unsigned or forged snapshots on the back-navigation restore path; no public exploit code was identified at time of analysis and the flaw is not confirmed actively exploited (CISA KEV).
RemediationAI
Upgrade to djust 1.0.7 (vendor-released patch: 1.0.7), which adds snapshot signing and rejects unsigned or forged snapshots on the reconnect and back-navigation restore paths; installations pinning an earlier version must bump the pip/djust dependency. If upgrading immediately is not possible, disable the state-snapshot feature for all views, accepting the loss of state restoration across reconnects, and move any authorization or ownership values (is_admin, account_id, balance) out of public view attributes into server-side session or database-backed state, evaluating each such field against the risk that client-supplied values are trusted. Because exploitation requires only a low-privileged authenticated session, restricting who can obtain a WebSocket session is a partial compensating control but does not fix the underlying trust flaw. Verify the deployed version and review code paths that consume snapshot-derived attributes; advisory details are at https://github.com/djust-org/djust/security/advisories/GHSA-c67v-vqrp-m5wj.
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
djust is a Python server-driven UI framework that keeps view state synchronized with the browser over a WebSocket connection, similar in spirit to LiveView architectures. Affected deployments opt into a state-snapshot feature in which a serialized state_json blob is embedded into the rendered client page so the view can be reconstructed after a navigation or reconnect event. The root cause is CWE-345 (Insufficient Verification of Data Authenticity): the snapshot was accepted on the reconnect mount frame and restored as trusted server-side view state without any integrity check, MAC, or signature. Because the blob lives in the client page, any client can edit it; because djust's documented pattern encourages exposing view attributes directly to the template, developers frequently keep fields like is_admin, account_id, and balance in public view attributes, which the forged snapshot can overwrite. The fix in 1.0.7 cryptographically signs snapshots and rejects unsigned or forged payloads on the back-navigation restore path, shifting trust from the client-supplied blob to server-verifiable authenticity.
Know when Python 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Network-reachable reconnect frame (AV:N), no special timing (AC:L), requires a low-privileged authenticated view session (PR:L), no victim interaction (UI:N); forged trusted state yields C:H/I:H but no availability impact.
Primary rating from Vendor (https://github.com/djust-org/djust).
CVSS VectorVendor: https://github.com/djust-org/djust
Lifecycle Timeline
2DescriptionCVE.org
Impact
For views that opt into state snapshots, the snapshot state_json embedded in the client page was restored on reconnect as trusted view state with no integrity check. A client could edit the unsigned state_json in their page and return it in the reconnect mount frame to inject arbitrary view attributes - e.g. flip is_admin to True, or change account_id / balance - escalating privilege or tampering with business state held in public view attributes (the normal djust pattern).
Patches
Fixed in djust 1.0.7. State snapshots are signed; unsigned or forged snapshots are rejected on the back-navigation restore path.
Workarounds
Do not enable state snapshots; do not hold authorization/ownership state in public view attributes.
Technical POC Analysis
Evidence limitation: the supplied material is the GHSA advisory only.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 PoC candidate from github (unverified)
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
A high-severity flaw in the djust Python web framework (versions before 1.0.7) allows authenticated low-privileged users to impersonate administrators or alter account balances and ownership data in applications that use an optional state-snapshot feature. This could lead to unauthorized access, financial manipulation, and data integrity loss for affected customer-facing or internal applications. Leadership should prioritize remediation because the vulnerability is remotely exploitable without user interaction and directly undermines authorization controls.
Apply vendor patch.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-81302
GHSA-c67v-vqrp-m5wj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB