무슨 일이 있었나
vm2의 NodeVM 샌드박스는 'https' 내장 모듈을 허용하도록 구성된 경우 격리된 프록시 대신 호스트의 실제 https.globalAgent 객체를 샌드박스된 코드에 노출합니다. 특정 메서드 호출이 읽기 전용 래퍼를 우회하고 실시간 호스트 객체에 직접 전달되기 때문입니다.
왜 중요한가
vm2는 LLM 생성 또는 사용자 제출 코드를 샌드박스하기 위해 일부 JavaScript 기반 AI 에이전트 및 코드 해석기 도구에서 사용되는 일반적인 구성 요소입니다; 샌드박스의 호스트 객체 누출은 에이전트식 코드 실행 기능이 의존하는 격리 보장을 훼손하며, 잠재적으로 에이전트의 코드 실행 샌드박스에서 호스트 프로세스로의 권한 상향 또는 측면 이동을 가능하게 합니다.
공격 경로
NodeVM이 require('https')를 명시적으로 허용하도록 구성된 경우, 내장 모듈 로더는 호스트 모듈을 읽기 전용 프록시로 래핑하지만 Agent.prototype.on()과 같은 메서드 호출은 샌드박스된 사본이 아닌 기본 실제 호스트 객체로 전달되어 샌드박스된/신뢰할 수 없는 코드에 호스트 프로세스의 실시간 https.globalAgent를 노출하고 추가 샌드박스 탈출 프리미티브를 가능하게 합니다.
영향받는 시스템
vm2 버전 3.11.3부터 3.11.6
완화 방안
vm2 3.11.8 이상으로 업그레이드 (이 및 12개 관련 샌드박스 탈출 CVE 해결). vm2의 유지보수자들은 또한 LLM 에이전트 생성 스크립트와 같은 진정으로 신뢰할 수 없는 코드에 대해 유일한 보안 경계로서 동일 프로세스 JS 샌드박싱을 피할 것을 권장합니다 — 별도의 프로세스/컨테이너/VM을 사용합니다.