🇰🇷 한글 설명
Node.js 26 환경에서 실행되는 vm2 버전 3.10.1부터 3.11.6 사이에서 샌드박스 탈출 취약점이 발견되었습니다. WebAssembly 관련 함수를 악용하여 호스트 환경의 Promise와 Symbol.species를 조작함으로써, 공격자가 호스트의 process 객체에 접근하여 파일 시스템 등 시스템 권한을 획득할 수 있습니다.
💡 쉬운 설명
안전하게 격리되어 있어야 할 가상 환경(샌드박스)의 벽을 뚫고 실제 컴퓨터 시스템에 침입할 수 있는 심각한 보안 결함입니다. 공격자가 이 취약점을 이용하면 격리된 프로그램이 내 컴퓨터의 파일을 읽거나 수정하는 등의 위험한 행동을 할 수 있습니다.
🇺🇸 원문 (English)
vm2 versions 3.10.1 through 3.11.6 contain a sandbox escape reachable from a default `new VM()` sandbox when running on Node.js 26. WebAssembly.compileStreaming and WebAssembly.instantiateStreaming can produce a raw host-realm Promise that rejects with a host-realm error object; by controlling Symbol.species via Promise.prototype.finally, sandbox code receives that raw host error, walks from the host error constructor to the host Function constructor, and recovers the real host `process` object, gaining host Node.js capabilities (e.g. access to host modules such as fs) in the context of the process running the sandbox. No NodeVM, require permission, host object injection, or otherwise unsafe configuration is required. This is a bypass of the fix for GHSA-6j2x-vhqr-qr7q, which removed the JSPI entry points WebAssembly.promising and WebAssembly.Suspending. The issue is fixed in 3.11.7.
📍 영향받는 시스템
vm2 versions 3.10.1 through 3.11.6 (running on Node.js 26)
⚔️ 공격 벡터
WebAssembly 함수와 Promise.prototype.finally를 이용한 Symbol.species 조작을 통한 호스트 process 객체 탈취
🛡️ 대응 방법
vm2 버전을 3.11.7 이상으로 즉시 업데이트하십시오.
🔧 검증 코드
명령어 결과에 취약한 버전 범위가 출력되면 해당 시스템은 보안 업데이트가 필요한 상태입니다.
npm list vm2 | grep -E 'vm2@3\.(10\.[1-6]|11\.[0-6])'