Skip to content

Out-of-Hypervisor (OoH) nested introspection

Normalde yalnızca bir hypervisor'ın kullandığı hardware virtualization feature'larını (örn. Intel Page Modification Logging) nested-virtualization tesisatı üzerinden guest OS'a doğru yukarı açma; böylece guest'in kendi process'leri — ya da guest hypervisor dışındaki bir introspection katmanı — tam bir nested VM çalıştırmadan bunları kullanabilir.

Mechanism

Note

Klasik nested virtualization, bir guest'in hypervisor çalıştırabilmesi için bütün virtual hardware'i açar. Out-of-Hypervisor (OoH) granularity'yi tersine çevirir: eksiksiz bir ikinci VMX katmanını emulate etmek yerine, OoH guest OS'a hypervisor-oriented bir feature'ı tek tek açar ki process'leri ondan faydalanabilsin. Motive edici örnek, bir hypervisor'ın verimli dirty-page tracking (live migration) için kullandığı Intel PML (Page Modification Logging)'dir. OoH, PML'yi guest OS'un kendisi tarafından kullanılabilir hâle getirir.

İki tasarım öneriliyor: Shadow PML (SPML) ve Extended PML (EPML). Tesisat, nested-virt translation'ı (L0 hypervisor'ın bir L1'in bir feature'a erişimini aracılaması) yeniden kullanır ama tam nesting'in kısasında durur — yalnızca hedeflenen feature'ın control/log structure'ları virtualize edilir ve yüzeye çıkarılır. Introspection için bu güçlüdür: guest hypervisor'ın "dışındaki" bir monitor, tam bir nested hypervisor stack'i olmadan bir guest hakkında feature seviyesinde gözlem primitive'leri (dirty-page log'ları vb.) elde edebilir. Host'un hâlâ sahip olduğu invariant: feature'ın control structure'larını virtualize eder ve guest tarafından sağlanan parametreleri validate etmelidir, tıpkı nested EPT shadowing'inde olduğu gibi.

Walkthrough

Public reference: Bitchebe & Tchana, "Out of Hypervisor (OoH): When Nested Virtualization Becomes Practical" (arXiv 2202.13483). Kavramsal akış (PML örneği):

  1. L0, PML feature'ını tam nesting yerine OoH üzerinden L1/guest'e açar.
  2. SPML: L0, guest'in PML log/buffer'ını shadow'lar, onu kendi dirty-tracking'inden doldurur ki guest OS PML'ye sahipmiş gibi dirty-page kayıtlarını okusun.
  3. EPML: tasarım PML'yi genişletir ki guest seviyesindeki dirty logging daha doğrudan üretilsin, shadowing'e kıyasla overhead'i azaltır.
  4. Guest OS (ya da OoH tabanlı bir introspection tool'u), kendi optimizasyonlarını/monitoring'ini sürmek için dirty-page log'unu tüketir — nested bir VM boot etmeden.

Beklenen gözlemlenebilir: eksiksiz bir nested hypervisor'ı emulate etmekten daha düşük overhead ile guest tarafından kullanılabilir dirty-page tracking (PML tarzı).

Warning

Virtualization feature'larını yukarı doğru açmak host'un validation yüzeyini genişletir: feature'ın control structure'ları artık guest-etkili olduğundan kontrol edilmelidir, aksi hâlde feature L0'a giden yeni bir path olur.

Detection

  • L0 tarafı: OoH feature açılması ve shadow-structure bakımı host'a görünürdür; kötü biçimlendirilmiş guest feature-control parametreleri izlenecek anomalidir.

Mitigation

  • Guest tarafından sağlanan tüm feature control/log parametrelerini L0'da validate et.
  • Tam nesting yerine yalnızca gereken belirli feature'ı (least privilege) ve yalnızca güvenilir guest'lere aç.

References

  • S. Bitchebe, A. Tchana — "Out of Hypervisor (OoH): When Nested Virtualization Becomes Practical." https://arxiv.org/abs/2202.13483