🇰🇷 한글 설명
vm2는 Node.js 샌드박스 라이브러리로, 3.10.5 버전에서 Promise 생성자를 통한 처리되지 않은 거부(unhandled rejection) 취약점이 발견되어 호스트 프로세스를 강제 종료시킬 수 있습니다. 이전 CVE-2026-22709 패치는 .then()/.catch() 메서드만 정제했으나 Promise executor 경로를 놓쳤으며, 3.11.0 버전에서 완전히 수정되었습니다.
💡 쉬운 설명
Node.js 샌드박스인 vm2에서 악의적인 코드가 Promise를 이용해 호스트 컴퓨터의 Node.js 프로세스를 충돌시킬 수 있습니다. 버전 3.11.0으로 업그레이드하면 해결됩니다.
🇺🇸 원문 (English)
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, a sandbox escape vulnerability in vm2 v3.10.5 allows any sandboxed code to crash the host Node.js process via a single Promise constructor that triggers an unhandled rejection propagating to the host. The fix for CVE-2026-22709 (v3.10.2) only sanitized the onRejected callback in .then() and .catch() overrides and did not address the executor-to-unhandledRejection path. This vulnerability is fixed in 3.11.0.
📍 영향받는 시스템
vm2 < 3.11.0 (all versions prior to 3.11.0)
⚔️ 공격 벡터
Sandboxed code creates a Promise with an executor that triggers an unhandled rejection, which propagates to host process and crashes it
🛡️ 대응 방법
Upgrade vm2 to version 3.11.0 or later
🔧 검증 코드
출력된 버전이 3.11.0 이상이면 안전, 3.10.5 이하면 즉시 업그레이드 필요
npm ls vm2 2>&1 | grep -oE 'vm2@[0-9.]+' | head -1