이 기능은 가상화 기반 보안을 사용하는 장치에서, 메모리 무결성을 지키기 위한 기능이다. 아래와 같이 활성화할 수 있다.
설정 → 개인 정보 및 보안 → Windows 보안 → 장치 보안 → 코어 격리 세부 정보 → 메모리 무결성
쉽게 말해 악의적인 코드가 실행되는걸 방지하기 위해 가상화 기능을 사용한다. 가상화 기능을 사용하면 각각의 프로세스를 완벽하게 분리할 수 있다. 그냥 아예 다른 운영체제인것처럼 작동할 수 있으니 말이다. 이를 VBS (Virtualization-Based Security)라고 부른다. 이를 구현하려면 커널 안에 VSM(Virtual Secure Module)을 두고 이 모듈 위에 각각의 커널을 올린다. 여기에 더해 HVCI(Hypervisor-Enforced Code Integrity)를 사용해 서명된 프로그램만 실행하도록 하면 원하지 않는 코드가 실행될 수는 없을 것이다.
이 기능을 구현하는데에는 최소 가상화기능이 지원되는 CPU만 있으면 되지만, 더 빨리 실행되기 위해서는 IOMMU(Input/Output Memory Management Unit), SLAT(Second Level Address Translation)를 지원해야 하고, HVCI 를 고성능으로 지원하려면 MBEC (Mode-Based Execute Control)기능을 CPU 에서 지원해야 한다. MBEC 는 인텔에서는 MBEC(Mode-based execute control for EPT), AMD는 GMET(Guest Mode Execute Trap)이라고 부른다. MBEC 를 지원하는 CPU가 Intel Kaby Lake, AMD Zen 2 부터다.
CPU가 MBEC 를 지원하지 않아도 HVCI 기능을 지원할 수 있지만 눈에띄게 느려진다. HVCI 를 끄고 사용하면 괜찮아진다. 이게 Intel Kaby Lake 미만, AMD Zen 2 미만의 CPU는 윈도11에서 지원하지 않는다고 말하는 이유중 하나다.
msinfo32 에서 보여주는 가상화기반 보안 사용 가능한 보안 속성. [모드 기반 실행 제어]가 있으면 MBEC 가 지원되는 것이다.
- MBEC 지원 여부는 파워셸에서도 확인할 수 있다. Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select-Object -ExpandProperty AvailableSecurityProperties
- 숫자의 의미
0 If present, no relevant properties exist on the device.
1 If present, hypervisor support is available.
2 If present, Secure Boot is available.
3 If present, DMA protection is available.
4 If present, Secure Memory Overwrite is available.
5 If present, NX protections are available.
6 If present, SMM mitigations are available.
7 If present, MBEC/GMET is available.
8 If present, APIC virtualization is available.
VBS 의 모든 기능 활성화하려면 Kaby Lake 및 이를 지원하는 마더보드에서는 최신 바이오스를 사용해야 하고, 최신 드라이버를 사용해야 한다. 바꿔말하면 Kaby Lake 에는 VBS 의 모든 기능이 안되는 경우가 있다는 의미다. VBS 를 제대로 지원하기 위한 사양은 아래에 나와있다.
HVCI 가 최신 CPU 에서도 시스템을 느려지게 만든다는게 이슈 되었다. 메모리 읽기/쓰기 작업에 대해 권한이 있는지 추가로 더 체크하기 때문에 느릴 수 밖에 없다. 느린건 맞는데 벤치마크해보면 10% 이상 느려진다는게 측정되니 문제다. 따라서 메모리 접근이 많은 프로그램, 예를 들어 게임 할 때에는 끄고 하자. 아예 가상화를 끄는 것도 좋다. 윈도 하이퍼바이저 Hyper-V 끄기, 가상화 끄기