🇰🇷 한글 설명
pyLoad 다운로드 관리자의 패키지 템플릿에서 사용자가 제공한 링크 URL이 HTML 이스케이프 없이 DOM에 직접 삽입되어 DOM 기반 XSS 취약점 발생. 악의적인 URL을 제출한 공격자가 다운로드 페이지를 보는 모든 사용자의 브라우저에서 임의의 JavaScript 코드 실행 가능.
💡 쉬운 설명
pyLoad에서 다운로드 링크를 저장할 때 보안 검증을 하지 않아, 해커가 악의적인 코드가 담긴 링크를 넣으면 그 페이지를 보는 사람들의 컴퓨터에서 해커 코드가 자동 실행됨. 로그인 정보, 파일, 쿠키 등이 탈취될 수 있음.
🇺🇸 원문 (English)
pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev100, the packages.js template at src/pyload/webui/app/themes/modern/templates/js/packages.js:172 interpolates a stored link URL into a template literal inside single-quoted HTML and then writes the result to the DOM via $(div).html(html). No escaping runs between the API value and innerHTML. An attacker (Alice) who can submit a package link puts a single quote plus event handler into the URL, breaks out of the attribute, and executes JavaScript in every operator's browser that opens the downloads view. The theme does not set a Content Security Policy that restricts inline script or event handlers. This vulnerability is fixed in 0.5.0b3.dev100.
📍 영향받는 시스템
pyLoad 0.5.0b3.dev100 미만 버전
⚔️ 공격 벡터
공격자가 패키지 링크 URL에 싱글쿠트와 onclick 등 이벤트 핸들러를 포함시켜 제출하면, 해당 다운로드 페이지를 보는 모든 사용자 브라우저에서 임의 스크립트 실행
🛡️ 대응 방법
pyLoad를 0.5.0b3.dev100 이상 버전으로 업그레이드
🔧 검증 코드
출력된 버전이 0.5.0b3.dev100 이상이면 패치됨, 그 미만이면 취약함. 버전 번호를 의미 있는 비교: 0.5.0b3.dev100 미만(예: 0.5.0b3.dev99)은 위험
pip show pyload 2>/dev/null | grep Version | awk '{print $NF}'