🇰🇷 한글 설명
pyLoad 웹 인터페이스가 신뢰할 수 없는 X-Forwarded-Proto 헤더를 검증 없이 수용하여 전역 Flask 설정의 SESSION_COOKIE_SECURE 값을 매 요청마다 변경하고 경쟁 조건을 유발합니다. 공격자는 이를 악용해 다른 사용자의 세션 쿠키 보안을 약화시키거나 평문 HTTP 배포에서 세션 거부 공격을 수행할 수 있습니다.
💡 쉬운 설명
pyLoad 다운로드 프로그램의 웹 관리 화면이 가짜 보안 신호를 받아들여 사용자 로그인 정보 보호를 실수로 약화시킵니다. 해커가 이를 악용하면 다른 사용자의 계정 탈취나 서비스 중단을 일으킬 수 있습니다.
🇺🇸 원문 (English)
pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev98, the set_session_cookie_secure before_request handler in src/pyload/webui/app/__init__.py reads the X-Forwarded-Proto header from any HTTP request without validating that the request originates from a trusted proxy, then mutates the global Flask configuration SESSION_COOKIE_SECURE on every request. Because pyLoad uses the multi-threaded Cheroot WSGI server (request_queue_size=512), this creates a race condition where an attacker's request can influence the Secure flag on other users' session cookies — either downgrading cookie security behind a TLS proxy or causing a session denial-of-service on plain HTTP deployments. This vulnerability is fixed in 0.5.0b3.dev98.
📍 영향받는 시스템
pyLoad 0.5.0b3.dev98 이전의 모든 버전
⚔️ 공격 벡터
위조된 X-Forwarded-Proto 헤더를 포함한 HTTP 요청을 다중 스레드 환경으로 전송하여 다른 사용자의 세션 쿠키 보안 설정 변조
🛡️ 대응 방법
pyLoad를 0.5.0b3.dev98 이상으로 즉시 업그레이드
🔧 검증 코드
VULNERABLE이 출력되면 0.5.0b3.dev98 미만 버전으로 취약, SAFE가 출력되면 패치된 버전 또는 최신 버전
pip show pyload-ng 2>/dev/null | grep Version | awk '{print $2}' | grep -E '^0\.5\.0b3\.(dev[0-9]|dev[1-9][0-9])$' && echo 'VULNERABLE' || echo 'SAFE or UNKNOWN'