[CVE] CVE-2026-47131
CVE-2026-47131에서 CWE-913 관련 CRITICAL 등급의 취약점이 공개되었으며, 보안 영향 가능성이 있어 영향 범위와 패치 여부를 확인해야 합니다.
주의: 이 글은 AI 자동 작성되었습니다. 반드시 재검증해야 합니다. 내용의 오류가 있을 경우 댓글 작성 부탁드립니다.
핵심 요약
CVE-2026-47131은 vm2의 샌드박스 격리 실패로 인해 호스트 환경의 코드를 실행할 수 있게 되는 취약점이다. 설명에 따르면, 특정 Buffer.call.call(...) 조합과 Node.js의 ERRINVALIDARGTYPE 에러를 이용해 호스트의 TypeError 생성자를 획득할 수 있고, 그 결과 샌드박스를 탈출할 수 있다. 영향은 원격 코드 실행(RCE) 수준으로 이어질 수 있으며, CVSS 3.1 기준 10.0점(CRITICAL)으로 평가되었다.
패치 정보는 소스 기준으로 vm2 3.11.4에서 수정된 것으로 제공된다.
기술 배경
vm2는 Node.js용 오픈 소스 VM/샌드박스 구현체다. 이런 계열의 소프트웨어는 애플리케이션 로직과 실행 환경을 분리해, 신뢰할 수 없는 코드를 제한된 컨텍스트에서 실행하도록 설계된다. 공격 관점에서는 단순한 입력 검증 우회보다 더 위험한 지점이 존재한다. 샌드박스 내부에서 호스트 객체나 호스트의 내장 생성자에 접근할 수 있게 되면, 격리 모델 자체가 무너질 수 있기 때문이다.
이번 취약점은 설명상 Buffer.call.call({}.lookupGetter, Buffer, "proto"), Buffer.call.call({}.lookupSetter, Buffer, "proto"), 그리고 Node.js의 ERRINVALIDARGTYPE 에러를 결합해 호스트의 TypeError 생성자를 얻는 흐름으로 이어진다. 일반적으로 샌드박스 탈출은 내부 객체 참조가 외부 런타임의 권한 있는 객체로 이어질 때 발생하며, 이 취약점도 그런 유형의 격리 붕괴로 볼 수 있다.
CWE 분류는 CWE-913으로 제시되어 있다. 이는 컨테이너나 샌드박스 같은 분리 환경에서의 부적절한 제어와 관련된 문제로 이해할 수 있다.
공격자 관점에서 볼 부분
공격자의 관점에서 가장 중요한 점은 이 취약점이 단순한 정보 노출이 아니라 샌드박스 경계를 넘어서는 실행 권한 획득으로 이어진다는 것이다. vm2를 신뢰 경계로 사용하는 서비스라면, 공격자는 애플리케이션이 허용한 스크립트 실행 지점을 통해 내부 실행 환경에서 호스트 객체에 접근하려고 시도할 수 있다. 한 번 호스트의 TypeError 생성자 같은 권한 있는 객체를 얻으면, 이후에는 샌드박스 바깥에서 임의 코드 실행으로 이어질 가능성이 생긴다.
이런 유형의 취약점은 보통 입력이 곧바로 코드 실행으로 연결되는 구조보다 더 위험하다. 왜냐하면 서비스 운영자 입장에서는 “샌드박스 안에서만 실행된다”는 가정 자체가 보안 경계의 핵심이기 때문이다. 따라서 공격자는 권한 상승보다 먼저 격리 우회 자체를 목표로 삼을 가능성이 높다.
공개 익스플로잇 신호는 소스 기준으로 확인되지 않았다.
영향 범위
소스 데이터 기준으로 영향 대상은 vm2이며, 취약점 설명상 3.11.4 이전 버전이 영향을 받는다.
영향의 성격은 다음과 같이 정리할 수 있다.
샌드박스 탈출 가능 호스트 환경에서 임의 코드 실행 가능 기밀성, 무결성, 가용성에 중대한 영향 가능
다만 구체적인 배포 환경, 실제 사용 방식, 노출된 인터페이스, 그리고 상위 애플리케이션의 권한 구성에 따라 실질적 영향은 달라질 수 있다. 영향을 받는 제품 목록은 소스에 제공되지 않아 확인 필요다.
대응 및 패치
소스 기준으로 이 취약점은 vm2 3.11.4에서 수정되었다. 따라서 vm2를 사용하는 환경은 가능한 한 해당 수정 버전으로 업데이트하는 것이 우선이다.
vm2가 외부 입력을 직접 실행하거나, 테넌트 분리나 코드 실행 제한을 담당하는 위치에 있다면 단순 패치 적용만으로 끝내지 말고, 해당 샌드박스에 의존하는 아키텍처 전체를 다시 점검해야 한다. 특히 신뢰되지 않은 코드를 vm2에 넣어 실행하는 경우, 패치 전후로 격리 가정이 달라질 수 있으므로 운영 영향 검토가 필요하다.
버전 외의 추가 완화책이나 우회 가능성에 대한 정보는 소스에 없어 확인 필요다.
메모
이 취약점은 “샌드박스는 안전하다”는 일반적인 전제를 깨는 전형적인 고위험 사례다. 공격자는 외부 명령 실행 지점보다 더 안쪽, 즉 격리 구현의 경계 자체를 노린다. 그 결과가 호스트 객체 접근과 런타임 탈출로 이어지면, 이후 단계는 사실상 호스트 권한의 코드 실행 문제로 바뀐다.
상태는 Deferred로 제공되었다. 다만 이 상태가 실제 노출도나 악용 난이도를 직접 의미하는 것은 아니므로, 운영 환경에서는 상태값보다도 패치 여부와 사용 방식에 더 집중하는 편이 낫다.
댓글