p PatchFirst

PatchFirst · Aktuelle Sicherheitslücken

Sicherheitslücken in djust

In den letzten 30 Tagen veröffentlichte Sicherheitslücken für djust: 1. Davon im KEV-Katalog: 0.

Sicherheitslücken filtern
Filter zurücksetzen

Sicherheitslücken: 16

  1. CVE-2026-113731

    Niedrig · CVSS 3.3EPSS 0,19%Öffentlicher ExploitKorrektur verfügbar

    djust: Arbitrary absolute-path file read in the find_handlers_for_template MCP tool

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. From 0.9.0 until 1.0.10, 1.1.7, 1.2.4, and 1.3.0rc8, the find_handlers_for_template MCP tool in python/djust/mcp/server.py accepts an existing absolute template_path and reads it without restricting the resolved path to the project or configured template directories. A local MCP client can use the tool as a file existence and readability oracle and can obtain substrings that match the tool's dj-click, dj-submit, dj-change, dj-input, dj-keydown, or dj-keyup attribute pattern from files readable by the djust process. The maintainer ass

    • Auf 1.0.10 aktualisieren
    • Auf 1.1.7 aktualisieren
    • Auf 1.2.4 aktualisieren
    • Auf 1.3.0rc8 aktualisieren
    Veröffentlicht Aktualisiert
  2. GHSA-xjw9-38cr-6372

    Nicht bewertetKorrektur verfügbar

    djust: A template binding inherits a context safety grant it never earned (XSS)

    A context safety grant was inherited by a template **binding** that never earned it, so rebinding a name the view had marked safe left the mark attached to the new, attacker-controlled value. djust's context safety channel is keyed by **name**, not by value. Every bind copied the value and left the grant in place: ``` view marks p = mark_safe('<b>trusted</b>') template {% with p=user_input %}{{ p }}{% endwith %} djust '<img src=x onerror=alert(1)>' <- executes django '&lt;img src=x onerror=alert(1)&gt;' ``` ## Affected binds Eight distinct shapes were live. All are fixed in 1.1.2: | shape | example | |---|---| | `{

    • Auf 1.1.2 aktualisieren
    Veröffentlicht Aktualisiert
  3. GHSA-9395-2g46-rj3f

    Nicht bewertetKorrektur verfügbar

    djust: Six template-layer defects emit attacker-controlled markup unescaped (XSS)

    Five independent defects in djust's template auto-escaping cause attacker-controlled input to be rendered as live markup where Django escapes it. All four are present in shipped 1.1.0 and are fixed in 1.1.1. They share one shape: **a filter or grant that escapes nothing itself and relies on the render-time auto-escape, which something downstream then removes.** They are grouped into a single advisory because the mitigation is identical — upgrade to 1.1.1 — and because no single one of them is meaningfully actionable in isolation. ## 1. `linenumbers` never escaped its input (#2291) ``` {{ p|linenumbers|safe }} with p = '<img src=x onerror

    • Auf 1.1.1 aktualisieren
    Veröffentlicht Aktualisiert
  4. CVE-2026-61599

    Hoch · CVSS 8.8EPSS 0,6%Korrektur verfügbar

    djust has an unauthenticated arbitrary module import via the WebSocket/SSE view-mount path

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, the djust live transport resolves the LiveView to mount from a client-supplied dotted path by calling `__import__(module_path, ...)`. The module is imported — running its top-level code (import side effects) — before the framework checks that the resolved object is a `LiveView` subclass and before any per-view authentication. The `LIVEVIEW_ALLOWED_MODULES` allowlist that should contain this is fail-open (`if allowed_modules:` — skipped when the setting is unset, the framework default) and uses loose `startswit

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  5. CVE-2026-61589

    Mittel · CVSS 6.3EPSS 0,18%Korrektur verfügbar

    djust: WebSocket/runtime reconstructed request omits the client Host, causing host/subdomain TenantResolvers to misresolve the tenant on the live path

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, the WebSocket `handle_mount` and `ViewRuntime._build_request` rebuild an `HttpRequest` via `RequestFactory().get(...)` with no `HTTP_HOST`, so `request.get_host()` defaulted to `"testserver"` on the live path. Host/subdomain/domain `TenantResolver`s then misresolved the tenant — `None` on the live path while the HTTP path resolved correctly. With `STRICT_MODE=False` the tenant-scoped managers returned unscoped rows (cross-tenant disclosure); with the default they returned an empty queryset (broken tenancy). Th

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  6. CVE-2026-61596

    Hoch · CVSS 7.1EPSS 0,33%Korrektur verfügbar

    djust has broken object-level access control (IDOR)

    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 clas

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  7. CVE-2026-61588

    Mittel · CVSS 6.5EPSS 0,39%Korrektur verfügbar

    djust's Django model serialization has no sensitive-field denylist: password hashes, privilege flags, and PII on a public view attribute are sent to the client

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, when a Django `Model` instance is assigned to a public view attribute, djust serialized it to the client with no sensitive-field denylist — sending fields such as `password` (the hash), privilege flags (e.g. `is_staff` / `is_superuser`), tokens, and other PII to the browser. Because exposing model objects to templates is a normal djust pattern, this could leak credentials/PII without the developer realizing the full object crossed the wire. This is fixed in djust 1.0.7. Model serialization applies a secure-by-

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  8. CVE-2026-61594

    Kritisch · CVSS 9.1EPSS 0,48%Korrektur verfügbar

    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

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  9. CVE-2026-61591

    Hoch · CVSS 8.1EPSS 0,22%Korrektur verfügbar

    djust: Unsigned client state snapshot is restored as trusted view state (privilege escalation / state injection)

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, for views that opt into state snapshots, the snapshot `state_json` embedded in the client page was restored on reconnect as trusted view state with no integrity check. A client could edit the unsigned `state_json` in their page and return it in the reconnect mount frame to inject arbitrary view attributes — e.g. flip `is_admin` to `True`, or change `account_id` / `balance` — escalating privilege or tampering with business state held in public view attributes (the normal djust pattern). This issue is fixed in d

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  10. CVE-2026-61592

    Hoch · CVSS 7.4EPSS 0,39%Korrektur verfügbar

    djust: SSE sessions are not bound to the authenticated user; the client-chosen session_id is the sole authorization capability (session hijack)

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, SSE sessions were keyed solely by a client-chosen `session_id` with no binding to the authenticated user — a control the WebSocket transport has but that was dropped on SSE. An attacker who learns (or a victim who leaks) a `session_id` could connect to the message endpoint and dispatch event handlers that execute with the victim's identity and state. This is fixed in djust 1.0.7. Each SSE session is bound to its owning principal at creation and cross-principal access is rejected; SSE session creation is additi

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  11. CVE-2026-61597

    Mittel · CVSS 5.1EPSS 0,41%Korrektur verfügbar

    djust is vulnerable to stored/reflected XSS via javascript: URLs in built-in component template tags

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, many djust built-in component template tags (`djust.components.templatetags.*`) render a developer/user-supplied URL into an `href` / `action` attribute, HTML-escaping it with `conditional_escape` but never validating the URL scheme. HTML escaping prevents attribute breakout but does not neutralize a `javascript:` URI (which needs no escapable characters), so a URL value of `javascript:alert(document.cookie)` lands verbatim in `<a href="javascript:alert(document.cookie)">` and executes in the victim's session

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  12. CVE-2026-61593

    Hoch · CVSS 8.1EPSS 0,21%Korrektur verfügbar

    djust has Cross-Site Request Forgery on the Server-Sent-Events transport: a cross-origin page can drive a victim-authenticated SSE session

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, the SSE client→server POST endpoints are `@csrf_exempt` and the SSE GET stream endpoint had no Origin check, so a cross-origin page could drive a victim-cookie-authenticated SSE session: force the victim's browser to GET the stream URL (which creates and mounts a LiveView as the victim) and POST to the message endpoint with `credentials: include` to fire state-changing event handlers as the victim. The URL `session_id` is client-chosen (validated only for UUID *format*), so it is not a CSRF token, and a JSON b

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  13. CVE-2026-61595

    Hoch · CVSS 7.7EPSS 0,39%Korrektur verfügbar

    djust: Multi-tenant isolation fails open on the WebSocket/SSE path, disclosing other tenants' data

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, `djust.tenants` isolation was enforced only on the HTTP path. The current tenant was stored in `threading.local()` and set exclusively by the HTTP-only `TenantMiddleware`, so on the live (WebSocket/SSE) path `get_current_tenant()` was always `None` during mount and every event handler — and the tenant-aware `QuerySet` manager failed OPEN (returned the unfiltered queryset, ignoring `STRICT_MODE`), disclosing every tenant's rows to whoever held the socket. `threading.local` was additionally shared across connect

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  14. CVE-2026-61598

    Hoch · CVSS 7.1EPSS 0,43%Korrektur verfügbar

    Client mass-assignment of arbitrary view attributes via the default dj-model update_model handler

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, `djust.mixins.model_binding.ModelBindingMixin` provides a default `update_model` event handler and is part of the LiveView base MRO, so every LiveView exposes it. It `setattr`s a view attribute whose name is client-supplied (`field`), gated only by: reject `_`-prefixed names; reject a 14-entry denylist of framework internals (`FORBIDDEN_MODEL_FIELDS`); optional `allowed_model_fields` which defaults to None = allow all; and `hasattr` existence. As a result, a client can set any public, existing view attribute —

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  15. CVE-2026-61590

    Hoch · CVSS 7.4EPSS 0,36%Korrektur verfügbar

    djust's observability endpoints are network-exposed: the localhost gate is an opt-in middleware the docs omit, and the views enforce only DEBUG

    djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, djust's observability endpoints expose live view/session state and a remote method-invocation surface (`eval_handler`). The localhost restriction was an opt-in middleware that the documented setup omits; the views themselves enforced only `DEBUG`. In the misconfigured-but-documented scenario (DEBUG on, middleware not installed) a non-localhost client could read live application state and invoke handlers remotely. This issue is fixed in djust 1.0.7. The localhost restriction is enforced in-view on every observa

    • Auf 1.0.7 aktualisieren
    Veröffentlicht Aktualisiert
  16. CVE-2026-55571

    Hoch · CVSS 8.2EPSS 0,51%Korrektur verfügbar

    djust authentication bypass: a login_required / on_mount LiveView mount redirect does not close the WebSocket, allowing an unauthenticated client to dispatch event-handler calls

    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

    • Auf 1.0.4 aktualisieren
    Veröffentlicht Aktualisiert

Prüfen Sie Ihren Server

Gleichen Sie Ihren installierten Stack und seine Versionen mit den aktuellen Sicherheitsmeldungen ab.

Prüfen Sie Ihren Server →