FICHE CVE

CVE-2026-61589

Publiée le 2026-09-16 · Dernière modification le 2026-09-17

🇫🇷 EN BREF

Les applications Django utilisant la bibliothèque `djust` avant la version 1.0.7 sont concernées. Un attaquant authentifié disposant d'un accès réseau peut potentiellement consulter des données appartenant à d'autres locataires (tenants) si le système est configuré avec `STRICT_MODE=False`. Cette faille est difficile à exploiter en raison de sa grande complexité, mais elle permet une divulgation non autorisée de données significatives.

DÉTAIL DU VECTEUR CVSS

Vecteur d'attaqueRéseau
Complexité d'attaqueÉlevée
Privilèges requisFaibles
Interaction utilisateurAucune
PortéeModifiée
Impact sur la confidentialitéÉlevé
Impact sur l'intégritéAucun
Impact sur la disponibilitéAucun

RÉFÉRENCES

Description officielle du NVD (en anglais)

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). This is fixed in djust 1.0.7. The handshake Host is extracted from the ASGI scope, validated against `ALLOWED_HOSTS` (the same logic as the CSWSH Origin gate, parsed with Django's `split_domain_port` so malformed Hosts are rejected at the boundary), and propagated — with the TLS scheme — into the reconstructed request, so live-path tenant resolution matches HTTP exactly. There is no known workaround on the live path short of upgrading. Users are most exposed when combined with `STRICT_MODE=False`.