HVCI – Hypervisor-Protected Code Integrity
HVCI (Hypervisor-Protected Code Integrity) to mechanizm bezpieczeństwa Windows, który wykorzystuje VBS i hypervisor do ochrony integralności kodu, przede wszystkim kodu działającego w kernel-mode.
W ustawieniach Windows funkcja ta występuje najczęściej jako:
Memory Integrity / Integralność pamięci.
Najprostszy model:
Windows
|
Kernel / Drivers
|
v
HVCI / VBS
|
Code Integrity
|
+------+------+
| |
Trusted Untrusted
| |
ALLOW BLOCK
Po co powstało HVCI?
Kernel Windows ma bardzo wysokie uprawnienia.
Jeżeli atakujący zdoła uruchomić złośliwy kod w kernel-mode, może próbować:
Malicious Driver
|
v
Windows Kernel
|
+--> Memory manipulation
+--> Security bypass
+--> Credential theft
+--> Disable security mechanisms
Dlatego samo zabezpieczenie aplikacji w user-mode nie wystarcza.
HVCI dodaje kolejną warstwę:
Application
↓
User Mode
↓
Kernel
↓
HVCI / VBS
↓
Hardware
HVCI wykorzystuje VBS
To najważniejsza zależność:
VBS
|
+-- Hypervisor
|
+-- Isolated Environment
|
+-- HVCI
HVCI nie jest tym samym co VBS.
VBS jest architekturą izolacji, a HVCI jest konkretnym mechanizmem ochrony integralności kodu wykorzystującym tę izolację.
Można to porównać do:
VBS = bezpieczny, izolowany kontener
HVCI = mechanizm kontroli kodu działający w tym środowisku
To oczywiście uproszczenie, ale dobrze pokazuje zależność.
Jak działa HVCI?
Bez HVCI można sobie wyobrazić:
Windows Kernel
|
v
Code Integrity
|
v
"Ten kod jest OK"
Problem:
kod działający w kernel-mode ma bardzo wysokie uprawnienia i może próbować manipulować środowiskiem bezpieczeństwa.
HVCI przenosi krytyczne decyzje związane z integralnością kodu do izolowanego środowiska chronionego przez hypervisor.
Windows
|
"Chcę wykonać kod"
|
v
+-------------------+
| VBS / HVCI |
| |
| Code Integrity |
+-------------------+
|
Validate Code
|
+-----+-----+
| |
ALLOW BLOCK
Memory Integrity
W Windows 11 możesz zobaczyć ustawienie:
Zabezpieczenia Windows → Zabezpieczenia urządzenia → Izolacja rdzenia → Integralność pamięci
To właśnie funkcja powiązana z HVCI.
Można więc zapamiętać:
Memory Integrity
≈
HVCI
↓
VBS
↓
Hypervisor
Nie należy jednak traktować tych nazw jako idealnych synonimów w każdej dokumentacji Microsoftu.
HVCI chroni kernel
Najważniejszym celem HVCI jest ograniczenie możliwości uruchomienia nieautoryzowanego lub nieprawidłowo zweryfikowanego kodu kernel-mode.
Przykładowo:
driver.sys
|
v
Code Integrity
|
+---- Valid -----> Load
|
+---- Invalid ---> BLOCK
To szczególnie istotne dla sterowników, ponieważ działają one na poziomie kernela.
Dlaczego sterowniki są tak ważne?
Sterownik może mieć bardzo szerokie możliwości:
Driver
|
v
Kernel
|
+-- Memory
+-- Hardware
+-- System
+-- Security mechanisms
Jeżeli sterownik jest złośliwy albo posiada poważną podatność, może stać się potężnym narzędziem dla atakującego.
HVCI ma ograniczać możliwość załadowania kodu, który nie spełnia wymagań integralności.
HVCI a BYOVD
Bardzo ciekawy przypadek to:
BYOVD – Bring Your Own Vulnerable Driver.
Atakujący może próbować wykorzystać legalny, podpisany, ale podatny sterownik:
Attacker
|
v
Vulnerable Driver
|
v
Kernel
|
v
Privilege Escalation
To jeden z powodów, dla których bezpieczeństwo sterowników jest tak ważne.
HVCI może utrudnić część takich scenariuszy, ale:
HVCI nie jest kompletnym rozwiązaniem problemu BYOVD.
Do tego dochodzą m.in. mechanizmy blokowania znanych podatnych sterowników oraz inne zabezpieczenia Windows.
HVCI + WDAC
Te dwie technologie bardzo dobrze się uzupełniają.
WDAC odpowiada przede wszystkim za politykę:
Jaki kod jest dozwolony?
HVCI pomaga chronić mechanizm Code Integrity:
Czy ta polityka i jej decyzje mogą zostać zmanipulowane przez kod działający w normalnym środowisku?
Schemat:
WDAC
|
Policy / Rules
|
v
Code Integrity
|
v
HVCI
|
Hypervisor
|
v
Hardware
Właśnie dlatego WDAC + HVCI jest znacznie ciekawszym zestawem niż traktowanie każdej technologii osobno.
HVCI + VBS
Można to przedstawić jeszcze prościej:
VBS
|
+------+------+
| |
Hypervisor VTL1
| |
+------HVCI---+
|
Code Integrity
VBS tworzy izolację, a HVCI wykorzystuje ją do ochrony mechanizmu integralności kodu.
HVCI + Secure Boot
Secure Boot chroni wcześniejszy etap.
UEFI
↓
Secure Boot
↓
Trusted Boot
↓
Hypervisor
↓
VBS
↓
HVCI
↓
Windows Kernel
Secure Boot odpowiada przede wszystkim za zaufanie do elementów uruchamianych podczas startu.
HVCI działa później i chroni integralność kodu podczas działania systemu.

