VBS(가상화 기반 보안)

가상화 기반 보안 또는 VBS는 하드웨어 가상화 및 Windows 하이퍼바이저를 사용하여 커널이 손상될 수 있다고 가정하는 OS의 신뢰 루트가 되는 격리된 가상 환경을 만듭니다. Windows는 이 격리된 환경을 사용하여 여러 보안 솔루션을 호스트하여 운영 체제의 취약성으로부터 크게 보호하며 보호를 무효화하려는 악의적인 악용의 사용을 방지합니다. VBS는 중요한 시스템 및 운영 체제 리소스를 보호하거나 인증된 사용자 자격 증명과 같은 보안 자산을 보호하기 위해 제한을 적용합니다.

이러한 보안 솔루션의 한 가지 예는 VBS의 격리된 가상 환경 내에서 커널 모드 코드 무결성을 실행하여 Windows를 보호하고 강화하는 메모리 무결성입니다. 커널 모드 코드 무결성은 시작하기 전에 모든 커널 모드 드라이버와 이진 파일을 검사, 서명되지 않거나 신뢰할 수 없는 드라이버 또는 시스템 파일이 시스템 메모리에 로드되지 않도록 방지하는 Windows 프로세스입니다. 또한 메모리 무결성은 시스템을 손상시키는 데 사용할 수 있는 커널 메모리 할당을 제한하므로 보안 런타임 환경 내에서 코드 무결성 검사 전달한 후에만 커널 메모리 페이지가 실행 가능하도록 하고 실행 파일 페이지 자체는 쓰기가 불가능합니다. 이렇게 하면 맬웨어가 메모리 수정을 시도할 수 있는 버퍼 오버플로와 같은 취약성이 있더라도 실행 코드 페이지를 수정할 수 없으며 수정된 메모리를 실행 파일로 만들 수 없습니다.

참고 항목

메모리 무결성은 HVCI(하이퍼바이저로 보호된 코드 무결성) 또는 하이퍼바이저 적용 코드 무결성이라고도 하며 원래 Device Guard일부로 릴리스되었습니다. Device Guard는 그룹 정책 또는 Windows 레지스트리에서 메모리 무결성 및 VBS 설정을 찾는 것 외에는 더 이상 사용되지 않습니다.

VBS를 사용하려면 다음 구성 요소가 있고 올바르게 구성되어야 합니다.

TPM은 필수 요구 사항은 아니지만 TPM을 구현하는 것이 좋습니다.

하드웨어 요구 사항 세부 정보
64비트 CPU VBS(가상화 기반 보안)에는 intel VT-X 및 AMD-v를 비롯한 가상화 확장이 있는 64비트 IA 프로세서에서만 지원되는 Windows 하이퍼바이저가 필요합니다.
SLAT(Second Level Address Translation) 또한 VBS를 사용하려면 프로세서의 가상화 지원에 SLAT(Second Level Address Translation), EPT(확장 페이지 테이블)가 있는 Intel VT-X2 또는 RVI(빠른 가상화 인덱싱)가 있는 AMD-v가 포함되어야 합니다.
IOMMU 또는 SMMU(Intel VT-D, AMD-Vi, Arm64 SMMU) DMA를 사용할 수 있는 모든 I/O 장치는 IOMMU 또는 SMMU 뒤에 있어야 합니다. IOMMU를 사용하여 메모리 공격에 대한 시스템 복원력을 향상시킬 수 있습니다.
Trusted Platform Module(TPM) 2.0 TPM(불연속 또는 펌웨어)으로 충분합니다. 자세한 내용은 TPM(신뢰할 수 있는 플랫폼 모듈) 2.0을 참조하세요.
SMM 보호에 대한 펌웨어 지원 시스템 펌웨어는 Windows SMM 보안 완화 테이블(WMST) 사양에 설명된 SMM 코드 강화에 대한 권장 사항을 준수해야 합니다. WSMT 사양에는 VBS 기능을 지원하는 Windows 운영 체제에서 사용하기 위해 만든 ACPI 테이블의 세부 정보가 포함되어 있습니다. 펌웨어는 WSMT 사양에 설명된 보호를 구현하고 사양에 설명된 대로 해당 보호 플래그를 설정하여 이러한 요구 사항의 준수를 운영 체제에 보고해야 합니다.
UEFI(Unified Extensible Firmware Interface) 메모리 보고 UEFI 펌웨어는 VBS와의 호환성을 보장하기 위해 다음 메모리 맵 보고 형식 및 메모리 할당 지침을 준수해야 합니다.

  • UEFI v2.6 MAT(메모리 특성 테이블) - VBS와의 호환성을 보장하기 위해 펌웨어는 코드 및 데이터에 대한 EFI 런타임 메모리 범위를 깔끔하게 분리하고 이를 운영 체제에 보고해야 합니다. EFI 런타임 메모리 범위를 적절히 분리하고 보고하면 VBS에서 필요한 페이지 보호를 VBS 보안 지역 내의 EFI 런타임 서비스 코드 페이지에 적용할 수 있습니다. 이 정보를 OS에 전달하는 작업은 EFI_MEMORY_ATTRIBUTES_TABLE을 사용하여 수행됩니다. UEFI MAT를 구현하려면 다음 지침을 따릅니다.
    1. 이 표에서는 전체 EFI 런타임을 설명해야 합니다.
    2. EfiRuntimeServicesData 및 EfiRuntimeServicesCode 페이지에 대한 모든 적절한 특성을 표시해야 합니다.
    3. 이러한 범위는 페이지 경계(4KB)에 맞춰야 하며 겹칠 수 없습니다.
  • EFI 페이지 보호 -모든 항목에는 EFI_MEMORY_RO나 EFI_MEMORY_XP 또는 두 가지 특성 모두가 포함되어야 합니다. 실행 가능으로 표시된 모든 UEFI 메모리는 읽기 전용이어야 합니다. 쓰기 가능으로 표시된 메모리는 실행 가능하지 않아야 합니다. 항목은 실행 파일 및 쓰기 가능한 메모리를 나타내는 두 특성 집합이 모두 남아 있지 않을 수 있습니다.
  • 보안 메모리 덮어쓰기 요청(MOR) 수정 버전 2 보안 MOR v2는 UEFI 보안 변수를 사용하여 MOR 잠금 설정을 보호하도록 향상되었습니다. 이렇게 하면 고급 메모리 공격을 방지할 수 있습니다. 자세한 내용은 보안 MOR 구현을 참조하세요.
    메모리 무결성 호환 드라이버 모든 시스템 드라이버가 테스트되고 메모리 무결성과 호환되는지 확인합니다. Windows 드라이버 키트드라이버 검증 도구에는 메모리 무결성과의 드라이버 호환성에 대한 테스트가 포함되어 있습니다. 드라이버 호환성을 확인하는 3단계는 다음과 같습니다.
    1. 코드 무결성 호환성 검사 사용하도록 설정된 드라이버 검증 도구를 사용합니다.
    2. Windows HLK에서 하이퍼바이저 코드 무결성 준비 테스트를 실행합니다.
    3. VBS 및 메모리 무결성을 사용하도록 설정된 시스템에서 드라이버를 테스트합니다. 정적 코드 분석 도구가 런타임에 가능한 모든 메모리 무결성 위반을 검색할 수 없으므로 이 단계는 메모리 무결성을 사용하여 드라이버의 동작의 유효성을 검사하는 데 필수적입니다.

    VBS는 중첩된 가상화 지원이 있는 VM에서 작동합니다. 여기에는 모든 Gen2 VM 및 중첩된 가상화를 지원하는 Gen1 VM이 포함되어 있습니다. 지원되는 VM 시리즈 목록은 아래 테이블에 자세히 설명되어 있습니다.

    VM 계열 이름 중첩된 가상화 VM Gen
    Av2 1(특정 내부 크기 지원 gen 2)
    B 아니요 1과 2
    Dsv2/Dv2/Dv3/Ev3 1
    Dsv3/Ddsv3 1과 2
    Dsv4/Ddsv4 1과 2
    Esv3/Edsv3 1과 2
    Esv4/Edsv4 1과 2
    Ev4/Edv4 Ev4 - 1 전용
    Edv4 -1&2
    Dv4/Ddv4 1과 2
    Dv5/Ddv5/Dsv5/Ddsv5 1과 2
    Ev5/Edv5/Esv5/Edsv5 1과 2
    Dasv5/Dadsv5/Easv5/ Eadsv5 1과 2
    Ebsv5/Edbsv5 1과 2
    Fsv2 1과 2
    Fx 2
    Lsv2 1과 2

    Hyper-V에 대한 자세한 내용은 Windows Server 2016의 Hyper-V 또는 Windows 10의 Hyper-V 소개를 참조하세요. 하이퍼바이저에 대한 자세한 내용은 하이퍼바이저 사양을 참조하세요.