🇰🇷 한글 설명
vm2 3.11.3부터 3.11.6 버전에서 crypto 내장 모듈을 허용할 경우 NodeVM 샌드박스가 호스트의 crypto 모듈에 노출되는 취약점이 발견되었습니다. 공격자는 crypto.setEngine() 함수를 악용하여 임의의 네이티브 라이브러리를 로드함으로써 샌드박스를 탈출하고 호스트 프로세스에서 임의의 코드를 실행할 수 있습니다.
💡 쉬운 설명
안전하게 격리되어 있어야 할 프로그램 실행 환경이 보안 구멍을 통해 컴퓨터 전체를 제어할 수 있는 권한을 얻게 되는 문제입니다. 공격자가 특수한 파일을 이용해 격리 벽을 뚫고 컴퓨터에 직접 명령을 내릴 수 있습니다.
🇺🇸 원문 (English)
vm2 3.11.3 through 3.11.6 exposes the host Node.js crypto module to a NodeVM sandbox when the crypto builtin is allowed. The module is presented via a recursive read-only proxy, but its callable exports still execute with host-process authority. Sandboxed JavaScript can therefore call crypto.setEngine() with a filesystem path to an attacker-supplied native library (for example, one bundled in an untrusted plugin package already written to disk); OpenSSL asks the operating-system dynamic loader to load the file, and the library's constructor executes native code in the host process before engine-symbol validation rejects it. Exploitation requires only the crypto builtin and does not require fs, process, module, child_process, worker_threads, vm, or inspector access, resulting in a sandbox escape and arbitrary native code execution. Fixed in 3.11.7.
📍 영향받는 시스템
vm2 3.11.3 ~ 3.11.6
⚔️ 공격 벡터
crypto 내장 모듈의 setEngine 함수를 이용한 악성 네이티브 라이브러리 로드 및 코드 실행
🛡️ 대응 방법
vm2 버전을 3.11.7 이상으로 업데이트
🔧 검증 코드
출력된 버전이 3.11.7 미만(3.11.3~3.11.6)이면 취약한 상태입니다.