🇰🇷 한글 설명
pyLoad는 Python으로 작성된 무료 오픈소스 다운로드 관리자입니다. 0.5.0b3.dev102 이전 버전에서는 관리자가 사용자의 권한이나 비밀번호를 변경해도 기존 Flask 세션이 무효화되지 않아, 로그인 시점의 권한 정보가 세션 수명 동안 유지됩니다. 이로 인해 권한이 회수된 사용자나 이전 비밀번호로 생성된 세션이 계속 사용될 수 있습니다.
💡 쉬운 설명
관리자가 사용자의 권한을 빼앗거나 비밀번호를 바꿔도, 이미 로그인한 사용자의 접속은 끊기지 않습니다. 그래서 권한이 없어진 사용자도 세션이 만료될 때까지 기존 권한으로 계속 작업할 수 있습니다.
🇺🇸 원문 (English)
pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev102, pyLoad does not invalidate existing Flask sessions when an administrator changes a user's permissions or password through /api/set_user_permission or /api/change_password. Api.set_user_permission and Api.change_password update the database, but session authorization continues to use role and permission values copied at login by set_session in webui/app/helpers.py. A user can therefore retain revoked privileges or continue using a session established with an old password for the configured session lifetime. API-key authentication is not affected because that path rereads user data from the database. This issue is fixed in version 0.5.0b3.dev102.
📍 영향받는 시스템
pyLoad 0.5.0b3.dev102 이전 버전
⚔️ 공격 벡터
권한이 회수되었거나 비밀번호가 변경된 사용자가 기존 로그인 세션을 계속 사용하여 권한 없는 기능에 접근
🛡️ 대응 방법
pyLoad를 0.5.0b3.dev102 이상 버전으로 업데이트하고, 권한 변경 후 기존 세션을 강제 종료하기
🔧 검증 코드
출력된 Version 값이 0.5.0b3.dev102 미만이면 취약한 버전이므로 업데이트가 필요하며, 아무것도 출력되지 않으면 pip으로 설치되지 않은 것입니다.
pip show pyload-ng 2>/dev/null | grep -i version