CVE-2026-61591
nicheUnsigned client state snapshot trusted in djust enables privilege escalation
djust, a Python web framework distributed via pip, restored a client-embedded state snapshot (state_json) as trusted view state on reconnect without any integrity check in versions prior to 1.0.7 for views that opted into state snapshots. Because the snapshot was unsigned, a client of the application could edit the JSON in their page and return it in the reconnect mount frame to inject arbitrary view attributes. This allowed an attacker to escalate privilege or tamper with business state, for example by flipping is_admin to True or changing account_id or balance values held in public view attributes, which is the normal djust pattern. Applications are affected only if they run a pre-1.0.7 djust version with the opt-in state snapshot feature enabled and keep authorization or ownership data in public view attributes. No public proof-of-concept or in-the-wild exploitation is known.
What to do: Upgrade to djust 1.0.7, which signs state snapshots and rejects unsigned or forged snapshots on the back-navigation restore path. If upgrading is not immediately possible, disable state snapshots and move authorization/ownership data such as is_admin, account_id, or balance out of public view attributes. Audit any views that used snapshots for signs of tampered attribute values.
| djust (Python web framework, pip) | all versions prior to 1.0.7, when the opt-in state snapshot feature is enabled |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, 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). This issue is fixed in djust 1.0.7. State snapshots are signed; unsigned or forged snapshots are rejected on the back-navigation restore path. As a workaround, do not enable state snapshots; do not hold authorization/ownership state in public view attributes.
- Ecosystems
- pip
- Weakness
- CWE-345, CWE-915
- Vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
- GHSA
- GHSA-c67v-vqrp-m5wj (high)
In the news0 stories
No ingested article mentions this CVE yet.