#VE virtualization exception (in-guest EPT fault delivery)¶
Seçili EPT (SLAT) fault'larını VM-exit yerine guest'e bir #VE exception (vector 20) olarak teslim etmek; böylece in-guest kod, second-level address-translation fault'larını hypervisor'a gidip gelmeden handle edebiliyor.
Mechanism¶
Note
Hardware-assisted bir hypervisor'da izolasyon invariant'ı şudur:
Second-Level Address Translation (SLAT / Intel EPT) tabloları host'a aittir;
guest, host belleğine ancak EPT'nin host-physical frame'lere map ettiği
guest-physical address'ler üzerinden dokunabilir. Normalde bir EPT permission
fault, host'un (ring -1) çözmesi için bir VM-exit'i zorlar. Virtualization
Exception (#VE, vector 20) ise host'un belirli EPT violation'ları guest IDT
üzerinden teslim edilen bir in-guest exception'a çevirmesine izin veren bir
Intel VT-x feature'ıdır; guest privilege'da handle edilir. Bu, VM-exit gidiş
gelişini ortadan kaldırır ama delege edilmiş bir trust surface getirir: guest
artık EPT-fault bilgisini görür ve üzerine işlem yapabilir (VE information
area aracılığıyla — VMCS'in seçtiği bir guest-physical page). Bunun kapısı,
EPT entry'sinin "convertible" bit'i ve EPT-violation #VE VM-execution
control'üdür.
Kavramsal olarak #VE bir delivery'dir, bir bypass değil: EPT entry'sinin yasakladığı erişimi veremez. Bir knowledge base için güvenlik açısından önemli nokta şudur: #VE, altp2m views ve EPT split'i stealth hooking ve introspection için yeterince ucuz kılan donanım substrate'idir — ve tersinden, hatalı bir #VE handler ya da yanlış set edilmiş bir convertible bit, bir translation fault'unu ilk kimin gözlemleyeceğini değiştirir.
Walkthrough¶
Bu entry kavramsaldır; public reference Intel SDM Vol. 3 ("Virtualization Exceptions") ve Xen altp2m tasarımıdır. Temsili akış:
- Host,
EPT-violation #VEsecondary VM-execution control'ünü set eder ve VMCS'teki VE information address alanını bir guest-physical page'e programlar. - Host, seçili EPT leaf entry'lerini convertible işaretler (#VE çevrimini bastıran suppress-#VE bit 63'ü temizler).
- Guest, EPT permission'ı ihlal edilen bir GPA'ya erişir. Bir VM-exit yerine CPU, exit qualification / GPA / GLA'yı VE-info area'ya yazar ve guest IDT üzerinden #VE (vector 20) yükseltir.
- Guest #VE handler'ı VE-info area'yı okur, bir aksiyon alır (örn. bir
introspection agent erişimi kaydeder ya da
VMFUNCile bir altp2m view değiştirir), sonra geri döner.
Beklenen gözlem: host telemetry'sinde EPT_VIOLATION VM-exit'leri olarak
görünecek EPT fault'ları, bunun yerine guest-handled #VE event'leri olarak görünür;
o page'ler için host VM-exit sayıları düşerken guest IDT'sinde vector 20 entry'si
canlanır.
Warning
Bir guest delivery'yi maskeleyebilir: bir #VE işlenirken CPU, VE-info area'da temizlenene kadar başka #VE'yi bastıran bir bit set eder. Bunu asla temizlemeyen hatalı ya da hostile bir handler, sonraki convertible fault'ları yeniden VM-exit'e çevirir — detection üzerine düşünürken hatırlanacak bir nokta.
Detection¶
- Host tarafı: hâlâ permission-restricted olan page'ler için
EPT_VIOLATIONVM-exit'lerinde ani bir düşüş,EPT-violation #VEcontrol'ünün set olmasıyla korele ise, fault handling'in in-guest'e delege edildiğine işaret eder. - Guest-integrity tarafı (anti-introspection): bir IDT vector-20 handler'ının ve map edilmiş bir VE-info page'in varlığı, #VE-tabanlı monitoring ya da altp2m'in aktif olduğunun sinyalidir.
-
VE'yi monitoring için kullanan hypervisor'lar, VE-info page programlamasını ve¶
bununla eşleşen EPTP/altp2m switch'lerini loglamalıdır.
Mitigation¶
-
VE, VMCS control'ü başına opt-in'dir;
hypervisor tüm SLAT fault'larını VM-exit olarak tutar (in-guest delegation yok).EPT-violation #VE'yi set etmeyen bir¶ - VE-info area'yı host-controlled guest-physical space'te tut ve guest handler'larının EPT permission'larını etkileyememesini doğrula — #VE bilgi teslim eder, asla bir EPT entry'sini gevşetmesine izin verilmemeli.
- Nested kurulumlarda, L1 hypervisor'ın convertible bit'i ve VE-info area'yı doğru virtualize etmesini sağla ki bir L2 guest fault delivery'sini desenkronize edemesin.
References¶
- Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 3C, "Convertible EPT Violations / Virtualization Exceptions (#VE)" (§25.5.6; suppress-#VE bit 63, EPT-violation #VE control, VE information area). https://xem.github.io/minix86/manual/intel-x86-and-64-manual-vol3/o_fe12b1e2a880e0ce-1089.html
- Xen Project, "Stealthy monitoring with Xen altp2m" — #VE/altp2m introspection. https://xenproject.org/2016/04/13/stealthy-monitoring-with-xen-altp2m