하이퍼바이저로 보호된 코드 무결성 사용 설정

HVCI(하이퍼바이저로 보호된 코드 무결성)는 Windows에서 사용할 수 있는 VBS(가상화 기반 보안) 기능입니다. Windows 디바이스 보안 설정에서는 HVCI를 메모리 무결성이라고 합니다.

HVCI 및 VBS는 Windows의 위협 모델을 개선하고 Windows 커널을 악용하려는 맬웨어에 대한 보호를 강화합니다. VBS는 Windows 하이퍼바이저를 활용하여 격리된 가상 환경을 만들며, 이 환경은 커널이 손상될 수 있다고 가정하는 OS의 신뢰 루트가 됩니다. HVCI는 내부에서 커널 모드 코드 무결성을 실행하고 시스템을 손상시키는 데 사용할 수 있는 커널 메모리 할당을 제한하여 이 가상 환경을 보호하고 강화하는 중요한 구성 요소입니다.

이러한 보호에 대한 자세한 내용은 가상화 기반 보안 시스템 리소스 보호를 참조하세요.

기본 사용 설정

Windows 11부터는 호환되는 시스템에 새로 설치하면 메모리 무결성이 기본적으로 켜져 있습니다. 그래서 Windows에서 기능의 기본 상태가 변경되어 있지만, 기능을 사용할 수 있는지 여부는 디바이스 제조업체와 최종 사용자가 최종적으로 제어할 수 있습니다.

자동 사용 설정을 위한 하드웨어 기능

PC에 다음과 같은 최소 하드웨어 기능이 포함된 경우 메모리 무결성이 기본적으로 켜져 있습니다.

구성 요소 세부 정보
프로세서
  • Intel 11세대 코어 프로세서 이상(Windows 11 버전 22H2부터 8세대 이상)
  • AMD Zen 2 아키텍처 이상
  • Qualcomm Snapdragon 8180 이상
RAM 최소 8GB
스토리지 SSD(최소 크기: 64GB)
드라이버 HVCI 호환 드라이버를 설치해야 합니다. 드라이버에 대한 자세한 내용은 HVCI(하이퍼바이저로 보호된 코드 무결성)를 참조하세요.
BIOS 가상화를 사용하도록 설정해야 함

메모리 무결성을 자동으로 사용하도록 설정하지 않는 이미지를 빌드하는 경우라도 메모리 무결성이 기본적으로 활성화되도록 이미지를 구성할 수 있습니다.

참고

자동 사용 설정은 새로 설치하는 경우에만 적용되며 기존 디바이스의 업그레이드에는 적용되지 않습니다.

참고

중국 및 한국 시장은 치트 방지 호환성 문제를 피하기 위해 제외됩니다.

참고

Intel 11세대 코어 데스크톱 프로세서는 현재 기본 사용 설정 논리에 포함되지 않습니다. 하지만 HVCI에 권장되는 플랫폼이며 OEM에서 HVCI를 사용하도록 설정할 수 있습니다.

HVCI 및 VBS 컨트롤

이 섹션에서는 디바이스 제조업체 및 최종 사용자가 HVCI 및 VBS와 상호 작용하는 방법을 열거합니다. 관리자 권한으로 HVCI 상태를 제어하는 방법에 대한 자세한 내용은 그룹 정책을 사용하여 HVCI를 사용하도록 설정을 참조하세요.

메모리 무결성 켜기

Windows는 특정 하드웨어 요구 사항을 충족하는 시스템에 대해 기본적으로 메모리 무결성을 켭니다. 하드웨어에 Windows에서 메모리 무결성이 자동으로 켜질 수 있는 하드웨어 조합이 포함되어 있지 않은 경우에는 이미지에서 레지스트리 키를 구성하여 이미지에서 사용하도록 설정할 수 있습니다.

사용자가 Windows 보안 앱의 코어 격리 페이지를 사용하여 메모리 무결성을 수동으로 사용하도록 설정할 수도 있습니다.

이미지에서 다음 두 레지스트리 키를 설정합니다. 이 구성은 OS 기본 사용 설정 논리와 동일한 방식으로 커널 모드에서 메모리 무결성을 활성화합니다.

