Skip to content

#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ış:

  1. Host, EPT-violation #VE secondary VM-execution control'ünü set eder ve VMCS'teki VE information address alanını bir guest-physical page'e programlar.
  2. Host, seçili EPT leaf entry'lerini convertible işaretler (#VE çevrimini bastıran suppress-#VE bit 63'ü temizler).
  3. 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.
  4. Guest #VE handler'ı VE-info area'yı okur, bir aksiyon alır (örn. bir introspection agent erişimi kaydeder ya da VMFUNC ile 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_VIOLATION VM-exit'lerinde ani bir düşüş, EPT-violation #VE control'ü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; EPT-violation #VE'yi set etmeyen bir

    hypervisor tüm SLAT fault'larını VM-exit olarak tutar (in-guest delegation yok).
  • 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