Zapscape: KVM 게스트-호스트 탈출 및 LPE를 위한 최신 Linux 취약점
VIRTUALIZATION
/dev/kvm은 RHEL과 같은 일부 Linux 배포판에서 모든 사용자에게 쓰기 권한이 허용(world-writable)되어 있습니다.
Zapscape는 KVM x86/x86_64 게스트가 호스트로 탈출하여 호스트에서 root 권한으로 명령을 실행할 수 있게 하는 KVM 탈출(escape) 취약점입니다. Zapscape는 x86 코드 경로 내 Kernel-based Virtual Machine의 shadow MMU 에뮬레이션 코드에 존재하는 use-after-free 취약점을 중심으로 발생합니다.
오늘의 발표와 함께, 해당 취약점에 대한 화려한 그래픽 및 관련 정보와 더불어, 무기화(weaponized)된 형태는 아니지만 공개적인 개념 증명 (PoC, Proof of Concept) 예시도 함께 제공되었습니다.
영향을 받는 Linux 커널 버전은 2020년 중반부터 MMU 페이지를 사용 가능하게 만든 후 유효하지 않거나 오래된 root를 확인하여 이 문제가 수정된 7월 21일까지입니다.
KVM 탈출 (KVM escape): 게스트 측의 동작만으로 공격자는 자신의 VM을 실행 중인 호스트를 침해할 수 있습니다. 예를 들어, 퍼블릭 클라우드에서 단 하나의 인스턴스만 임대한 공격자가 호스트 커널을 패닉(panic) 상태로 만들어 동일한 물리적 머신에 있는 다른 모든 테넌트 VM을 다운시키거나 (DoS), 호스트에서 root 권한으로 코드를 실행하여 호스트와 그 위의 모든 게스트를 장악할 수 있습니다 (RCE).
LPE: RHEL과 같은 배포판에서는 /dev/kvm이 모든 사용자에게 쓰기 권한(0666)이 있으므로, 권한이 없는 사용자도 이 취약점을 LPE (Local Privilege Escalation, 로컬 권한 상승)로 사용하여 root 권한을 획득할 수 있습니다. LPE로 사용될 경우 호스트 측의 VMM ioctls를 사용할 수 있어, 익스플로잇(exploit)이 더 쉽고 안정적으로 변합니다.
Zapscape에 대한 더 자세한 내용은 Zapscape GitHub 저장소를 통해 확인할 수 있습니다.