CVE-2026-61599 in djust정보

요약

\~에 의해 VulDB • 2026. 09. 17.

djust는 Rust 기반의 성능을 제공하며 Django에서 Phoenix LiveView 스타일의 반응형 서버 측 렌더링을 제공합니다. 버전 1.0.7 이전에서는 djust 라이브 트랜스포트가 클라이언트가 공급한 점(.)으로 구분된 경로를 호출하여 `__import__(module_path, ...)`를 통해 마운트할 LiveView를 해결합니다. 모듈이 가져와질 때(임포트 사이드 이펙트) 상위 레벨 코드가 실행되며, 이는 프레임워크가 해결된 객체가 `LiveView` 서브클래스인지 확인하고 모든 뷰별 인증을 수행하기 전에 발생합니다. 이를 포함해야 하는 `LIVEVIEW_ALLOWED_MODULES` 허용 목록은 오픈 폴링(fail-open) 방식(`if allowed_modules:` — 설정이 비어 있으면 건너뜀, 프레임워크 기본값)이며 느슨한 `startswith` 매칭을 사용합니다. 따라서 인증되지 않은 WebSocket 클라이언트(WS 핸드셰이크는 인증을 요구하지 않음; 뷰별 인증은 임포트 및 인스턴스화 후에만 실행됨)는 `view = "<any.importable.module>.AnyName"`과 같은 `mount` / `live_redirect_mount` / `url_change` 프레임(SSE 마운트 포함)을 전송하여 서버로 하여금 이름으로 지정된 모든 import 가능한 Python 모듈의 상위 레벨 코드를 임포트하고 실행하도록 할 수 있습니다. 버전 1.0.7은 오픈 폴링 대신 클로즈드(fail-closed) 해결 게이트(`djust._view_resolution.is_view_import_allowed`)를 사용하여 이 문제를 수정합니다: 클라이언트 뷰 경로는 (a) 해당 모듈이 이미 로드된 경우(`sys.modules` — 따라서 해결 시 새 코드가 실행되지 않음; 시작 시 URLconf에 의해 로드된 URL 라우팅 뷰는 구성 없이 계속 작동함) 또는 (b) `LIVEVIEW_ALLOWED_MODULES`와 모듈 세그먼트 경계에서 일치하는 경우에만 해결됩니다(지연 임포트되는 뷰에 대한 명시적 옵인). 이 게이트는 모든 3개의 싱크(`__import__`) 실행 전에 실행되며, `_instantiate_view` 내부에도 방어 심화(defense-in-depth) 조치가 있습니다. 우회 방법으로 `LIVEVIEW_ALLOWED_MODULES`를 마운트 가능한 LiveView 클래스가 포함된 모듈의 좁은 목록으로 설정하십시오. (참고: 패치 전 허용 목록은 `startswith`로 매칭되며 임포트는 서브클래스 확인 전에 발생하므로, 이는 완전한 수정이 아닌 완화 조치입니다.)

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

GitHub M

예약하다

2026. 07. 10.

모더레이션

수락

항목

VDB-406267

EPSS

0.00000

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!