레지스트리 키
HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity Enabled=1
HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity WasEnabledBy=1

WasEnabledBy 레지스트리 키는 부팅할 수 없는 디바이스를 사용하지 않도록 보호하는 설정을 제어합니다. 설정하면 부팅 중에 시스템 작동이 중지하는 경우 디바이스가 자동으로 HVCI를 비활성화하며, 호환되지 않는 부팅에 필요한 드라이버를 차단하는 메모리 무결성으로 인해 발생할 수 있습니다. 이런 자동 비활성화 기능은 향후 더 이상 사용되지 않을 예정이지만 현재 권장되는 구성입니다.

참고

보안 수준이 높은 시스템의 경우 WasEnabledBy를 설정하면 안 됩니다.

문제 해결

HVCI 상태 식별

다음 휘발성 regkey는 HVCI의 상태를 반영합니다.

레지스트리 키
HKLM\System\CurrentControlSet\Control\CI\State HVCIEnabled

HVCI 상태를 확인하는 다른 방법은 Virtualization-based Security Services Running(가상화 기반 보안 서비스 실행)에서 MsInfo32를 확인하거나 코어 격리 설정 페이지에서 메모리 무결성 값을 확인하는 것입니다.

드라이버 문제 디버깅

코드 무결성 로그를 확인하여 HVCI로 인해 로드가 차단된 드라이버가 있는지 확인합니다. 해당 로그는 이벤트 뷰어의 다음 경로에 있습니다.

Applications and Service Logs\Microsoft\Windows\CodeIntegrity\Operational

일반적으로 HVCI 호환성 이벤트에는 EventID=3087이 있습니다.

HVCI 기본 사용 설정의 결과 확인

HVCI 기본 사용 설정의 결과에 대한 세부 정보를 보려면 setupact.log를 확인하고 HVCI를 검색합니다. 다음 결과 로그 중 하나와 성공/실패 확인(사용 설정 결정으로 이어짐)이 표시됩니다.

HVCI 사용: SYSPRP HVCI: Enabling HVCI

HVCI 사용 안 함: SYSPRP HVCI: OS does not meet HVCI auto-enablement requirements. Exiting now.

디바이스가 위에 설명된 regkey 메서드를 통해 HVCI 사용 설정을 옵트아웃한 경우에는 이것이 HVCI sysprep의 유일한 로그가 됩니다. 디바이스에 호환성 문제가 있다면 이전 로그에서 다음 오류 메시지를 통해 식별되어야 합니다.

SYSPRP HVCI: Compatibility did not pass. VBS_COMPAT_ISSUES 0xXXXXXXXX

다음은 잠재적인 VBS 호환성 문제의 열거형입니다. 각 문제는 비트 배열의 단일 인덱스로 표시되며 오류 메시지는 존재하는 각 오류 비트의 결과인 16진수 값을 출력합니다.

참고

아래 표에는 일부 인덱스가 누락되어 있습니다. 일부 호환 요구 사항은 변경되었거나 더 이상 사용되지 않으며 기본 사용 설정 논리가 없는 이전 OS 버전과만 관련이 있습니다.

비트 인덱스 호환성 문제
0 지원되지 않는 아키텍처(예: x86)
1 SLAT 필요
3 IOMMU 필요
4 MBEC/GMET 필요
5 UEFI 필요
6 UEFI WX 메모리 특성 테이블 필요
7 ACPI WSMT 테이블 필요
8 UEFI MOR 잠금 필요
10 하드웨어 가상화 필요
11 보안 시작 필요
13 디바이스가 64GB 최소 필수 볼륨 크기를 충족하지 못함
14 시스템 드라이브 SSD 필요
15 디바이스 실패 최소 Intel SoC 요구 사항
16 QC SoC가 VBS 사용 설정을 지정하지 않음
17 8GB RAM 필요

오류 코드 및 오류 식별의 예: VBS_COMPAT_ISSUES 0x000000C0

0x000000C0 -> 00000000011000000 -> 비트 인덱스 6 및 7이 활성 상태 -> UEFI WX 메모리 특성 테이블 필요, ACPI WSMT 테이블 필요