Hypervisor Memory Introspection (HVMI external engine)¶
Bitdefender'ın açık kaynak out-of-guest introspection engine'i (libintrocore); guest'in altından EPT kullanarak guest kernel/driver belleğini inceleyen ve koruyan, Xen/KVM/napoca'ya entegre bir motor.
Mechanism¶
Note
HVMI, security logic'i guest'in dışında çalıştırır ve guest kernel'a asla güvenmez — hypervisor'ın gördüğü ham guest RAM üzerinden akıl yürütür. Bunu mümkün kılan invariant, donanımsal second-level address translation'dır: Intel EPT (ya da AMD RVI), host'un hem herhangi bir guest-physical page'i okumasına hem de erişim haklarını guest'in kendi page table'larından bağımsız olarak kısıtlamasına izin verir. Korunan bir guest-physical page'i EPT'de non-writable (ya da non-executable) işaretleyerek, guest'in onu değiştirme girişiminin her biri bir EPT violation VM-exit'i tetikler ve hypervisor bunu introspection engine'e yönlendirir. Engine, kararını gerçek, semantik olarak yeniden kurulmuş state üzerinde verir — guest page table'ları ile CR3'ü walk eder, faulting instruction'ı disassemble eder (bddisasm) ve gerektiğinde emulate edebilir (bdshemu) — böylece bir rootkit, kendi mapping'leri hakkında yalan söyleyerek bir write'ı gizleyemez. Engine guest'in altında yaşadığı için, ring-0'da bile çalışan malware onu göremez ya da devre dışı bırakamaz.
Walkthrough¶
Public HVMI repo'su (github.com/bitdefender/hvmi, Apache-2.0, artık archived/research) ve hvmi.readthedocs.io'ya dayanır.
-
Engine + integrator split. Çekirdek
libintrocore'dur (Linux'talibintrocore.so, Windows'taintrocore.dll) — harici bağımlılığı olmayan, kendi kendine yeten bir engine. İnce bir integrator (hvmiddaemon'ı /daemon/dizinindeki Xen/KVM örneği) engine'i belirli bir hypervisor'a bağlar ve OS abstraction'ı sağlar. Hypervisor, engine'in çağırdığı primitive'leri sunmak zorundadır; örneğin bir guest-physical page'i engine'in address space'ine map etmek için bir MapPhysicalMemory, ayrıca VCPU register'larını sorgulama/değiştirme, EPT access rights'ı set etme ve EPT violation'ları, MSR write'ları, CR write'ları ile trap injection'ı intercept etme. -
Provide guest knowledge (CAMI).
cami/veritabanı, OS'a özgü layout'u (struct offset'leri, exported symbol'ler) sağlar; böylece engine, guest CR3/KPGD resolution ve bir guest page-table walk sonrasında kernel'ı, driver object'lerini ve kritik yapıları konumlandırabilir. -
Arm EPT protections. Engine, HV'den seçilmiş guest-physical page'ler (kernel code/IDT/SSDT, driver page'leri, kritik data) üzerindeki EPT rights'ı kısıtlamasını ister. Kavramsal olarak:
introcore -> integrator: protect GPA range R as read-only
integrator -> hypervisor: set EPT.W = 0 for pages in R
guest writes into R => EPT violation VM-exit => engine.OnEptViolation()
-
Verdict on violation. Exit anında engine, context'i yeniden kurar (bkz. guest-state-reconstruction), write'ı disassemble/emulate eder ve legitimate accessor'ların
exceptions/whitelist'ine başvurur. Illegitimate bir değişiklik (rootkit hook, code injection, credential theft) bloklanır; legitimate olanlara izin verilir ve instruction ileri doğru emulate edilir. HVMI, EPT-exit overhead'ini azaltmak için sürekli interception yerine integrity check'lerini tercih eder. -
Expected output. Detection'lar, integrator'a emit edilen introspection event'leri (alert + blocked action) olarak yüzeye çıkar; benign aktivite ise guest tarafından görülebilir bir değişiklik olmadan şeffaf biçimde geçer.
Warning
Repo arşivlendi (Haziran 2026) ve research/historical kullanım için sunuluyor.
Tam internal interface isimlendirmesi (HVMI dokümanlarında sıkça GLUE/UPPER layer
olarak anılır) katmana özgüdür; tam callback signature'larını version'a bağlı kabul
et ve kendi build'in için include/public/ header'larına karşı doğrula.
Detection¶
Bir guest engine'i okuyamaz, ama introspection'ın varlığını çıkarımsayabilir:
- Timing: korunan page'lere yapılan write'lar, normal bir store'un çok üzerinde EPT-violation + emulation latency'si yaşar; guest'in IDT/SSDT/kernel code'a karşı yaptığı write'ları sıradan page'lerle kıyaslayarak ölçmesi, protection'ı fingerprint edebilir.
- EPT-fault behavior: "çalışan" ama belirli kernel page'lerinde anormal şekilde yavaş koşan self-modifying ya da page-table-probing kod, write-protection'a işaret eder.
- CPUID/feature probing: VT-x/EPT'nin varlığı ile introspection tarzı intercept'ler (MSR/CR exit'leri), instruction-timing farklılıkları üzerinden çıkarımsanabilir.
Mitigation¶
- Bu defensive bir tooling; "mitigation" burada monitor'ı evasion'a karşı hardening
etmektir: timing side channel'larını normalize et/sınırla, minimum page kümesini
koru ve false negative'lerden kaçınmak için
exceptions/whitelist'ini dar tut. - CAMI OS profile'larını güncel tut; böylece guest patch'leri arasındaki struct-offset drift'i engine'i kör etmesin.
- Integrator'ı (
hvmid) ve engine'i host üzerinde least privilege ile çalıştır ve guest'in erişebileceği surface'lerden izole et.