Read the docs
TI-2026-44122 Aliases CVE-2026-61594GHSA-xhhm-f6hp-2qwj

djust has an authorization bypass on the WebSocket/SSE mount path

Priority MEDIUM 42CWE-306Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Security bypass
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-306.

Summary

djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, the live (WebSocket) transport authorizes a mount via `check_view_auth`, not Django's `View.dispatch()` chain. As a result, standard Django authorization — `LoginRequiredMixin`, `PermissionRequiredMixin`, `UserPassesTestMixin`, `@method_decorator(login_required, name="dispatch")`, and custom `dispatch()` guards — and the djust admin extension's staff gate (applied only in the HTTP `as_view` wrapper) were enforced on the initial HTTP GET but silently bypassed over WebSocket, where all events and state flow. An anonymous or under-privileged client could open a WebSocket and mount such a view — including admin list/create/change/delete — and dispatch its handlers. This is fixed in djust 1.0.7. `check_view_auth` now honors the Django `AccessMixin` family on every transport; a new system check S004 fails loud at startup on auth patterns the runtime cannot safely replay (decorator/overridden-`dispatch` forms); and the admin base mixin declares `login_required = True` + an active-staff `check_permissions` gate. As a workaround, gate views using djust's `login_required` / `permission_required` / `check_permissions` attributes (honored on all transports) rather than HTTP-only mixins/decorators.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00485 42nd 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-xhhm-f6hp-2qwj
  • 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-xhhm-f6hp-2qwj

Remediation

  • Fix · CNA djust (djust-org) Fixed in 1.0.7
  • Fix · GHSA-xhhm-f6hp-2qwj djust (PyPI) Fixed in 1.0.7 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-61594
  2. 2026-10-03 Alias added: GHSA-xhhm-f6hp-2qwj

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-44121 Cross-site request forgery in djust-org djust CVSS 3.1HIGH 8.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