CVE-2026-61593 Details
Description
djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, the SSE client→server POST endpoints are `@csrf_exempt` and the SSE GET stream endpoint had no Origin check, so a cross-origin page could drive a victim-cookie-authenticated SSE session: force the victim's browser to GET the stream URL (which creates and mounts a LiveView as the victim) and POST to the message endpoint with `credentials: include` to fire state-changing event handlers as the victim. The URL `session_id` is client-chosen (validated only for UUID *format*), so it is not a CSRF token, and a JSON body sent as `text/plain` is a CORS simple request with no preflight. The issue is fixed in 1.0.7. All three SSE endpoints validate the request `Origin` against `ALLOWED_HOSTS` (mirroring the WebSocket CSWSH defense) and reject cross-origin requests with 403; the POST endpoints additionally require `Content-Type: application/json` (415 otherwise), closing the `text/plain` simple-request bypass. As a workaround, disable the SSE transport, or front it with a proxy that enforces an Origin allowlist.
A cross-origin cross-site request forgery vulnerability has been identified in Djust versions prior to 1.0.7. The issue arises because the server-sent events (SSE) client-to-server POST endpoints are exempt from CSRF protection, and the SSE GET stream endpoint lacks an Origin check. This allows a cross-origin page to manipulate a victim's SSE session, authenticated with cookies. By forcing the victim's browser to access the stream URL, which activates a LiveView session on their behalf, and sending a POST request to the message endpoint with included credentials, state-changing event handlers can be triggered as if they were the victim. The vulnerability is exacerbated by the fact that the session ID is user-defined and only validated for UUID format, making it ineffective as a CSRF token. Additionally, a JSON body transmitted as text/plain qualifies as a CORS simple request, bypassing preflight requirements.
Users can upgrade to Djust version 1.0.7, where this vulnerability is fixed. In this version, all SSE endpoints validate the request Origin against ALLOWED_HOSTS, rejecting cross-origin requests with a 403 status. The POST endpoints also require a Content-Type of application/json, closing the text/plain simple-request bypass. As an alternative, the SSE transport can be disabled or fronted with a proxy that enforces an Origin allowlist.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
Volerion
Assessed Sep 16, 2026CISA-ADP
Assessed Sep 16, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/djust-org/djust/releases/tag/v1.0.7 | [email protected] | Release NotesVendor |
| https://github.com/djust-org/djust/security/advisories/GHSA-pg97-jvmf-qfvc | [email protected] | AdvisoryRemedyVendor |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-352 | Cross-Site Request Forgery (CSRF) | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| djust | < 1.0.7 (semver) |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Sep 16, 2026 | CVE Modified | CISA-ADP |
| Sep 16, 2026 | New CVE Received | [email protected] |
Volerion