🇰🇷 한글 설명
virtualenv 21.7.13 이전 버전에서 생성된 activate 스크립트가 이미 이스케이프된 값을 추가로 따옴표로 감싸는 취약점이 발견되었습니다. 공격자가 조작된 가상 환경 경로를 사용하면 스크립트 실행 시 따옴표가 조기에 종료되어 쉘 메타문자가 명령어로 해석될 수 있으며, 이를 통해 사용자 권한으로 임의 코드가 실행될 수 있습니다.
💡 쉬운 설명
가상 환경을 실행하는 스크립트가 특수 문자를 처리하는 과정에서 실수로 보안 구멍이 생겼습니다. 나쁜 의도로 만들어진 폴더 이름이 포함된 가상 환경을 실행하면 해커가 내 컴퓨터에서 몰래 명령어를 실행할 수 있습니다.
🇺🇸 원문 (English)
virtualenv is a tool for creating isolated virtual python environments. Prior to 21.7.13, the generated activate (bash and zsh) and activate.fish scripts place values already escaped by shlex.quote inside an additional quoted context. In the bash and zsh script, a crafted virtual environment path reaches __VIRTUAL_ENV__ when a relocated environment's recorded directory is absent; in the fish script, crafted Tcl or Tk library paths reach __TCL_LIBRARY__ or __TK_LIBRARY__. The surplus quotes can terminate the data-only quoted run and leave shell metacharacters parsed as commands when a user sources the activation script, allowing code execution with that user's privileges. This issue is fixed in version 21.7.13.
📍 영향받는 시스템
virtualenv 21.7.13 미만 버전
⚔️ 공격 벡터
조작된 경로(bash/zsh의 __VIRTUAL_ENV__ 또는 fish의 __TCL_LIBRARY__/__TK_LIBRARY__)가 포함된 가상 환경의 activate 스크립트를 사용자가 직접 실행(source)할 때 발생
🛡️ 대응 방법
virtualenv를 최신 버전인 21.7.13 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 21.7.13보다 낮으면 취약한 상태입니다.
pip show virtualenv | grep Version