🇰🇷 한글 설명
virtualenv는 격리된 Python 가상 환경을 만드는 도구입니다. 21.14.9부터 21.14.13 버전까지의 bash bin/activate 스크립트는 promptvars와 POSIX 모드가 모두 비활성화된 상태에서 공격자가 제어하는 --prompt 값을 달러 기호와 백틱 이스케이프 없이 PS1에 복사할 수 있습니다. 이후 promptvars를 다시 활성화하거나 set -o posix를 실행하거나 내보낸 PS1을 상속하는 대화형 자식 bash를 시작하면 저장된 VIRTUAL_ENV_PROMPT 값의 명령 치환이 확장되어 환경을 활성화한 사용자 권한으로 명령이 실행될 수 있습니다. 이 문제는 21.14.13 버전에서 수정되었습니다.
💡 쉬운 설명
가상 환경을 활성화할 때 사용하는 프롬프트 이름에 악성 명령이 숨어 있으면 특정 조건에서 그 명령이 실행될 수 있습니다. 해당 버전의 virtualenv를 사용하는 개발자나 서버 관리자는 즉시 업데이트해야 합니다.
🇺🇸 원문 (English)
virtualenv is a tool for creating isolated virtual python environments. From 21.14.9 until 21.14.13, the bash bin/activate script can copy an attacker-controlled --prompt value into PS1 without escaping dollar signs or backticks when both promptvars and POSIX mode are disabled during activation. Re-enabling promptvars, running set -o posix, or starting an interactive child bash that inherits the exported PS1 can then expand command substitution in the stored VIRTUAL_ENV_PROMPT value and execute commands as the user who activates the environment. This issue is fixed in version 21.14.13.
📍 영향받는 시스템
virtualenv 21.14.9 이상 21.14.13 미만 버전을 bash로 사용하는 모든 Linux/macOS 환경
⚔️ 공격 벡터
공격자가 조작한 --prompt 값을 포함한 가상 환경을 사용자가 활성화하면, 이후 특정 셸 설정이나 자식 bash 실행 시 명령 치환이 실행됨
🛡️ 대응 방법
virtualenv를 21.14.13 이상으로 업데이트하고 신뢰할 수 없는 출처의 가상 환경 활성화를 피하십시오.
🔧 검증 코드
출력된 Version 값이 21.14.13 미만이면 취약하므로 업데이트가 필요하고, 21.14.13 이상이면 수정된 버전입니다.
pip show virtualenv 2>/dev/null | grep -i '^version'