🇰🇷 한글 설명
vm2는 Node.js용 가상머신/샌드박스 오픈소스로, 3.11.0 이전 버전에서 호스트 Object에 접근 가능한 취약점이 존재합니다. 공격자는 HostObject.getOwnPropertySymbols를 이용하여 Symbol(nodejs.util.inspect.custom)을 획득함으로써 샌드박스를 탈출할 수 있습니다. 이 취약점은 버전 3.11.0에서 수정되었습니다.
💡 쉬운 설명
vm2는 Node.js 프로그램을 안전하게 격리된 공간에서 실행하는 도구이지만, 이 버그를 통해 공격자가 격리된 공간을 벗어나 시스템 전체에 접근할 수 있습니다. 버전 3.11.0 이상으로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.0, it is possible to obtain the host Object. There are various ways to use the host Object, to escape the sandbox, one example would be using HostObject.getOwnPropertySymbols to obtain Symbol(nodejs.util.inspect.custom). This vulnerability is fixed in 3.11.0.
📍 영향받는 시스템
vm2 npm 패키지 버전 3.11.0 미만
⚔️ 공격 벡터
악의적인 JavaScript 코드를 vm2 샌드박스에서 실행시킨 후 getOwnPropertySymbols를 이용하여 호스트 객체 심볼에 접근하여 샌드박스 탈출
🔧 검증 코드
출력된 버전 번호가 3.11.0 이상이면 안전하고, 그 미만이면 즉시 업그레이드 필요
npm list vm2 --depth=0 2>/dev/null | grep vm2