ZeroHour

CVE-2026-61592

SSE Session Hijack in djust Live-View Framework (pip)

CVSS 3.1
7.4 high
EPSS
Published
()
Modified
AI analysis

The djust Python package (a live-view framework with SSE and WebSocket transports) keyed its Server-Sent Events sessions solely on a client-chosen session_id, with no binding to the authenticated user — a check the WebSocket transport has but that was dropped for SSE. An attacker who learns or obtains a victim's session_id (through leakage, logs, or guessing) can connect to the SSE message endpoint and dispatch event handlers that execute with the victim's identity and state, gaining unauthorized read access and the ability to perform actions as the victim. Exploitation requires obtaining a valid session_id, which the CVSS score reflects as high attack complexity, but there is no other authorization gate. All djust deployments using the SSE transport on versions prior to 1.0.7 are affected. No public proof-of-concept exists and no exploitation has been reported; the flaw is fixed in djust 1.0.7, which binds each SSE session to its owning principal and caps sessions per principal.

What to do: Upgrade to djust 1.0.7 or later, which binds each SSE session to its owning principal and rejects cross-principal access. If upgrading is not immediately possible, disable the SSE transport (e.g., use the WebSocket transport) as a workaround. Treat any session_ids that may have been shared or logged as compromised, and review server logs for unexpected connections to the SSE message endpoint.

Affected
djust (pip package)all versions prior to 1.0.7 when using the SSE transport
Estimated exposure
No basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, SSE sessions were keyed solely by a client-chosen `session_id` with no binding to the authenticated user — a control the WebSocket transport has but that was dropped on SSE. An attacker who learns (or a victim who leaks) a `session_id` could connect to the message endpoint and dispatch event handlers that execute with the victim's identity and state. This is fixed in djust 1.0.7. Each SSE session is bound to its owning principal at creation and cross-principal access is rejected; SSE session creation is additionally capped per principal. As a workaround, disable the SSE transport.

Ecosystems
pip
Weakness
CWE-384, CWE-639, CWE-862
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
GHSA
GHSA-f795-p5jw-j6g2 (high)

In the news

No ingested article mentions this CVE yet.