Read the docs
TI-2026-44124 Aliases CVE-2026-61596GHSA-c7c5-5j6r-q957

djust has broken object-level access control (IDOR)

Priority LOW 31CWE-639Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Security bypass
Confidentiality · integrity · availability
High · Low · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-639.

Summary

djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, djust's per-object authorization (`get_object` + `has_object_permission`, ADR-017) was enforced on the WebSocket mount and event paths but not on three other render entry points: (a) the initial HTTP GET render, (b) SPA `url_change` navigation, and (c) `{% live_render %}` embedded child views. An authenticated user could therefore view (and on some paths act on) an object they are not authorized for by loading the page directly, navigating to it via SPA url-change, or composing it as an embedded child — a classic IDOR / broken object-level access control on object-scoped views. This is fixed in djust 1.0.7. All render entry points now route through a shared `enforce_object_permission` chokepoint: HTTP GET returns 403, `url_change` emits a `permission_denied` frame and skips the render, and `{% live_render %}` (eager + lazy) refuses the embed. Views without a custom `get_object` are unaffected (no-op). No reliable workaround short of upgrading. Do not expose object-scoped views through the HTTP-GET / url_change / live_render paths until patched.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00328 26th 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
Partial

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-c7c5-5j6r-q957
  • 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-c7c5-5j6r-q957

Remediation

  • Fix · CNA djust (djust-org) Fixed in 1.0.7
  • Fix · GHSA-c7c5-5j6r-q957 djust (PyPI) Fixed in 1.0.7 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-61596
  2. 2026-10-03 Alias added: GHSA-c7c5-5j6r-q957

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-44122 djust has an authorization bypass on the WebSocket/SSE mount path CVSS 3.1CRITICAL 9.1
  • 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
See all 13 →

Sources