
KVM/x86 게스트-호스트 탈출 익스플로잇 (CVE-2026-53359) - 섀도우 MMU 에뮬레이션의 use-after-free 취약점을 이용합니다. 호스트 커널 패닉 유발 및 Intel/AMD 아키텍처에서의 완전한 탈출을 위한 PoC 포함.

이 문서는 Hyunwoo Kim (@v4bel)이 발견하고 보고한 Januscape (CVE-2026-53359) 취약점에 대해 설명합니다. 이는 KVM/x86 환경에서 게스트가 호스트로 탈출할 수 있게 하는 KVM 탈출 취약점입니다. 공개된 정보에 따르면, 이는 단일 아키텍처에 국한되지 않고 Intel과 AMD 모두에서 트리거 가능한 최초의 게스트-호스트 익스플로잇 연구입니다.
Januscape는 KVM/x86의 섀도 MMU 에뮬레이션에서 발생하는 use-after-free 취약점입니다. 게스트 측 작업만으로 버그를 트리거하여 호스트 커널의 섀도 페이지를 손상시킬 수 있으며, 신뢰할 수 없는 게스트를 수용하고 중첩 가상화를 노출하는 KVM/x86 호스트, 특히 멀티테넌트 x86 퍼블릭 클라우드(GCP, AWS 등)의 게스트-호스트 격리를 위협할 수 있습니다.
실제로 Januscape는 Google kvmCTF에서 0-day 익스플로잇으로 성공적으로 사용되었습니다.
자세한 기술 정보는 여기를 참조하십시오.
[!NOTE] 이 취약점을 [email protected]에 보고한 후 합의된 엠바고가 종료되어 익스플로잇이 oss-security에 게시되고 이 Januscape 문서가 공개되었습니다. 공개 일정에 대해서는 기술 상세 문서를 참조하십시오.
게스트 VM 내에서 PoC를 실행하면 호스트 커널 패닉을 트리거할 수 있습니다. 통제된 환경에서 작동하는 전체 탈출 익스플로잇도 존재하지만, 현재는 공개되지 않았으며 아주 먼 미래에 공개할 계획입니다.
RHEL과 같은 배포판에서는 /dev/kvm이 전역 쓰기 가능(0666)이므로, 일반 사용자도 이 취약점을 이용해 신뢰할 수 있는 LPE로 루트 권한을 얻을 수 있습니다. 하지만 그렇게 하는 것은 쓰레기에 금을 지불하는 것과 같아서 다루지 않겠습니다.
# sudo apt-get install -y build-essential linux-headers-$(uname -r)
# make
[Intel]
# sudo rmmod kvm_intel; sudo insmod poc.ko
[AMD]
# sudo rmmod kvm_amd; sudo insmod poc.ko amd=1
[*] poc step 4/4: race live -- host DoS triggering
...
kernel BUG at arch/x86/kvm/mmu/mmu.c (pte_list_remove)
Comm: qemu-kvm
이 PoC는 정확한 정보를 제공하기 위한 것입니다. 테스트 권한이 없는 시스템에서는 사용하지 마십시오.
Januscape (CVE-2026-53359)는 2032a93d66fa (2010-08-01)부터 81ccda30b4e8 (2026-06-16)까지의 범위를 포함합니다.
즉, 이 취약점은 약 "16년" 동안 잠들어 있었습니다.
총 두 가지 영향이 있습니다:
/dev/kvm이 전역 쓰기 가능(0666)이므로, 권한이 없는 사용자도 이 취약점을 신뢰할 수 있는 LPE로 사용하여 루트 권한을 얻을 수 있습니다.멀티테넌트 게스트를 수용하고 중첩 가상화를 지원하는 x86 KVM 호스트를 운영하거나, 그 위에서 인스턴스를 사용하는 경우 81ccda30b4e8 패치가 호스트 커널에 적용되었는지 확인하십시오.
아니요. 이 취약점은 Intel 및 AMD 아키텍처에서만 트리거됩니다. 하지만 이전에 공개된 ITScape (CVE-2026-46316)를 아직 패치하지 않았다면 arm64 호스트도 취약하므로 신속히 패치를 적용하십시오.
아니요. 일반적으로 공개되는 QEMU 탈출 취약점과 달리 Januscape는 커널 내 KVM에서 발생하므로 QEMU의 에뮬레이션과 무관하게 트리거됩니다. 이 때문에 자체 가상화 스택을 구현하고 사용하는 대규모 퍼블릭 클라우드에도 위협이 될 수 있습니다.
네. 모듈을 삽입하려면 게스트 커널 권한이 필요합니다. 퍼블릭 클라우드에서 인스턴스를 할당받으면 일반적으로 자신의 VM에 대한 루트 권한이 있으므로 이 조건이 충족됩니다. 게스트 루트가 없는 시나리오에서는 Dirty Frag와 같은 LPE와 체인되어야 합니다.