🔍 CVE-2026-44000

6.5
CVSS Score
MEDIUM
2026-05-13
2026-06-17 10:50
✅ 완료

🇰🇷 한글 설명

vm2는 Node.js 샌드박스의 경계 우회 취약점으로, 호스트 Promise 해결을 통해 호스트 객체의 정체성이 샌드박스 내부로 전달될 수 있습니다. 샌드박스 내부에서 호스트 객체와 직접 상호작용하고 WeakMap을 이용한 ID 검사 및 상태 변조가 가능하며, 3.11.0 이상에서 수정되었습니다.

💡 쉬운 설명

vm2 샌드박스의 보안 장벽을 우회하여 공격자가 샌드박스 내부에서 외부 시스템의 객체에 직접 접근할 수 있습니다. Promise 메커니즘의 결함으로 인해 격리가 제대로 작동하지 않는 문제입니다.

🇺🇸 원문 (English)

vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, a sandbox boundary violation in vm2 allows host object identity to cross into the sandbox through host Promise resolution. When a host-side Promise that resolves to a host object is exposed to the sandbox, the value delivered to the sandbox .then() callback preserves host identity. This allows the sandbox to interact with the host object directly, including performing identity checks using host-side WeakMap and mutating host object state from inside the sandbox. This behavior occurs because the Promise fulfillment wrapper uses ensureThis() instead of the stronger cross-realm conversion path (from() / proxy wrapping). If no prototype mapping is found, ensureThis() returns the original object. As a result, objects resolved by host Promises can cross the sandbox boundary without proper isolation. This vulnerability is fixed in 3.11.0.

📍 영향받는 시스템

vm2 < 3.11.0

⚔️ 공격 벡터

호스트 Promise를 샌드박스에 노출하여 .then() 콜백에서 호스트 객체 참조를 획득하고 직접 조작

🛡️ 대응 방법

vm2를 3.11.0 이상으로 업데이트 (npm install vm2@latest)

🔧 검증 코드

설치된 vm2 버전이 3.11.0 이상이면 버전이 출력되고, 3.10.x 이하면 아무 출력도 없습니다.

Shell / Script
npm list vm2 2>/dev/null | grep vm2 | awk '{print $NF}' | grep -E '^3\.(1[1-9]|[2-9][0-9]|[1-9][0-9]{2,})'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js