Skip to content

Virtualization-Based Security (VBS)

Windows, compromise olmuş bir kernel'in en hassas kod ve data'ya ulaşamaması için OS'u trust level'larına ayırmak üzere hypervisor'ı kullanır.

Mechanism

Invariant

VBS tek bir mimari kaymaya dayanır: NT kernel artık makinedeki en yüksek privilege değildir. Windows hypervisor'ı (Hyper-V) OS'un altında çalışır ve execution'ı Virtual Trust Level'lara partition'lar. VTL0 (Normal World) konvansiyonel NT kernel'i ve driver'ları barındırır; VTL1 (Secure World) Secure Kernel'i ve isolated trustlet'leri barındırır. Hypervisor, Second-Level Address Translation (SLAT / EPT / RVI) kullanarak VTL1'e VTL0'ın tahrif edemeyeceği bir memory görünümü verir — VTL0 page table'ları VTL1-owned physical page'lere erişimi basitçe ifade edemez.

VBS'nin saldırgan için aştığı güvenlik sınırı, "ring-0 her şeye sahiptir" varsayımıdır. VTL0'da arbitrary kernel read/write ile bile, bir saldırgan şunları yapamaz:

  • VTL1 (Secure Kernel) onaylamadan bir page'i executable yapmak — bu, HVCI / Memory Integrity'nin temelidir; burada W^X daha yüksek bir privilege seviyesinden zorlanır, böylece kernel page'leri hiçbir zaman aynı anda writable ve executable olmaz.
  • VTL1-protected sırları okumak (örn. Credential Guard'ın NTLM hash'leri / Kerberos ticket'ları isolated bir LSA trustlet'inde yaşar).
  • VTL1-protected read-only kernel data'sını değiştirmek (Kernel Data Protection'ın substrat'ı).

DMA yeteneğine sahip cihazlar bir IOMMU/SMMU'nun arkasında oturmalıdır; böylece kötü amaçlı bir cihaz SLAT'i bypass edip VTL1 belleğine doğrudan yazamaz.

Walkthrough

Kavramsal olarak, trust model şöyle katmanlanır:

   VTL1 (Secure World)        VTL0 (Normal World)
   ┌──────────────────┐       ┌──────────────────┐
   │ Secure Kernel     │      │ NT kernel + drivers│
   │ + trustlets       │      │ (assumed breakable)│
   │ (HVCI, CredGuard, │      │                    │
   │  KDP, HyperGuard) │      │                    │
   └─────────┬─────────┘      └─────────┬──────────┘
             │   Windows Hypervisor (Ring -1)        │
             └────────── SLAT / IOMMU ───────────────┘

Yüksek seviyeli boot/enforcement akışı (kamuya açık Microsoft dokümantasyonundan):

  1. UEFI Secure Boot, measured, signed bir boot chain başlatır; hypervisor ve Secure Kernel trusted boot'un parçası olarak yüklenir.
  2. Hypervisor SLAT'i enable eder ve VTL1 physical page'lerini VTL0'a erişilemez olarak işaretler.
  3. Memory Integrity (HVCI) açıkken, bir kernel page'i executable işaretlemek için gelen herhangi bir VTL0 isteği Secure Kernel'e devredilir; Secure Kernel, executable bir mapping'e izin vermeden önce page'i code-integrity policy'sine karşı doğrular. Executable page'ler hiçbir zaman writable bırakılmaz.

Warning

VBS bir containment sınırıdır, bir vulnerability eliminatörü değil. Secure Kernel'deki bir bug, HVCI policy'sinden önce yüklenen signed-ama-vulnerable bir VTL0 driver'ı ya da zayıf firmware/SMM (aşağıdaki WSMT/SMM hardening'e bakın) garantiyi aşındırabilir.

Detection

  • Konfigürasyon / posture telemetry'si: Win32_DeviceGuard'ı sorgula (msinfo32 → "Virtualization-based security" → Running ve HVCI/Credential Guard'ı listeleyen SecurityServicesRunning). EDR'ler ve MDM baseline'ları, VBS/HVCI Running'dan Off'a geçtiğinde alert vermeli.
  • Registry izleme: HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard ve ...\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity altındaki Device Guard key'lerini Enabled'ın temizlenmesi için izle — unsigned bir driver yüklemenin yaygın bir habercisi.
  • Event log'ları: bloklanan/unsigned image load'ları için Hyper-V / Kernel-Integrity (Microsoft-Windows-CodeIntegrity) olayları; boot-configuration değişiklikleri (hypervisorlaunchtype'a yapılan bcdedit düzenlemeleri).
  • Anomali: VBS'nin ani disable edilmesi, ardından bir reboot ve yeni bir third-party kernel driver, klasik bir "bring-your-own-vulnerable-driver" staging pattern'idir.

Mitigation

  • VBS + Memory Integrity (HVCI)'yi enable et ve kilitle. Group Policy (Turn on Virtualization Based Security) ya da MDM üzerinden enforce et; UEFI lock'u tercih et ki setting OS'tan sessizce toggle edilemesin.
  • Hardware baseline'ını karşıla: VT-x/AMD-V, SLAT (EPT/RVI), IOMMU (VT-d/AMD-Vi/SMMU), TPM 2.0, Secure Boot ve WSMT uyumlu SMM hardening'e sahip 64-bit CPU.
  • Tamamlayıcı VTL1 servisleri ekle: Credential Guard, Kernel Data Protection, HyperGuard (Secure Kernel PatchGuard) ve bir vulnerable-driver blocklist'i.
  • Driver'ları, deployment'tan önce Driver Verifier'ın Code Integrity check'leri ve HLK Hypervisor Code Integrity Readiness testi kullanarak Memory Integrity'ye karşı doğrula.

References