다음을 통해 공유


FASR(펌웨어 공격 표면 감소)

2019년 10월, Microsoft는 OEM 및 실리콘 파트너와 긴밀히 협력하여 보안 코어 PC를 출시했습니다. 이러한 디바이스는 디바이스, ID 및 데이터에 대한 향상된 보안을 보장하는 데 도움이 되는 긴밀하게 통합된 하드웨어, 펌웨어 및 소프트웨어를 갖추고 있습니다. 보안 코어 PC의 핵심 보안 핵심 요소 중 하나는 디바이스에 대한 펌웨어 보호를 제공하는 것입니다. 이 핵심 요소를 충족하는 데 필요한 기본 하드웨어 기반 기능은 D-RTM(Dynamic Root of Trust for Measurement)입니다 . 그러나 이 기능을 지원하기 위한 기본 칩셋의 종속성으로 인해 현재 D-RTM을 제공하는 디바이스는 많지 않으므로 모든 Windows 디바이스에 대해 높은 보안 표시줄을 높이고 유지하려는 노력을 방해합니다.

D-RTM 없이 이러한 디바이스를 포함하여 모든 Windows 디바이스의 보안 태세를 향상시키기 위해 더 많은 작업을 수행할 수 있습니다. Microsoft는 OEM에서 사용할 수 있는 추가 유연성을 제공하기 위해 오픈 소스 SMM 보안 향상 기능 세트를 개발하여 UEFI 펌웨어에 메모리 보호가 적용되지 않도록 하는 호환성 문제를 해결하기 위해 파트너와 협력하고 있습니다.

펌웨어 보안에 대한 이러한 약속을 반영하기 위해 디바이스가 보안 코어 PC의 펌웨어 보호 요구 사항을 충족할 수 있도록 하는 새로운 접근 방식을 확인했습니다.

FASR 개요

하드웨어 기반 D-RTM 기능이 부족한 보안 코어 PC의 경우 공격 표면이 감소하고 운영 체제에서 증명될 수 있는 작은 펌웨어 구성 요소 집합을 정의해야 합니다. 이 방법을 FASR(펌웨어 공격 표면 감소)이라고 합니다. FASR 기반 펌웨어가 여러 공급업체의 PC 간에 확장되려면 펌웨어 부팅 프로세스에 대한 새로운 접근 방식을 정의해야 했습니다.

FASR은 두 가지 부팅 경로를 지원합니다.

  1. 인증된 부팅 경로:

    • Microsoft에서 신뢰할 수 있고 서명되고 통합된 코드만 실행할 수 있습니다.

    • 운영 체제에서 부팅 경로 변조를 검색할 수 있습니다.

    아래 그림에서는 인증된 부팅 경로의 FASR S-RTM 부팅 흐름을 보여 줍니다. 이 부팅 경로는 예기치 않은 플랫폼 펌웨어 코드가 실행되지 않도록 방지하는 데 도움이 됩니다. 그러나 사용자 지정 부팅 경로에서 제공하는 일부 플랫폼별 데이터를 사용합니다. 다음 다이어그램은 인증된 부팅 경로의 FASR 부팅 흐름을 보여 줍니다.

    인증된 부팅 경로의 F S R 부팅 흐름

  2. 사용자 지정 부팅 경로: 모든 플랫폼 펌웨어 코드를 실행할 수 있습니다. 특정 OEM/플랫폼과 관련된 부팅 중요 정보는 사용자 지정 부팅 경로의 데이터로 변환되고 인증된 부팅 경로에서 해당 부팅 경로에서 시스템을 올바르게 구성하는 데 사용됩니다. 다음 다이어그램은 사용자 지정 부팅 경로의 FASR 부팅 흐름을 보여 줍니다.

    사용자 지정 부팅 경로의 F S R 부팅 흐름

    보안 코어 PC 준수를 사용하도록 설정된 FASR 디바이스는 펌웨어 부팅 프로세스 초기에 부팅이 사용자 지정 부팅 경로로 전환되도록 하는 이벤트가 발생하지 않는 한 인증된 부팅 경로로 기본 설정됩니다. 이러한 이벤트의 예로는 펌웨어 업데이트, 사용자가 펌웨어 UI를 요청했거나 사용자가 보안 코어 PC를 사용하지 않도록 선택했습니다. 즉, 다시 활성화될 때까지 항상 사용자 지정 부팅 경로에서 부팅됩니다.

    사용자 지정 부팅은 FASR 지원 디바이스의 플랫폼 펌웨어에서 지원하는 대로 운영 체제 또는 타사 소프트웨어를 부팅하는 데 사용할 수 있지만 Windows는 사용자 지정 부팅 경로의 부팅을 보안 코어 PC 규격으로 인식하지 않습니다.

FASR의 보안 기술을 더 잘 이해하기 위해 Windows 부팅 프로세스에 대한 빠른 개요를 공유하려고 합니다.

Windows 부팅 프로세스

신뢰의 루트

최신 PC의 초기 펌웨어 실행은 초기 코드 집합이 다른 코드를 로드하고 부팅이 진행됨에 따라 기능 수준이 확장되는 부팅 프로세스를 따릅니다. 각 코드 집합은 신뢰 체인을 형성하는 다음 코드 집합을 확인합니다. UEFI 펌웨어가 제어를 얻는 경우 소프트웨어 서명을 확인하는 보안 부팅 표준을 따라 운영 체제에 대한 신뢰 체인을 계속합니다. 그런 다음 Windows 부팅 로더는 신뢰할 수 있는 부팅을 사용하여 신뢰 체인을 계속합니다. 이 체인은 로드되기 전에 시작 프로세스의 다른 모든 OS 구성 요소를 확인합니다.

일반적으로 공격자는 시스템을 보호하는 데 도움이 되는 보안 기능 및 잠금을 사용하도록 설정하기 전에 부팅 프로세스에서 가능한 한 빨리 제어를 얻으려고 합니다. 시스템을 다시 설정하지 않으면 실행된 초기 코드 집합이 신뢰에 고정되어야 합니다. 이 초기 코드 확인을 수행하는 역할을 수행하는 하드웨어 확인 기술을 신뢰의 루트라고 합니다. 정확한 세부 정보는 하드웨어 공급업체에 따라 다르지만, 신뢰의 모든 루트는 일반적으로 SOC의 변경할 수 없는 하드웨어 또는 ROM에 뿌리를 두고 있습니다.

신중한 부팅

신뢰의 루트에 고정된 보안 부팅은 모든 펌웨어의 디지털 서명을 확인하는 데 도움이 됩니다. 그러나 정확히 어떤 펌웨어가 실행되었는지에 대한 레코드를 갖는 것도 좋습니다. Windows 하드웨어 호환성 프로그램을 사용하려면 모든 Windows 10 및 Windows 11 PC에 TPM(신뢰할 수 있는 플랫폼 모듈)이라는 칩이 포함되어야 합니다. TPM에는 PCR(플랫폼 구성 레지스터)이라는 메모리 위치가 포함되어 있습니다. 각 PCR에는 비휘발성 스토리지 디바이스의 펌웨어 코드(예: SPI 플래시), PCI 디바이스의 옵션 ROM 또는 OS 부팅 로더와 같이 부팅 중에 로드된 코드 및/또는 데이터 형식에 대한 해시가 포함됩니다. PCR에 저장할 수 있는 값의 크기는 지원되는 해시 알고리즘의 다이제스트 크기에 따라 결정됩니다. 예를 들어 SHA-1 PCR은 20바이트를 저장할 수 있고 SHA-2 PCR은 32바이트를 저장할 수 있습니다. 동일한 해시 알고리즘과 연결된 여러 PCR을 은행이라고 합니다. TCG PC 클라이언트 TPM 프로필 사양24개의 레지스터가 있는 하나 이상의 PCR 은행을 포함하는 것을 정의합니다.

TPM이 있는 경우 각 펌웨어 구성 요소는 부팅 프로세스에서 새 코드 및 데이터가 로드될 때 적절한 PCR을 업데이트하거나 확장할 수 있습니다. 확장 프로세스는 새 코드 또는 데이터 인수와 연결된 현재 PCR 값을 입력으로 사용하여 해시 알고리즘의 출력으로 PCR 값을 업데이트합니다. 그 결과 부팅 프로세스 후에 PCR을 검사하여 실행된 내용을 확인할 수 있습니다. 이렇게 하면 운영 체제의 소프트웨어가 부팅 프로세스가 이전 부팅과 다른지 이해할 수 있습니다. 보안에 민감한 환경에서 운영 체제는 예기치 않은 펌웨어 코드의 실행을 감지하기 위해 특정 PCR에 예상되는 정확한 코드 측정 집합을 알릴 수 있습니다. 은행의 처음 16개 PCR은 전체 TPM을 다시 설정해야만 재설정할 수 있으므로 신뢰할 수 있으며 TPM에 중요한 측정값을 저장하기 위해 선호하는 위치입니다.

측정을 위한 신뢰의 루트

신뢰 루트의 역할과 측정 부팅 사용 방법을 살펴보았습니다. 이제 측정 체인을 TPM에 보고하기 위한 신뢰 루트를 설정하는 두 가지 일반적인 방법인 정적 및 동적 방법을 살펴보겠습니다.

S-RTM(Static Root of Trust for Measurement)은 시스템 재설정 시 트러스트를 설정하며 전체 부팅 프로세스에서 트러스트를 유지 관리해야 합니다. 부팅 프로세스의 어느 시점에서든 트러스트가 손상되면 시스템이 다시 설정될 때까지 복구할 수 없습니다. 다음 다이어그램에서는 인증된 부팅 경로에서 S-RTM을 사용하는 방법을 보여 줍니다.

신뢰 측정의 정적 루트

반면, D-RTM(Dynamic Root of Trust for Measurement)은 초기 칩셋 초기화 펌웨어 코드의 일부만 신뢰하고 부팅 중에 동적으로 트러스트를 다시 설정하는 데 사용되는 하드웨어 에이전트만 신뢰합니다. 시스템은 처음에 신뢰할 수 없는 펌웨어 코드로 부팅할 수 있지만 시작 직후 모든 CPU를 제어하고 잘 알려진 측정된 경로를 강제로 종료하여 신뢰할 수 있는 상태로 되돌아갑니다. 다음 다이어그램에서는 기존 D-RTM 흐름에 대한 개요를 제공합니다.

신뢰 측정의 동적 루트

S-RTM과 D-RTM 간에는 절충이 있습니다. S-RTM에는 특별한 하드웨어 기능이 필요하지 않지만 전체 부팅 중에 실행된 코드를 더 잘 설명하기 위해 소프트웨어가 필요합니다. D-RTM에는 특별한 하드웨어 기능이 필요하지만 소프트웨어가 시스템 수명 동안 동적으로 신뢰할 수 있는 상태로 시작할 수 있습니다.

Windows 보안 코어 PC는 보안 실행에서 D-RTM을 사용하여 광범위한 시스템 제조업체가 펌웨어에서 고유한 기능과 환경을 구현할 수 있도록 하는 동시에 시스템이 보안 운영 체제 환경을 호스트할 수 있는 신뢰할 수 있고 측정된 상태에 도달할 수 있도록 지원합니다. D-RTM 시작 이벤트는 보안 커널을 로드하기 전에 알 수 없는 환경에서 트러스트를 다시 설정하기 위해 사용됩니다. 다음 다이어그램에서는 알려진 시스템 환경을 다시 설정하는 D-RTM 시작 이벤트를 보여 줍니다.

알려진 시스템 환경을 다시 설정하는 D R T M 시작 이벤트

과거에는 시스템의 보안 상태를 확인하기 위한 특수 하드웨어 기능에 대한 종속성이 부족하여 더 많은 디바이스에서 S-RTM을 구현할 수 있었지만 운영 체제에는 S-RTM을 사용하여 지정된 Windows 디바이스에서 보고된 측정값을 신뢰할 수 있는지 확인하는 신뢰할 수 있는 방법이 없었습니다.

펌웨어 보안 향상

OS 부팅 경로에서 펌웨어 구성 요소 최소화

S-RTM 측정을 신뢰하는 한 가지 방법은 최소 집합으로 실행할 수 있는 펌웨어 구성 요소를 줄이는 것입니다. S-RTM을 사용하는 모든 디바이스에서 동일한 펌웨어 구성 요소 집합을 사용하는 경우 운영 체제는 알려진 구성 요소와 신뢰할 수 있는 구성 요소에 대해 예상되는 PCR 값의 단일 집합만 신뢰하면 됩니다. 이 SRTM 기반 접근 방식을 사용하면 부팅 펌웨어 집합이 Windows에서 증명할 수 있는 Microsoft 서명된 소프트웨어만 포함하도록 확인된 경우 디바이스가 보안 코어 PC의 펌웨어 보호 요구 사항을 충족한 것으로 간주될 수 있습니다. 이러한 펌웨어 구성 요소가 일반 PC 부팅의 구성 요소와 어떻게 다른지 더 잘 이해하려면 부팅 프로세스 전후를 살펴보겠습니다.

최신 PC 펌웨어에서 제공하는 유연성과 풍부한 기능 집합으로 인해 운영 체제 이전에 실행되는 코드로 인해 공격 표면이 증가합니다. 다음 다이어그램은 기존 S-RTM 부팅 흐름의 예를 보여줍니다.

기존 S R T M 부팅 흐름

부팅하는 동안 펌웨어의 주요 책임은 다음과 같이 크게 간소화될 수 있습니다.

  • 플랫폼별: 특정 플랫폼 하드웨어 디자인에만 적용되는 기능입니다.

  • 비 플랫폼별: 업계 표준이며 다른 하드웨어에 공통적인 기능입니다.

현대 펌웨어의 비교적 작은 하위 집합은 일반적으로 플랫폼별로 다릅니다. 메모리 할당, 펌웨어 드라이버 디스패치, 이벤트 처리 등과 같은 일반적인 작업을 수행하는 대부분의 펌웨어 인프라 코드는 모든(또는 대부분의) UEFI 기반 시스템 간에 동일합니다. 이러한 작업에 대한 펌웨어 이진 드라이버는 PC에서 다시 사용할 수 있습니다. 또한 업계 표준 하드웨어 사양 및 인터페이스를 사용하면 일반적인 펌웨어 드라이버가 하드 디스크, USB 컨트롤러 및 기타 주변 장치를 초기화할 수 있습니다. 이 하드웨어의 펌웨어 이진 드라이버는 PC에서 다시 사용할 수도 있습니다. 요약하자면, PC는 최소한의 공통 펌웨어 드라이버 집합으로 부팅할 수 있습니다.

부팅 중에 로드된 펌웨어 드라이버의 총 집합을 줄이면 다른 이점이 발생할 수 있습니다.

  • 부팅 시간 향상

  • 업데이트에 대한 공급업체 조정 감소

  • 버그 노출 감소

  • 공격 노출 영역 감소

FASR 부팅 경로 확인 및 보안 코어 규정 준수

FASR 시스템이 보안 코어 PC의 펌웨어 보호 요구 사항을 충족하려면 인증된 부팅 경로에서 부팅해야 합니다. FASR 펌웨어는 인증된 경로의 모듈 부팅 시퀀스에 대한 예상 PCR 값을 포함하는 FASR 매니페스트(TPM으로 측정됨)라는 Microsoft 서명 매니페스트를 운영 체제에 제공하여 이를 용이하게 합니다. 이는 인증된 경로에서 발생한 실제 부팅 시퀀스와 비교할 수 있습니다. 이러한 측정값이 일치하는 경우 시스템은 보안 코어 PC 프로그램의 펌웨어 보호 요구 사항을 충족한 것으로 간주됩니다. 예상되는 인증된 부팅 경로 시퀀스의 편차로 인해 운영 체제에서 감지하는 TPM의 PCR(플랫폼 구성 레지스터)에 예기치 않은 측정이 수행됩니다.

또한 Windows는 현재 부팅 중에 기록된 측정값에 대해 서명된 FASR 매니페스트의 유효성을 성공적으로 검사하는 경우에만 하이퍼바이저로 보호되는 비밀을 해제합니다. 인증된 부팅 경로 또는 캡슐 업데이트에서 FASR 매니페스트가 없거나 서명 확인이 실패하거나 PCR 불일치가 발생하고 VSM 비밀이 봉인되지 않거나 마이그레이션되지 않습니다.

FASR 펌웨어가 메모리 보호 및 SMM을 해결하는 방법

이제 최소한의 기능 집합으로 서명된 단일 Microsoft 이진 파일이 정의되었으므로 Microsoft가 파트너와 협력하여 시장에 출시하는 근본적이지만 누락된 펌웨어 보안 보호를 포함할 수 있습니다. 인증된 부팅 경로는 최소한 다음 요구 사항을 충족해야 합니다.

  1. 코드가 NULL/페이지 0에 읽거나 쓰지 않음

  2. 이미지 코드 및 데이터 섹션이 구분됩니다.

  3. 이미지 섹션이 페이지(4KB) 경계에 맞춰집니다.

  4. 데이터는 데이터 메모리 형식 및 코드 메모리 형식으로만 할당됩니다.

  5. 코드 이미지는 UEFI 이진 파일로 배포된 코드에서 로드되지 않습니다(지정된 디스패처만).

  6. 코드는 페이지 할당 주위에 가드 페이지가 있는 할당된 메모리 버퍼의 경계 내에 유지됩니다.

  7. 스택 오버플로를 검색할 수 있습니다.

  8. 스택에서 코드가 실행되지 않음

  9. /NXCOMPAT DLL 특성은 NX 보호를 사용하도록 설정됩니다.

타사 옵션 ROM, UEFI 애플리케이션 및 UEFI 드라이버는 이 요구 사항 집합에 대해 빌드되거나 유효성이 검사되지 않은 경우가 많습니다. 따라서 인증된 부팅 경로에서 실행되지 않습니다. 사용자 지정 부팅 경로는 필요에 따라 필요한 보호 수준을 낮추도록 선택할 수 있지만 해당 부팅 경로는 운영 체제에서 보안 코어 PC를 준수하는 것으로 간주되지 않습니다.

SMM(시스템 관리 모드)

SMM은 x86 아키텍처의 특수 프로세서 운영 모드입니다. SMM 환경에서 실행되는 코드가 운영 체제에 불투명하고 일반적으로 호스트 프로세서의 소프트웨어 중 가장 높은 권한 수준("링 -2"이라고도 함)에서 실행되기 때문에 시스템 보안에 고유한 문제가 발생합니다. 입력 시 SMM은 페이지 테이블, 인터럽트 디스패치 테이블(IDT) 및 기타 시스템 구조를 설정하여 자체 환경을 구성합니다. SMM은 악성 코드에서 VBS(가상화 기반 보안)를 통해 사용하도록 설정된 OS 보호를 손상시키거나 우회하는 데 사용할 수 있는 중요한 공격 표면을 나타냅니다. SMM으로 인한 위험을 완화하기 위해 다음과 같이 SMM의 기능을 SMM 핵심 인프라 및 SMM 드라이버로 개념적으로 분할할 수 있습니다.

  • SMM 코어: 아키텍처 및 인프라 책임을 수행하는 모든 SMM 구현에 공통적인 코드

  • SMM 드라이버: SMM에서 플랫폼별 작업을 수행하기 위해 작성된 코드

SMM 수명 주기의 몇 가지 중요한 순간은 다음과 같습니다.

  1. SMM 기반(또는 코어)이 설정된 경우 - SMM IPL(초기 프로그램 로드)

  2. SMM 드라이버가 로드되는 경우 - SMM 드라이버 디스패치라고 함

  3. SMM에 대한 항목이 발생하는 경우 - SMI(시스템 관리 인터럽트)를 통해

SMM IPL(초기 프로그램 로드)

CPU에는 SMM 코드에 높은 권한을 부여하고 보호하는 데 도움이 되는 특수 기능이 있습니다. 예를 들어 소프트웨어 또는 하드웨어 이벤트를 통해 SMM을 입력하도록 메커니즘이 정의되고, CPU 명령이 SMM에서 반환되며, 여러 레지스터가 SMM의 액세스 및 잠금 구성을 제어하도록 정의됩니다. 이러한 컨트롤 레지스터의 대부분은 SMM 코드 및 데이터가 저장되는 메모리 영역(시스템 관리 RAM 또는 SMRAM이라고 함)에 대한 액세스를 제한하도록 SMM IPL 코드에 의해 구성됩니다.

SMRAM 영역은 주 메모리(DRAM)에 있으므로 부팅하는 동안 DRAM을 사용하도록 설정할 때까지 설정할 수 없습니다. DRAM 사용 프로시저는 실리콘 공급업체마다 다르지만 주 메모리를 사용할 수 있기 전에 CPU LLC 캐시(DRAM을 초기화하는 코드 포함)에서 직접 몇 메가바이트의 코드를 실행할 수 있습니다.

FASR 펌웨어는 대부분의 다른 시스템보다 부팅 초기에 SMM IPL 지점을 제공합니다. 이렇게 하면 공격자가 SMM을 설정하기 전에 이 프로세스를 훼손하고 시스템을 제어할 기회가 줄어듭니다. FASR 펌웨어의 SMM에 대한 이러한 기능 및 기타 개선 사항을 더 잘 이해하려면 펌웨어 부팅 프로세스에 대해 자세히 알아보아야 합니다.

UEFI 펌웨어의 PI(플랫폼 초기화) 부팅

최신 PC 펌웨어는 많은 사양을 중심으로 구축되었습니다. UEFI 사양은 Windows와 같은 UEFI 규격 운영 체제와 디바이스의 펌웨어 간의 인터페이스를 정의합니다. PI(플랫폼 초기화) 사양이라는 또 다른 사양은 펌웨어 드라이버가 빌드되는 방식을 정의하고 부팅 프로세스 자체를 자세히 설명합니다. 개략적으로 UEFI 사양은 단일 Windows 이미지가 다양한 디바이스에서 작동할 수 있는 표준화 중 하나로 간주될 수 있으며, PI 사양은 여러 하드웨어 공급업체의 많은 펌웨어 이미지가 함께 작동할 수 있도록 하는 표준화 중 하나로 간주될 수 있습니다. 두 사양 모두 UEFI 포럼에서 유지 관리됩니다.

PI 사양은 부팅 단계와 부팅 단계에 기록되는 드라이버를 정의합니다. 펌웨어 부팅 중에 각 단계가 다음 단계로 전달되며, 대부분의 경우 단계 전달의 드라이버는 더 이상 사용되지 않으며 부팅 프로세스를 계속할 수 있도록 중요한 데이터만 다음 단계로 전달됩니다. 부팅 단계는 다음과 같이 요약할 수 있습니다.

  1. SEC – CPU 재설정 벡터에서 제어를 얻고 어셈블리에서 C 코드로 전환하여 PEI 로드

  2. PEI – DXE를 로드하고 DRAM을 초기화하도록 시스템 상태를 초기화합니다.

  3. DXE – 나머지 시스템 초기화를 수행합니다. 여기에는 BDS가 운영 체제를 로드해야 하는 지원 제공이 포함됩니다.

  4. BDS – 현재 부팅에 대한 부팅 옵션(예: OS 부팅 로더)을 검색하고 해당 옵션을 부팅하려고 시도합니다.

  5. OS – 운영 체제 커널

SMM IPL(초기 프로그램 로드) 보호

기존의 UEFI PI 사양 규격 펌웨어는 DXE 부팅 단계에서 SMM IPL을 로드합니다. FASR 펌웨어는 PEI 부팅 단계에서 SMM IPL을 로드합니다. 시스템의 TCB(신뢰할 수 있는 컴퓨팅 베이스)는 하드웨어, 펌웨어 및 소프트웨어를 포함하여 시스템을 보호하는 총 보호 메커니즘 집합입니다. SMM IPL을 DXE에서 PEI로 이동하면 전체 DXE 단계(PEI보다 크고 풍부한 환경)가 TCB에서 제거됩니다. 다음 다이어그램은 UEFI 부팅 프로세스에서 이전에 이동한 SMM IPL을 보여줍니다.

S M I P L이 UE F I 부팅 프로세스에서 이전으로 이동됨

PEI 및 DXE 코드는 링 0에서 실행되며 운영 체제에 유지되지 않습니다(몇 가지 예외 제외). SMM 코드는 링 0(및 하이퍼바이저)보다 높은 권한으로 실행되고 운영 체제에 유지되므로 DXE 취약성이 SMM 설정에 영향을 주지 않도록 하면 전체 시스템 공격 표면이 줄어듭니다. 또한 부팅 프로세스의 초기에 SMM이 시작되었으므로 SMM을 보호하는 데 도움이 되는 잠금 비트를 부팅 초기에 사용하도록 설정하여 공격자의 창을 최소화하여 SMM을 손상시킬 수 있습니다.

SMM 드라이버 디스패치 프로세스 보호

PI 사양 내에서 두 개의 SMM 모드인 기존 MM 및 독립 실행형 MM이 정의됩니다. 기존 MM은 업계에서 가장 많은 UEFI 펌웨어를 구성하는 PI 규격 펌웨어에 사용된 SMM 소프트웨어 모델과 동일합니다. 독립 실행형 MM은 SMM 환경의 보안을 개선하고 수년에 걸쳐 수많은 이식성 및 보안 문제를 초래한 기존 MM 구현에서 발생하는 일반적인 실수를 방지하기 위해 기록 모델을 수정하는 비교적 새로운 모드입니다.

FASR 펌웨어는 독립 실행형 MM 모드에서만 작동합니다. 이를 통해 FASR 펌웨어는 SMM에서 소프트웨어 실행에 대한 훈련된 접근 방식을 따를 수 있습니다. 오늘날 많은 SMM 기반 취약성은 독립 실행형 MM에서 단순히 제거할 수 있는 기존 MM의 SMM 코드에서 허용되는 잘못된 사례 때문입니다. 고급 수준에서 이 문제는 기존 MM 모델에서 SMM 드라이버가 링 0의 DXE 디스패처에 의해 두 번, 그리고 SMM의 SMM 디스패처에 의해 두 번 디스패치되기 때문에 발생합니다. 이렇게 하면 DXE 환경에서 실행되는 드라이버 코드가 진입점이 반환된 후 액세스해서는 안 되는 SMRAM 외부 리소스에 대한 포인터를 캐시할 수 있는 충분한 기회를 제공합니다. SMM 외부에서 코드를 호출하기 위해 SMM 코드에 의존하는 공격을 "SMM 설명선 공격"이라고도 합니다.

SMM에 대한 항목 보호

데이터는 "통신 버퍼"라는 구조를 통해 SMI 처리기에 전달됩니다. SMI 처리기는 데이터가 진입점의 특정 요구 사항을 충족하는지 여부를 확인해야 합니다. WSMT(Windows SMM 보안 완화 테이블)는 운영 체제의 가상화 기반 보안에 대한 위협을 확인하지 않은 SMI 처리기를 완화하는 데 사용되는 메커니즘 중 하나입니다. Microsoft는 통신 버퍼 유효성 검사를 개선하기 위해 TianoCore 프로젝트에 코드를 제공했습니다. FASR 코드는 이러한 두 가지 기술을 적용하는 것 외에도 엄격한 메모리 액세스 보호를 구현하여 SMM 코드가 명시적으로 허용된 메모리 범위에만 액세스할 수 있도록 합니다.

