🇰🇷 한글 설명
vm2 3.9.6~3.10.5 버전의 bridge에서 호스트 영역의 변경 가능한 프록시를 노출하여, 악의적 코드가 otherReflectSet()과 otherReflectDefineProperty()를 통해 Object.prototype, Array.prototype, Function.prototype을 변조할 수 있는 취약점입니다. 3.11.0에서 수정되었습니다.
💡 쉬운 설명
vm2 샌드박스의 보안 울타리가 우회되어 악의적인 코드가 JavaScript의 핵심 기반 객체들을 조작할 수 있습니다. 이는 같은 시스템의 모든 JavaScript 실행 코드에 영향을 미칩니다.
🇺🇸 원문 (English)
vm2 is an open source vm/sandbox for Node.js. From 3.9.6 to 3.10.5, vm2's bridge exposes mutable proxies for real host-realm intrinsic prototypes and then forwards sandbox writes into the underlying host objects with otherReflectSet() and otherReflectDefineProperty(), which lets attacker-controlled JavaScript running in a default VM or inherited NodeVM mutate shared host Object.prototype, Array.prototype, and Function.prototype from inside the sandbox This vulnerability is fixed in 3.11.0.
📍 영향받는 시스템
vm2 v3.9.6 ~ v3.10.5 (v3.11.0 이상 안전)
⚔️ 공격 벡터
vm2 또는 NodeVM에서 실행하는 악의적 JavaScript가 샌드박스 내부에서 호스트 프로토타입 체인 변조
🔧 검증 코드
출력된 vm2 버전이 3.11.0 이상이면 안전, 3.10.5 이하이면 취약
npm list vm2 2>/dev/null | grep vm2