Pure Software Engineer :)
[CCS 2011] Eliminating the Hypervisor Attack Surface for a More Secure Cloud 본문
[CCS 2011] Eliminating the Hypervisor Attack Surface for a More Secure Cloud
HelloJaewon 2012. 5. 4. 11:05NoHype 에 대한 prototype 제시 (on Intel Nehalem quad-core processor)
VM의 life time을 creation, bootup, execution, shutdown 으로 보고 아래의 4가지 단계로 prototype을 나눠서 design 함
1. VM Creation
- pre-allocation (CPU, memory)
Dom0는 Core 0번에 고정
CPU : pin a VM to a set of cores
memory : pre-setting Extended Page Table(EPT)
- virtualized I/O device (여기서는 NIC 만)
PCI pass through mechanism(?)을 통해... -> Xen에서 지원된다는데...
2. Guest VM bootup
- Temporary hypervisor -> to support system discovery (device, processor capability)
(i) device discovery
|
xen 에서는 device discovery 하기 위해 특정 메모리에 query(read) 하면 trap이 발생하여 hypervisor가 받아서 Dom0에 있는 QEMU에 넘겨준다. (현재 NIC만 discover 되게 QEMU를 수정함) |
- device discovery 이후에는 I/O APIC(Advanced Programmable Interrupt Controller)를 통해 interrupt vector 설정.
- 이때, I/O APIC 고치는 것 역시, 실제로 interrupt가 발생하면 hypervisor가 받아서 guest VM에게 다시 mapping 시키는 것으로 Xen에서 동작하는데, Xen과 guest OS를 수정 하여 서로 다른 VM끼리 interrupt vector가 안 겹치도록 함.
(ii) processor capabilities (clock frequency, core identifier, processor’s features)
- processor’s feature -> CPUID instruction -> 이것 역시 trap으로 hypervisor에게 넘어가는데 linux kernel을 수정하여 bootup 때 알아 두었다가 CPUID instruction을 system call로 대체함.
3. Hypervisor Disengagement
- booting 끝나면 temporary hypervisor도 사라져야 함.
- xen이 더 이상 IPI(Inter Processor Interrupt) 를 안 보내도록
- guest가 core에 대한 full control을 가짐
- VMCS(Virtual Machine Control Structure) setting
-> virtualized APIC access bit to ‘0’
- mapping EPT
4. Guest Execution / Shutdown
- VM 스스로 shutdown
- force shutdown of VM
- by creating VMCS, VM should exit when the core receive non-maskable interrupt (NMI)
Security Analysis
- Remaining Hypervisor Attack Surface
- system management(VM creation/termination 등) 여전히 temporary hypervisor 요구함
- hypervisor를 고치고 OS kernel도 수정한 이미지를 provider가 제공함으로써 customer는 OS kernel 에 대한 control 없음.
- malicious customer가 VM exit를 통해 hypervisor context에서 뭔가 하려고 하면 VM exit 하는 순간 해당 guest를 termination 시킴 (ex. 다른 VM의 memory access)
- VM to VM Attack Surface
- 현재 hardware로는 IPI를 막을 방법이 없음.
- 그래서 malicious 사용자가 다른 사용자에게 계속 IPI를 보냄으로써 DOS Attack을 할 수 있다.
- 하지만 실제로 실험 해본 결과(Apache, SPEC2006) 크게 영향은 없었다.
Conclusion
- Hypervisor는 system의 가장 높은 privilege를 가지고 있다.
- Cloud와 같이 여러 사용자가 share 하는 상황에서 hypervisor가 attack target이 되고 있음.
- 기존의 접근 방식은...
minimizing hypervisor, new processor architecture, hardening hypervisor, direct access to hardware 등을 생각함
- NoHype는 아예 hypervisor를 없이 system virtualization 하도록 함
- 이를 통해 처음부터 공격할 hole을 없애는 효과를 가짐.
- 아직 hardware 지원의 부족으로 (SR-IOV) device는 NIC만 Virtualize