Skip to main content

djust CVE-2026-61591

| EUVDEUVD-2026-81302 HIGH
Insufficient Verification of Data Authenticity (CWE-345)
2026-09-16 https://github.com/djust-org/djust GHSA-c67v-vqrp-m5wj
8.1
CVSS 3.1 · Vendor: https://github.com/djust-org/djust
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privileged djust user
  2. Delivery
    Load view using state snapshots
  3. Exploit
    Edit unsigned state_json in page
  4. Execution
    Return forged snapshot on reconnect mount
  5. Persist
    Server restores it as trusted state
  6. Impact
    Flip 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

djust < 1.0.7

Affected Packages

pypi djust fix: 1.0.7

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

Vendor (https://github.com/djust-org/djust) PRIMARY 8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/djust-org/djust).

CVSS VectorVendor: https://github.com/djust-org/djust

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

Lifecycle Timeline

2
Patch available
Sep 16, 2026 - 23:19 EUVD
CVE Published
Sep 16, 2026 - 21:56 github-advisory
HIGH 8.1

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
niche open-source Python/Django live-view framework, small production footprint
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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