HVCI – Hypervisor-Protected Code Integrity
Informatyka

HVCI – Hypervisor-Protected Code Integrity

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 – Hypervisor-Protected Code Integrity
HVCI – Hypervisor-Protected Code Integrity

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.

Polecane wpisy
Jak skonfigurować WiFi w laptopie?
Jak skonfigurować WiFi w laptopie?

Jak skonfigurować WiFi w laptopie? W dzisiejszych czasach prawie każdy ma w domu laptopa. Laptopy umożliwiają podłączenie się do internetu Czytaj dalej

WinVer 1.4: Historia pierwszego wirusa, który wstrząsnął systemem Windows
WinVer 1.4: Historia pierwszego wirusa, który wstrząsnął systemem Windows

WinVer 1.4: Historia pierwszego wirusa, który wstrząsnął systemem Windows Pierwsze wersje systemu Windows, takie jak Windows 3.0 czy Windows 3.1, Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.