Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-61592

CVE-2026-61592: djust SSE Auth Bypass Vulnerability

CVE-2026-61592 is an authentication bypass flaw in djust SSE sessions that allows attackers to hijack user sessions and execute handlers with victim identity. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-61592 Overview

CVE-2026-61592 is a session fixation vulnerability [CWE-384] in djust, a library that provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Versions prior to 1.0.7 key Server-Sent Events (SSE) sessions solely by a client-chosen session_id without binding the session to the authenticated user. An attacker who learns or is leaked a victim's session_id can connect to the message endpoint and dispatch event handlers that execute with the victim's identity and state. The WebSocket transport enforces principal binding, but SSE dropped that control.

Critical Impact

Attackers who obtain a valid session_id can hijack SSE sessions and execute event handlers as the victim, resulting in confidentiality and integrity compromise.

Affected Products

  • djust versions prior to 1.0.7
  • Django applications using djust SSE transport
  • Deployments relying on djust reactive server-side rendering

Discovery Timeline

  • 2026-09-16 - CVE-2026-61592 published to NVD
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-61592

Vulnerability Analysis

The djust library exposes two transports for reactive server-side rendering: WebSocket and Server-Sent Events. The WebSocket transport binds each session to the authenticated principal at connection time and rejects cross-principal access. The SSE transport, however, identifies sessions using only a client-supplied session_id string.

When a client connects to the SSE message endpoint, djust locates the session using the supplied session_id and dispatches event handlers under that session's context. No verification confirms that the calling principal matches the principal that originally created the session. Any request presenting a known session_id inherits that session's identity, permissions, and application state.

This vulnerability enables session hijacking whenever a session_id leaks through logs, referrer headers, proxy caches, browser history, error reports, or predictable generation.

Root Cause

The root cause is the omission of principal-to-session binding on the SSE transport. Session identifiers are treated as sufficient authenticators, violating the principle that session tokens must be bound to authenticated identity. This aligns with [CWE-384: Session Fixation], where an attacker can force or reuse a session identifier that the application accepts without re-authentication.

Attack Vector

An attacker who obtains a victim's session_id connects to the djust SSE message endpoint and dispatches arbitrary event handlers. The handlers execute with the victim's authenticated identity and current UI state. Exploitation requires knowledge of a valid session_id, which raises attack complexity but does not require prior authentication or user interaction on the attacker side.

See the GitHub Security Advisory GHSA-f795-p5jw-j6g2 for technical details published by the project maintainers.

Detection Methods for CVE-2026-61592

Indicators of Compromise

  • SSE message endpoint requests where the source IP or user-agent differs from the IP or user-agent that established the session.
  • Multiple concurrent connections against the same session_id from distinct network origins.
  • Event handler invocations that do not correspond to prior legitimate UI interactions from the session owner.

Detection Strategies

  • Correlate SSE session creation events with subsequent message endpoint requests and alert on principal mismatches.
  • Log session_id usage alongside authenticated user identity and flag divergence between session creator and session user.
  • Baseline per-user SSE session counts and alert on unusual creation volumes prior to applying the 1.0.7 per-principal cap.

Monitoring Recommendations

  • Enable verbose access logging on djust SSE endpoints and forward logs to a centralized analytics platform.
  • Monitor referrer, proxy, and error-reporting pipelines for accidental exposure of session_id values.
  • Track authentication anomalies where actions attributed to a user originate from unexpected client contexts.

How to Mitigate CVE-2026-61592

Immediate Actions Required

  • Upgrade djust to version 1.0.7 or later, which binds each SSE session to its owning principal at creation and rejects cross-principal access.
  • Invalidate existing SSE sessions after upgrade to force re-establishment under the new binding logic.
  • Audit logs, proxies, and error trackers for historical exposure of session_id values and rotate affected user sessions.

Patch Information

The fix is available in djust 1.0.7. The release binds each SSE session to its owning principal at creation, rejects cross-principal access to the message endpoint, and caps SSE session creation per principal. See the GitHub Release v1.0.7 for the full changelog.

Workarounds

  • Disable the SSE transport and rely exclusively on the WebSocket transport, which already enforces principal binding.
  • Restrict access to the djust SSE message endpoint at the reverse proxy layer until the patch is applied.
  • Enforce strict transport security and short-lived session identifiers to reduce the window for session_id leakage.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.