Read the docs
TI-2026-44121 Aliases CVE-2026-61593GHSA-pg97-jvmf-qfvc

Cross-site request forgery in djust-org djust

Priority LOW 37CWE-352Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
Required
Attack complexity
Low
Impact type
Tampering
Confidentiality · integrity · availability
High · High · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-352.

Summary

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.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00209 11th percentileScored 2026-11-07
Fix Fixed djust (djust-org): 1.0.7djust (PyPI): 1.0.7

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
djust-orgdjustbefore 1.0.71.0.7Patch availableCNA
—djust (PyPI)before 1.0.71.0.7Patch availableGHSA-pg97-jvmf-qfvc
  • djust Vendordjust-org Affected before 1.0.7 Fixed in 1.0.7 Patch available CNA
  • djust (PyPI) Vendor— Affected before 1.0.7 Fixed in 1.0.7 Patch available GHSA-pg97-jvmf-qfvc

Remediation

  • Fix · CNA djust (djust-org) Fixed in 1.0.7
  • Fix · GHSA-pg97-jvmf-qfvc djust (PyPI) Fixed in 1.0.7 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-61593
  2. 2026-10-03 Alias added: GHSA-pg97-jvmf-qfvc

References

  • TI-2026-40112 Improper authorization in djust-org djust CVSS 3.1HIGH 8.2
  • TI-2026-78534 Arbitrary file read in djust find_handlers_for_template MCP tool CVSS 3.1LOW 3.3
  • TI-2026-44127 djust has an unauthenticated arbitrary module import via the WebSocket/SSE view-mount path CVSS 4.0HIGH 8.8
  • TI-2026-44122 djust has an authorization bypass on the WebSocket/SSE mount path CVSS 3.1CRITICAL 9.1
  • TI-2026-44119 djust: Unsigned client state snapshot is restored as trusted view state (privilege escalation / state injection) CVSS 3.1HIGH 8.1
  • TI-2026-44120 Session fixation in djust-org djust CVSS 3.1HIGH 7.4
See all 13 →

Sources