Track vulnerabilities like this one.
Sign up free to get alerted when software you use is affected.
9.1
CVE-2026-61594: djust permits login bypass on WebSocket connections
CVE-2026-61594 · published 26 days ago
Summary
If you are using djust version earlier than 1.0.7, the permission checks that normally block anonymous users are not applied when a page communicates via WebSocket. This could let an unauthenticated or low‑privilege user open a WebSocket and interact with views that should be restricted, including admin functions. Upgrade to djust 1.0.7 or later, or use djust's own login_required / permission_required settings instead of Django-only decorators, to ensure the checks run on all transports.
What to do
- Update djust contributors djust to version 1.0.7.
- Update djust to version 1.0.7.
Affected software
| Ecosystem | Vendor | Product | Affected versions |
|---|---|---|---|
| – | djust-org | djust | < 1.0.7 |
| pip | djust contributors | djust |
< 1.0.7 Fix: upgrade to 1.0.7
|
| pip | – | djust |
< 1.0.7 Fix: upgrade to 1.0.7
|
Original advisory text
djust has an authorization bypass on the WebSocket/SSE mount path
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.
References
- https://github.com/djust-org/djust/security/advisories/GHSA-xhhm-f6hp-2qwj
- https://github.com/djust-org/djust/releases/tag/v1.0.7
- https://github.com/advisories/GHSA-xhhm-f6hp-2qwj
- https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61594... Vendor Advisory
- https://nvd.nist.gov/vuln/detail/CVE-2026-61594 Vendor Advisory
- https://github.com/djust-org/djust Product
- https://pypi.org/project/djust Product
Internet-facing
14 days
Internal
At next upgrade
- Not known to be exploited
- Needs hands-on effort to exploit
- Gives an attacker full control
Type
CWE-306Missing Authentication for Critical Function
CWE-862Missing Authorization
Timeline
Published16 Sep 2026
Updated11 Oct 2026
First seen16 Sep 2026
Sources
CVE-2026-61594 · NVD
CVE-2026-61594 · MITRE
GHSA-xhhm-f6hp-2qwj · GHSA
CVE-2026-61594 · OSV
GHSA-xhhm-f6hp-2qwj · OSV
PYSEC-2026-4047 · OSV
Track software like this
Free during beta