🇰🇷 한글 설명
uv 0.8.5 이하 버전에서 원격 ZIP 파일이 중앙 디렉토리와 대조되지 않고 처리되어, 공격자가 여러 패키지 설치 도구에서 서로 다른 내용으로 추출되는 악의적인 ZIP을 생성할 수 있습니다. 또한 다중 계층 ZIP(내부에 또 다른 ZIP 포함)을 활용하여 다양한 설치 도구를 대상으로 공격할 수 있습니다.
💡 쉬운 설명
ZIP 파일을 다운로드할 때 실제 내용을 제대로 확인하지 않아서, 공격자가 일부 프로그램에서는 안전해 보이지만 다른 프로그램에서는 위험한 파일을 넣을 수 있습니다. 다양한 도구를 속일 수 있는 가짜 ZIP 파일들을 만들 수 있다는 뜻입니다.
🇺🇸 원문 (English)
uv is a Python package and project manager written in Rust. In versions 0.8.5 and earlier, remote ZIP archives were handled in a streamwise fashion, and file entries were not reconciled against the archive's central directory. An attacker could contrive a ZIP archive that would extract with legitimate contents on some package installers, and malicious contents on others due to multiple local file entries. An attacker could also contrive a "stacked" ZIP input with multiple internal ZIPs, which would be handled differently by different package installers. The attacker could choose which installer to target in both scenarios. This issue is fixed in version 0.8.6. To work around this issue, users may choose to set UV_INSECURE_NO_ZIP_VALIDATION=1 to revert to the previous behavior.
📍 영향받는 시스템
uv 버전 0.8.5 이하 (Python 패키지 및 프로젝트 매니저)
⚔️ 공격 벡터
악의적으로 조작된 ZIP 아카이브를 원격에서 제공하여 설치 시점에 다양한 내용으로 추출되도록 하는 ZIP 폴리글롯(Polyglot) 공격
🛡️ 대응 방법
uv를 0.8.6 이상으로 업그레이드하거나 임시방편으로 환경변수 UV_INSECURE_NO_ZIP_VALIDATION=1 설정
🔧 검증 코드
Version이 0.8.6 이상이면 안전, 0.8.5 이하면 즉시 업그레이드 필요
pip show uv | grep Version