본문 바로가기
apple silicon

what is KVM?

by pwnhub 2025. 9. 5.

https://github.com/google/security-research/blob/master/kvmctf/rules.md

이전 글에서 type 1 hypervisor 으로 분류하여 소개하였다.

but KVM은 타 type 1 hypervisor와 구조적인 차이가 존재하여 type 1.5 와 같은 애매한 포지션에 놓여있다.

 

우선 type 1 은 일반적으로 host os 라는 것이 없다. hw 다음에 바로 hypervisor가 올라가고 그 위에 os가 올라가는 구조인데, kvm의 경우 linux kernel 에 포함된 기능이다. 활성화 시 host os 로 linux가 돌아가며, host가 vm을 생성한 경우 host kernel의 KVM으로 구동되어 hw 자원 접근이 용이하다.

proxmox, azure, aws 등의 대부분의 major type 1 hypervisor가 KVM 기반으로 제작되었다고 한다.

 

https://github.com/torvalds/linux

 

GitHub - torvalds/linux: Linux kernel source tree

Linux kernel source tree. Contribute to torvalds/linux development by creating an account on GitHub.

github.com

 

KVM 코드도 linux repo 내부에 존재한다.

 

결국 리눅스 커널을 hypervisor로 사용하는 개념이다.

 

KVM은 보통 단독으로 사용하지 않는다.

qemu와 함께 사용되는데, qemu는 평소에 type 2 hypervisor 로 작동한다. 그러나 KVM + qemu 스택으로 사용한 경우, type 1 처럼 작동하며 매우 빠르다.

커널이 직접 관여하기에 메모리 맵핑과 하드웨어 가상화의 오버헤드가 매우 적다. 베어메탈에 유사한 퍼포먼스를 낸다.

 

KVM은 linux 의 커널 모듈로써 구현된다.

/dev/kvm 이라는 인터페이스가 열려있고 아래와 같이 사용할 수 있다.

 

또한 KVM은 guest 내에서 출발한 vmcall을 핸들링 할 수 있다.

vmcall에 대해서도 나중에 다루도록 하겠다.

 

KVM은 intel, amd, arm 등 다양한 아키텍처를 커버하고 있다.

KVM ctf 또한 구글에서 운영중이며, zeroday를 사용하여 익스한다면 큰 포상금을 얻을 수 있다.

pwn2own 에서는 KVM 대상은 없지만, vmware EXSI와 microsoft Hyper-v 가 대상으로 올라와있다.

 

https://github.com/google/security-research/blob/master/kvmctf/rules.md

 

security-research/kvmctf/rules.md at master · google/security-research

This project hosts security advisories and their accompanying proof-of-concepts related to research conducted at Google which impact non-Google owned code. - google/security-research

github.com

DoS 가 20,000 usd 이다.

 

익스 시 25만 usd 이상이지만... kvmctf 운영 1년 째 서브미션이 없다.

amd cpu도 인정하지 않고 intel 특정 cpu만 지원한다고 하며, guest to host 공격만 인정한다.

또한 virtio 취약점과 qemu 취약점을 사용하는 것은 인정되지 않는다.

intel KVM 코드는 매우 무르익었으며 code base가 넓지 않다.

15만줄? 정도 뿐이다.

 

이후 virtio와 memory translation을 정리하겠다

'apple silicon' 카테고리의 다른 글

zeroday in KVM ( arm linux kernel ) - How to report (1)  (0) 2025.09.05
hypervisor virtio  (0) 2025.09.05
hypervisor type 1 vs type 2  (0) 2025.09.05