🇰🇷 한글 설명
pyLoad의 parse_urls API 함수가 입력된 URL에 대한 검증을 수행하지 않아, ADD 권한을 가진 인증된 사용자가 내부 네트워크 리소스, 클라우드 메타데이터, 로컬 파일 등에 임의로 접근할 수 있는 취약점입니다. file://, gopher://, dict:// 등 다양한 프로토콜을 악용하여 서버 측 요청 위조(SSRF) 공격이 가능합니다.
💡 쉬운 설명
pyLoad 프로그램의 파일 다운로드 기능에서 사용자가 악의적인 링크를 입력하면 서버가 검증 없이 그 링크에 접속해서 내부 정보를 읽을 수 있습니다. ADD 권한이 있는 사용자만 이 공격을 수행할 수 있습니다.
🇺🇸 원문 (English)
pyLoad is a free and open-source download manager written in Python. In 0.5.0b3.dev96 and earlier, the parse_urls API function in src/pyload/core/api/__init__.py fetches arbitrary URLs server-side via get_url(url) (pycurl) without any URL validation, protocol restriction, or IP blacklist. An authenticated user with ADD permission can make HTTP/HTTPS requests to internal network resources and cloud metadata endpoints, read local files via file:// protocol (pycurl reads the file server-side), interact with internal services via gopher:// and dict:// protocols, and enumerate file existence via error-based oracle (error 37 vs empty response).
📍 영향받는 시스템
pyLoad 0.5.0b3.dev96 이전 버전
⚔️ 공격 벡터
ADD 권한을 가진 인증된 사용자가 parse_urls API를 통해 file://, http://, gopher://, dict:// 등의 프로토콜로 내부 리소스 접근
🛡️ 대응 방법
pyLoad를 최신 버전으로 업그레이드하고, 입력 URL에 대한 화이트리스트 검증 및 프로토콜 제한을 구현
🔧 검증 코드
Version 번호가 0.5.0b3.dev96 이상이면 안전하며, 미설치 상태이거나 버전 정보가 없으면 재설치 필요
pip show pyload 2>/dev/null | grep -i version || echo 'pyload not installed'