🇰🇷 한글 설명
djust 1.0.7 미만 버전에서 클라이언트 페이지에 포함된 state_json 스냅샷에 대한 무결성 검증이 누락되었습니다. 공격자는 클라이언트 측에서 이 데이터를 조작하여 관리자 권한을 획득하거나 계정 ID 및 잔액과 같은 비즈니스 상태를 임의로 변경할 수 있습니다.
💡 쉬운 설명
웹사이트가 사용자의 상태를 저장할 때 암호화된 확인 도장이 없어서, 사용자가 직접 값을 조작할 수 있는 문제입니다. 이를 통해 관리자 권한을 얻거나 돈을 늘리는 등의 해킹이 가능합니다.
🇺🇸 원문 (English)
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 djust 1.0.7. State snapshots are signed; unsigned or forged snapshots are rejected on the back-navigation restore path. As a workaround, do not enable state snapshots; do not hold authorization/ownership state in public view attributes.
📍 영향받는 시스템
djust version 1.0.7 미만
⚔️ 공격 벡터
클라이언트 측의 state_json 데이터를 조작하여 서버로 재전송하는 방식
🛡️ 대응 방법
djust를 1.0.7 버전 이상으로 업데이트하거나, 상태 스냅샷 기능을 비활성화하고 민감한 정보를 공개 속성에 저장하지 마십시오.
🔧 검증 코드
출력된 Version이 1.0.7 미만이면 취약한 상태입니다.
pip show djust 2>/dev/null | grep -E 'Version'