HVCI + TPM
TPM również znajduje się w tym modelu, ale pełni inną funkcję:
TPM
↓
Keys / Measurements
natomiast:
HVCI
↓
Code Integrity
Czyli:
| Technologia | Główna rola |
|---|---|
| TPM 2.0 | Klucze, pomiary, hardware trust |
| Secure Boot | Zaufany boot chain |
| VBS | Izolacja bezpieczeństwa |
| HVCI | Ochrona Code Integrity |
| WDAC | Polityka dozwolonego kodu |
HVCI a Credential Guard
Oba wykorzystują VBS, ale chronią inne rzeczy.
VBS
|
+----------+----------+
| |
HVCI Credential Guard
| |
Code Integrity Credentials
HVCI:
„Nie pozwól na uruchomienie nieautoryzowanego kodu.”
Credential Guard:
„Odizoluj określone sekrety uwierzytelniające.”
HVCI a malware
HVCI nie jest antywirusem.
Nie działa tak:
malware.exe
↓
HVCI
↓
"To malware"
Jego zadanie jest inne:
Code
|
v
Can this code execute
under Code Integrity rules?
|
+---- YES
|
+---- NO → BLOCK
Dlatego HVCI i Defender rozwiązują różne problemy.
Defender + HVCI
Możemy mieć:
Application
|
+--------+--------+
| |
Defender HVCI
| |
Is it malicious? Can it execute?
| |
+--------+--------+
|
Security
To właśnie defense in depth.
Co daje HVCI atakującemu?
Bez HVCI:
Exploit
↓
Kernel
↓
Manipulate Code Integrity
↓
Security Bypass
Z HVCI:
Exploit
↓
Kernel
↓
Try to manipulate CI
↓
+-------------------+
| Isolated HVCI |
| Environment |
+-------------------+
↓
BLOCK / LIMIT
Nie oznacza to, że kernel exploit staje się niemożliwy. Oznacza to, że atakujący ma trudniejszą drogę do obejścia mechanizmów integralności kodu.
Wymagania sprzętowe
HVCI wykorzystuje sprzętową wirtualizację.
W praktyce potrzebne są odpowiednie mechanizmy CPU i firmware, m.in.:
Intel → VT-x
AMD → AMD-V
oraz funkcje platformy wymagane przez VBS/HVCI.
Na współczesnych komputerach są one zazwyczaj dostępne.
Czy HVCI obniża wydajność?
Tak, może.
Powodem jest dodatkowa izolacja i mechanizmy związane z wirtualizacją oraz ochroną pamięci.
Wpływ zależy od:
CPU
RAM
Drivers
Applications
Workload
Windows version
W typowym komputerze biurowym może być mało zauważalny, ale niektóre obciążenia mogą wykazywać większą różnicę.
Dlatego w środowisku enterprise warto:
Test
↓
Pilot
↓
Monitor
↓
Deployment
zamiast włączać HVCI bez testów na całej flocie.
Problem ze starymi sterownikami
To jeden z najczęstszych problemów.
Starszy sterownik może:
driver.sys
|
v
Not compatible with HVCI
|
v
BLOCK / compatibility issue
Dlatego po włączeniu Memory Integrity użytkownik może nagle odkryć, że:
- stary sterownik nie działa,
- urządzenie wymaga aktualizacji,
- starsze oprogramowanie przestaje działać.
To szczególnie istotne przy:
Old hardware
Legacy drivers
Specialized devices
Old virtualization software
Jak sprawdzić HVCI?
Najprościej:
Win + R
i:
msinfo32
Następnie znajdź:
Zabezpieczenia oparte na wirtualizacji
Możesz również wejść w:
Windows Security
↓
Device Security
↓
Core Isolation
↓
Memory Integrity
Jeżeli Integralność pamięci jest włączona, HVCI jest aktywne w odpowiedniej konfiguracji.
HVCI w architekturze Windows 11
Po wszystkich naszych poprzednich tematach możemy już zbudować znacznie pełniejszy obraz:
HARDWARE
|
+------------+------------+
| |
TPM CPU
| Virtualization
| |
+------------+------------+
|
UEFI
|
Secure Boot
|
v
Hypervisor
|
VBS
|
+---------+---------+
| |
HVCI Credential Guard
|
Code Integrity
|
WDAC
|
Smart App Control
|
Applications
|
Defender / EDR
Najważniejsze: VBS vs HVCI
Jeżeli masz zapamiętać tylko jedną rzecz:
VBS ≠ HVCI.
VBS
↓
Izolacja bezpieczeństwa wykorzystująca hypervisor
HVCI
↓
Ochrona Code Integrity wykorzystująca VBS
Czyli:
VBS dostarcza izolowane środowisko, a HVCI wykorzystuje tę izolację do ochrony integralności kodu Windows.
W jednym zdaniu
HVCI jest jedną z najważniejszych warstw ochrony kernela Windows: wykorzystuje VBS i hypervisor, aby utrudnić złośliwemu kodowi działającemu w normalnym środowisku Windows manipulowanie mechanizmami Code Integrity i uruchamianie nieautoryzowanego kodu kernel-mode.
W praktyce warto myśleć o całym łańcuchu:
TPM → Secure Boot → VBS → HVCI → WDAC → Smart App Control → Defender/EDR
— gdzie każda warstwa zabezpiecza inny etap i inny poziom systemu.






