CVE-2026-61599
CVE-2026-61599 · 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 `startswith` matching. An unauthenticated WebSocket client (the WS handshake does not require auth; per-view auth runs only after import + instantiate) can therefore send a `mount` / `live_redirect_mount` / `url_change` frame (or an SSE mount) with `view = "<any.importable.module>.AnyName"` and cause the server to import — and execute the top-level code of — any importable Python module by name. Version 1.0.7 fixes the issue with a fail-closed resolution gate (`djust._view_resolution.is_view_import_allowed`): a client view path resolves only if (a) its module is already loaded (`sys.modules` — so resolving runs no new code; URL-routed views loaded by URLconf at startup keep working with zero config) or (b) it matches `LIVEVIEW_ALLOWED_MODULES` on a module-segment boundary (explicit opt-in for lazily-imported views). The gate runs before `__import__` at all three sinks (+ defense-in-depth inside `_instantiate_view`). As a workaround, set `LIVEVIEW_ALLOWED_MODULES` to the narrow list of modules that contain your mountable LiveView classes. (Note: pre-patch the allowlist is `startswith`-matched and the import still precedes the subclass check, so this is mitigation, not a complete fix.)
CVSS 8.8 · Высокий · EPSS 0,6% · Есть исправление
- Опубликовано
- Обновлено
Стек: python
Затронутые продукты и версии
djust
- Версии
- < 1.0.7: Затронуто
Нет опубликованного исправления
djust PyPI
- Версии
- 0.1.0
- 0.1.2
- 0.1.3
- 0.1.4
- 0.1.5
- 0.1.6
- 0.1.7
- 0.1.8
- 0.1.9
- 0.2.0
- 0.2.1
- 0.2.2
- 0.3.0
- 0.3.1
- 0.3.2
- 0.3.4
- 0.3.5
- 0.3.6
- 0.3.7
- 0.3.8
- 0.4.0
- 0.4.1
- 0.4.2
- 0.4.3
- 0.4.4
- 0.9.0
- 0.9.1
- 0.9.2
- 0.9.4
- 0.9.5
- 0.9.6
- 0.9.7
- 1.0.0
- 1.0.0rc1
- 1.0.0rc10
- 1.0.0rc11
- 1.0.0rc12
- 1.0.0rc13
- 1.0.0rc14
- 1.0.0rc15
- 1.0.0rc16
- 1.0.0rc17
- 1.0.0rc18
- 1.0.0rc2
- 1.0.0rc3
- 1.0.0rc4
- 1.0.0rc6
- 1.0.0rc7
- 1.0.0rc8
- 1.0.0rc9
- 1.0.1
- 1.0.1rc1
- 1.0.2
- 1.0.2rc1
- 1.0.2rc2
- 1.0.2rc3
- 1.0.3
- 1.0.3rc1
- 1.0.3rc2
- 1.0.4
- 1.0.4rc1
- 1.0.5
- 1.0.5rc1
- 1.0.5rc2
- 1.0.5rc3
- 1.0.5rc4
- 1.0.5rc5
- 1.0.6
- Затронутые диапазоны версий
- ECOSYSTEM: < 1.0.7
Обновитесь до 1.0.7
djust PyPI
- Версии
- 0.1.0
- 0.1.2
- 0.1.3
- 0.1.4
- 0.1.5
- 0.1.6
- 0.1.7
- 0.1.8
- 0.1.9
- 0.2.0
- 0.2.1
- 0.2.2
- 0.3.0
- 0.3.1
- 0.3.2
- 0.3.4
- 0.3.5
- 0.3.6
- 0.3.7
- 0.3.8
- 0.4.0
- 0.4.1
- 0.4.2
- 0.4.3
- 0.4.4
- 0.9.0
- 0.9.1
- 0.9.2
- 0.9.4
- 0.9.5
- 0.9.6
- 0.9.7
- 1.0.0
- 1.0.0rc11
- 1.0.1
- 1.0.2
- 1.0.3
- 1.0.4
- 1.0.5
- 1.0.6
- Затронутые диапазоны версий
- ECOSYSTEM: < 1.0.7
Обновитесь до 1.0.7