Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect raw WebSocket client to gated LiveView endpoint
-
DeliveryReceive {"type":"navigate"} redirect frame and ignore it
-
ExploitSend crafted {"type":"event"} frame with target handler and params
-
Executionhandle_event dispatches without re-checking authentication
-
Persist@event_handler executes under anonymous session
-
ImpactUnauthorized data read or state mutation completes
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization verification
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a non-browser WebSocket client capable of connecting to the target application's WebSocket endpoint and ignoring server-sent redirect frames - standard browsers follow the navigate frame and are not exploitable. The target application must be running djust prior to 1.0.4 and must expose at least one LiveView decorated with login_required or permission_required, or whose on_mount hook issues a redirect, and that view's @event_handler methods must not independently verify the user. The attacker must know or successfully enumerate at least one valid LiveView path and a callable event handler name on that view. What limits exploitation: the non-browser WebSocket client requirement rules out CSRF-style drive-by attacks; knowledge of specific view paths and event names is necessary; and apps where every @event_handler already independently checks request.user.is_authenticated are not vulnerable even on affected versions. Exploitation is not possible against djust 1.0.4 or later. |
| Impact | The CVSS 8.2 score with vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N accurately reflects the severity of the authentication bypass: unauthenticated network exploitation with high integrity impact and low attack complexity. The I:H rating is grounded in the fact that all state-mutating event handlers on any gated LiveView are reachable by an anonymous WebSocket client. EPSS score was not provided in the source data. There is no CISA KEV listing, so confirmed in-the-wild exploitation is not established; however, a proof-of-concept WebsocketCommunicator reproducer was disclosed in the GHSA advisory alongside the patch, lowering the bar for exploitation. The primary real-world limiting factor is that standard browsers are not exploitable - they obey the navigate frame and disconnect - which restricts opportunistic, drive-by exploitation but does not protect against targeted attacks using basic WebSocket tooling such as wscat, Python websockets, or curl. The deployment footprint of djust is niche compared to mainstream frameworks, which reduces aggregate exposure, but individual applications with sensitive mutations (write operations, data deletion, financial actions) behind login_required LiveViews face meaningful risk until patched. |
| Exploit ScenarioDerived | An attacker targeting a djust application uses a raw WebSocket client to connect to a known gated LiveView endpoint (e.g., /ws/live/admin-dashboard/). When the server responds with {"type":"navigate","to":"/login/"}, the client silently ignores the frame rather than disconnecting, then sends {"type":"event","name":"delete_user","params":{"user_id":99}}. Because handle_event never rechecks authentication, the delete_user handler executes under an anonymous session and completes the unauthorized mutation. A WebsocketCommunicator proof-of-concept reproducer demonstrating this bypass was disclosed as part of GHSA-xx4j-w367-7247. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Authentication bypass in djust's WebSocket LiveView consumer allows unauthenticated remote clients to invoke protected event handlers on views gated by login_required, permission_required, or redirecting on_mount hooks. All djust versions prior to 1.0.4 are affected: handle_mount sends a navigate/redirect frame on auth denial but neither closes the WebSocket nor clears self.view_instance, leaving the socket open and exploitable. Because handle_event never rechecks authentication after mount, a non-browser WebSocket client that ignores the redirect can send arbitrary event frames and execute state-mutating or data-reading handlers without an authenticated session. No public exploit identified at time of analysis beyond the WebsocketCommunicator proof-of-concept reproducer disclosed in GHSA-xx4j-w367-7247; this vulnerability is not listed in CISA KEV.
RemediationAI
Upgrade to djust 1.0.4 immediately via pip install 'djust>=1.0.4'. The fix - detailed in commit 1ae8aa9 (https://github.com/djust-org/djust/commit/1ae8aa9246b80477de7ddc4d90319a3b267bef04) and PR #1780 (https://github.com/djust-org/djust/pull/1780) - makes both the auth-redirect and on_mount-hook-redirect branches of handle_mount send the navigate frame and then call close(code=4403) and clear self.view_instance, mirroring the existing PermissionDenied branch. Version 1.0.4 also adds an opt-in defense-in-depth control: setting LIVEVIEW_CONFIG['reauth_on_event'] = True (default off) causes the framework to re-resolve the session user and re-run auth checks on every event for gated views, providing a belt-and-suspenders layer against future regressions on this path. If immediate upgrade is not possible, add explicit authentication checks at the top of every @event_handler on gated LiveViews (e.g., if not request.user.is_authenticated: return), since the framework does not re-verify after mount on affected versions; note this approach is handler-by-handler and easy to miss on new handlers. Alternatively, subclass the consumer and override handle_mount to call await self.close(code=4403) after any auth redirect emission; this is more robust than per-handler checks but requires maintaining a custom consumer class.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
djust is a Python/Django library providing Phoenix LiveView-style reactive server-side rendering, using Django Channels for WebSocket transport. The affected component is LiveViewConsumer, a WebSocket consumer class whose handle_mount method enforces access control before allowing a LiveView to mount. The root cause is CWE-285 (Improper Authorization): access control is enforced asymmetrically across two failure branches. The PermissionDenied branch (authenticated but unauthorized) correctly terminates the connection with close(code=4403), but the redirect branch (anonymous user hitting a login_required view) only emits a {"type":"navigate","to":...} frame and returns, leaving self.view_instance set and the socket fully open. The handle_event dispatcher gates only on the presence of self.view_instance, never re-invoking check_view_auth, so the unauthenticated socket remains capable of dispatching to any @event_handler method on the gated view. The same code path is reachable via handle_live_redirect_mount, which delegates to handle_mount and carries the same flaw. Affected CPE: cpe:2.3:a:djust-org:djust:*:*:*:*:*:*:*:* (all versions before 1.0.4).
Know when Djust gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
WebSocket endpoint is network-reachable (AV:N); no authentication needed (PR:N); path/event enumeration is low-effort (AC:L); integrity fully compromised via unrestricted handler dispatch (I:H); reads possible but secondary (C:L); no availability impact described.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to 1.0.4, LiveViewConsumer.handle_mount sends a {"type":"navigate","to":...} frame when login_required, permission_required, or a redirecting on_mount hook denies a LiveView mount, but returns without closing the WebSocket or clearing self.view_instance. A browser follows the redirect, but a raw WebSocket client can ignore it and retain the mounted socket. Because LiveViewConsumer.handle_event does not recheck authentication or authorization, the client can send {"type":"event",...} frames that invoke @event_handler methods without an authenticated session, including through handle_live_redirect_mount, enabling unauthorized sensitive reads or mutations. This issue is fixed in version 1.0.4.
Executive ViewAI
djust WebSocket LiveView implementation in versions prior to 1.0.4 contains an authentication bypass vulnerability allowing unauthenticated remote clients to execute protected event handlers by ignoring redirect frames and transmitting arbitrary WebSocket events. Organizations using affected versions face immediate risk of unauthorized access to protected functionality and sensitive data without valid credentials. No public exploit identified at time of analysis, and no vendor patch is currently available, requiring urgent interim protections.
No vendor-released patch identified at time of analysis. Implement network-level access controls restricting WebSocket endpoints to authenticated networks or corporate IP ranges; disable WebSocket LiveView functionality if not operationally required; deploy Web Application Firewall rules to block unauthenticated WebSocket event frames; enable enhanced logging and real-time alerting on WebSocket connection failures, authentication denials, and event handler execution; implement rate limiting on WebSocket connections; consider VPN or IP allowlisting for affected service access where feasible; establish monitoring for exploitation patterns including rapid connection attempts or repeated event invocations from unauthenticated sources.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Cross-site request forgery in djust's Server-Sent-Events transport affects all versions prior to 1.0.7 and allows a cros
Unauthenticated remote attackers can read live Django view and session state and invoke server-side handlers through dju
Mass assignment in djust, a Django library providing Phoenix LiveView-style reactive server-side rendering, allows any c
EUVD-2026-65600
GHSA-xx4j-w367-7247
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB