Windows SMM 보안 완화 테이블 이해(WSMT)

Windows SMM 보안 완화 테이블(WSMT)은 Microsoft에서 정의한 ACPI 테이블로, 시스템 펌웨어가 SMM(시스템 관리 모드) 소프트웨어에서 특정 보안 모범 사례가 구현되었는지 운영 체제에 확인시킬 수 있도록 합니다. WSMT 테이블 정의는 Windows SMM 보안 완화 테이블(WMST) 사양에 설명되어 있습니다.

배경

WSMT는 Windows 가상화 기반 보안 기능을 더 잘 지원하기 위해 정의되었습니다. VBS에 대한 자세한 내용은 VBS(가상화 기반 보안)을 참조하세요. SMM은 운영 체제의 지식이나 제어 없이 작동하므로 SMM은 악성 코드에서 VBS를 통해 사용하도록 설정된 OS 보호를 손상시키거나 우회하는 데 활용할 수 있는 중요한 공격 표면을 나타냅니다. 강력하고 안전한 VBS 플랫폼을 제공하려면 악용될 수 있는 일반적인 취약성을 제거하기 위해 OEM에서 SMM 코드를 신중하게 조사하고 업데이트해야 합니다. WSMT에는 이러한 특정 보안 모범 사례 중 구현된 운영 체제를 나타내도록 설정할 수 있는 펌웨어 플래그가 포함되어 있습니다.

Windows VBS 지원에 대한 WSMT의 의미

WSMT 보호 플래그 필드는 시스템 펌웨어에 이러한 특정 SMM 보안 완화가 있음을 나타냅니다. 지원되는 Windows 운영 체제 버전은 초기화 초기에 하이퍼바이저 및 VBS를 시작하기 전에 WSMT Protection 플래그를 읽고 이러한 SMM 보호 플래그의 존재 여부에 따라 특정 보안 기능을 사용하거나 사용하지 않도록 설정하거나 기능을 해제하도록 선택할 수 있습니다.

구현 노트

WSMT Protection Flags FIXED_COMM_BUFFERS 및 COMM_BUFFER_NESTED_PTR_PROTECTION가 나타내는 보안 완화를 적절히 구현하려면 펌웨어 공급업체가 SMI(시스템 관리 인터럽트) 처리기를 신중하게 평가하고 다시 디자인해야 합니다. 모든 SMI 처리기는 MMIO 및 EFI 할당 메모리를 포함하는 허용 가능한 메모리 영역에 대한 액세스(읽기 또는 쓰기)로만 제한되어야 합니다. SMM의 포인터가 SMM 외부에서 메모리를 완전히 참조하지 않는지 확인하는 것은 충분하지 않습니다. 대신 모든 SMM 포인터가 이러한 안전한 메모리 영역 내에 있도록 유효성을 검사해야 합니다. 이렇게 하면 SMM이 "혼동된 대리자" 공격에 악용되어 Windows VBS 기능을 손상시키는 데 활용되지 않도록 방지할 수 있습니다. 위에서 언급한 보호 플래그는 입력 유효성 검사 및 포인터 검사만 참조하며 현재 SMM 페이지 보호를 통해 적용할 필요가 없습니다. 예를 들어 SMM은 비밀을 포함하거나 소프트웨어가 예측할 수 없는 동작을 일으킬 수 있으므로 펌웨어에서 EfiConventionalMemory로 설명한 메모리를 읽거나 메모리에 쓰지 않아야 합니다.

WSMT 보호 유효성 검사

SMM은 운영 체제에 불투명하기 때문에 WSMT 사양에 규정된 보호가 실제로 SMM에서 구현되었는지 확인하기 위해 Windows에서 실행되는 테스트를 생성할 수 없습니다. 운영 체제에서 가능한 유일한 확인은 WSMT의 존재를 찾고 정의된 모든 보호 플래그의 상태를 확인하는 것입니다.

따라서 OEM은 각 시스템의 SMM 코드를 주의 깊게 조사하고 펌웨어가 WSMT 사양 및 이 문서에 설명된 지침을 준수하는지 확인해야 합니다. OEM이 각 보호 플래그 값에 해당하는 완화가 제대로 구현되었음을 확인할 때까지 보호 플래그를 "true"로 설정하면 안 됩니다. 이 모범 사례를 준수하지 않으면 플랫폼이 손상에 취약해지며, 강력한 보안 경계를 유지하기 위해 VBS에 의존하는 여러 OS 보호 및 Windows 보안 기능의 효율성을 부정합니다.

지원되는 Windows 버전

WSMT에 대한 지원은 다음 버전의 Windows에 포함되어 있습니다.

  • Windows Server Technical Preview 2016
  • Windows 10 버전 1607
  • Windows 10, 버전 1703
  • Windows 10, 버전 1709