🇰🇷 한글 설명
Node.js용 샌드박스 라이브러리인 vm2의 3.11.4 이전 버전은 WebAssembly JSPI 환경에서 비동기 코드 실행 시 샌드박스 탈출 및 임의 코드 실행 취약점이 존재합니다. 공격자는 Promise species 메커니즘을 우회하여 호스트 프로세스의 거부 객체를 노출시키고 샌드박스 경계를 무력화할 수 있습니다.
💡 쉬운 설명
vm2 라이브러리의 구버전은 외부 코드가 실행될 때 보안 격리 장치를 뚫고 호스트 시스템의 코드를 마음대로 실행할 수 있는 치명적인 구멍이 있습니다. 이 문제를 해결하려면 최신 버전으로 업데이트해야 합니다.
🇺🇸 원문 (English)
vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, a sandbox escape vulnerability in vm2 allows arbitrary code execution in the host process when untrusted code is executed with async support on runtimes exposing WebAssembly JSPI (WebAssembly.promising / WebAssembly.Suspending). In the tested configuration, a JSPI-backed Promise can reach Promise.prototype.finally() in a way that bypasses the expected Promise-species hardening and exposes a host-originated rejection object to attacker-controlled species logic, breaking the sandbox boundary. This issue has been patched in version 3.11.4.
📍 영향받는 시스템
vm2 < 3.11.4 (WebAssembly JSPI 지원 환경)
⚔️ 공격 벡터
비동기 지원이 활성화된 환경에서 악성 코드를 vm2 샌드박스 내에서 실행하여 Promise species 메커니즘을 악용
🛡️ 대응 방법
vm2 패키지를 버전 3.11.4 이상으로 즉시 업그레이드하십시오.
🔧 검증 코드
출력된 버전 번호가 3.11.4보다 낮으면 취약한 버전이므로 업그레이드가 필요합니다.
npm list vm2 2>/dev/null | grep vm2