🔍 CVE-2026-92948

9.9
CVSS Score
CRITICAL
2026-09-17
2026-09-18 20:17
✅ 완료

🇰🇷 한글 설명

vm2 3.9.6 이상 3.11.6 이하 버전에서 Node.js 24 이상 환경 사용 시 발생하는 샌드박스 탈출 취약점입니다. NodeVM의 내장 모듈 허용 목록 우회 메커니즘을 악용하여, 공격자가 호스트 프로세스에서 임의의 자바스크립트 코드를 실행할 수 있습니다.

💡 쉬운 설명

안전한 가상 공간(샌드박스) 안에서만 작동해야 할 프로그램이 보안 벽을 뚫고 실제 컴퓨터 시스템에 직접 명령을 내릴 수 있는 결함입니다. 공격자가 이 허점을 이용하면 가상 공간을 벗어나 컴퓨터를 마음대로 조종할 수 있습니다.

🇺🇸 원문 (English)

vm2 versions >= 3.9.6 and <= 3.11.6 are affected by a NodeVM builtin allowlist bypass that permits a sandbox escape on Node.js 24 and newer when the embedder explicitly allows the node:test builtin (e.g. require: { builtin: ['node:test'] }). On Node.js 24+, module.builtinModules exposes the scheme-only key node:test, which is not covered by vm2's family-based DANGEROUS_BUILTINS protection, so it is stored in the generic host-passthrough loader. Because requireImpl() in lib/setup-node-sandbox.js strips a single 'node:' prefix before the builtin lookup, sandbox code calling require('node:node:test') resolves to the stored node:test key and receives a readonly proxy to the host module. Calls to node:test.run() are forwarded to the host implementation, which spawns a separate Node process for process-isolated test execution and passes through attacker-controlled execArgv values; supplying --eval=<JavaScript> therefore executes arbitrary JavaScript in an unrestricted host Node process outside the NodeVM sandbox. Fixed in vm2 3.11.7.

📍 영향받는 시스템

vm2 versions >= 3.9.6 and <= 3.11.6 (Node.js 24+ 환경에서 발생)

⚔️ 공격 벡터

node:test 모듈의 prefix 우회 기법을 이용해 호스트의 execArgv 값을 조작하여 임의 코드 실행

🛡️ 대응 방법

vm2 버전을 3.11.7 이상으로 업데이트하십시오.

🔧 검증 코드

출력된 vm2의 버전이 3.11.7 미만(3.9.6 ~ 3.11.6 사이)이면 취약한 상태입니다.

Shell / Script
npm list vm2 | grep vm2

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

💻 영향받는 소프트웨어

Node.js