관리 모드 감독자(MM 감독자)

SMM 코어 코드는 일반적이며 시스템 간에 최소한의 변경 없이 공유됩니다. SMM 환경에 대한 권한 분리를 도입하여 SMM에 의해 부과된 공격 표면을 크게 줄일 수 있습니다. 이러한 이유로 FASR 펌웨어에는 독립 실행형 MM에서 실행되는 SMM 감독자가 포함됩니다. 이렇게 하면 만들기에서 적용된 권한 수준이 있는 최소 TCB를 사용하여 잘 정의된 SMM 환경이 생성됩니다. MM 감독자는 SMM 환경에서 IO 포트 액세스, MSR(모델별 레지스터) 액세스, MMIO 액세스, CPU 저장 상태 액세스 및 허용된 지침에 제한을 줍니다. SMM 감독자 정책은 제한할 하드웨어 리소스의 정확한 세부 정보를 구성하는 데 사용되며, 이러한 정확한 세부 정보는 실리콘 생성별로 변경될 수 있습니다.

이 정책은 최근 SMM 감독자 외부에서 코드에 사용할 수 있는 하드웨어 리소스를 크게 줄이는 기본 거부 접근 방법으로 전환되었습니다. 이 감독자는 최신 PC에서 일반적으로 찾을 수 없는 하드웨어 기능에 대한 하드웨어 종속성 없이 작동합니다.

MM 감독자는 오픈 소스인 FASR에서 사용되며 Project Mu MM 감독자 리포지토리에서 사용할 수 있습니다.

보안 코어 PC 요구 사항을 사용하는 FASR 시스템 규정 준수

다음 표에서는 보안 코어 PC의 광범위한 보안 핵심 요소 또는 목표와 인증된 경로에서 부팅되는 FASR 시스템이 보안 코어 PC의 요구 사항을 달성할 수 있는 방법을 나타냅니다.

보안 혜택 보안 코어 PC의 보안 기능
하드웨어 지원 신뢰 루트 만들기 보안 부팅
신뢰할 수 있는 플랫폼 모듈 2.0
DMA(직접 메모리 액세스) 보호
펌웨어 수준 공격 방어(아래 참고 참조) D-RTM(System Guard Secure Launch) 또는 S-RTM(FASR FW)
SMM(시스템 관리 모드) 격리 또는 독립 실행형 MM(MM 감독자) (FASR FW)
확인되지 않은 코드 실행으로부터 OS 보호 메모리 무결성(HVCI라고도 함)
고급 ID 검증 및 보호 제공 Windows Hello
분실하거나 도난당한 디바이스의 경우 중요한 데이터 보호 BitLocker 암호화

시스템에 D-RTM을 지원하는 고급 보안 기능이 없는 경우 펌웨어 보호 요구 사항은 모두 FASR 펌웨어에서 제공하는 MM 감독자와 함께 S-RTM 및 독립 실행형 MM의 조합을 사용하여 충족할 수 있습니다.

요약

이는 Microsoft가 오늘날 업계 전반에 널리 퍼진 점점 더 많은 펌웨어 공격을 해결하기 위해 투자한 투자 중 일부입니다. 이러한 변경에 오픈 소스 코드를 사용하여 파트너는 이러한 보안 혜택 중 일부를 사용할 수 있도록 하여 광범위한 에코시스템 및 업계에 큰 혜택을 줄 수 있습니다.

보안 코어 PC 이니셔티브의 주요 목표는 고객이 Windows PC에서 사용할 수 있는 가장 고급 보안 기능 중 일부에 액세스할 수 있도록 하는 것입니다. 이러한 펌웨어 변경 사항 중 일부를 통해 해당 목표를 실현하는 데 한 걸음 더 가까워졌으며, 이러한 포함을 반영하도록 보안 코어 PC의 펌웨어 보호 요구 사항을 업데이트했습니다. 여기에서 보안 코어 PC에 대해 자세히 알아보세요.