🇰🇷 한글 설명
Node.js용 오픈 소스 샌드박스인 vm2에서 Promise.prototype.then 및 Promise.prototype.catch 콜백 함수의 제약을 우회할 수 있는 취약점이 발견되었습니다. 이 취약점으로 인해 공격자는 샌드박스를 탈출하여 임의의 코드를 실행할 수 있습니다.
💡 쉬운 설명
vm2의 취약점으로 인해 샌드박스를 탈출하여 악성 코드를 실행할 수 있습니다. Node.js를 사용하는 시스템에서 vm2 버전 3.10.2 이전의 버전을 사용하는 경우 영향을 받을 수 있습니다. 이 취약점은 CRITICAL 등급으로 평가되며, 즉시 패치가 필요합니다.
🇺🇸 원문 (English)
vm2 is an open source vm/sandbox for Node.js. In vm2 prior to version 3.10.2, `Promise.prototype.then` `Promise.prototype.catch` callback sanitization can be bypassed. This allows attackers to escape the sandbox and run arbitrary code. In lib/setup-sandbox.js, the callback function of `localPromise.prototype.then` is sanitized, but `globalPromise.prototype.then` is not sanitized. The return value of async functions is `globalPromise` object. Version 3.10.2 fixes the issue.
📍 영향받는 시스템
Node.js에서 vm2 버전 3.10.2 이전의 버전을 사용하는 시스템
⚔️ 공격 벡터
Promise.prototype.then 및 Promise.prototype.catch 콜백 함수의 제약 우회
🛡️ 대응 방법
vm2 버전 3.10.2 이상으로 업그레이드
🔧 검증 코드
로컬 Python 환경에서 실행 가능합니다. Python과 pip가 설치되어 있어야 합니다. vm2 패키지의 버전을 확인하여 취약점 여부를 판단합니다.
python -c "import pkg_resources; print('vm2' in [p.project_name for p in pkg_resources.working_set] and pkg_resources.get_distribution('vm2').version < '3.10.2')" && echo {"result": "취약", "reason": "vm2 버전이 3.10.2 미만"} || echo {"result": "양호", "reason": "vm2 버전이 3.10.2 이상"}