예측 실행 부채널 취약성 방지를 위한 Windows 지침

적용 대상: Windows Server 2019, all versionsWindows 10, version 1809Windows Server version 1803

요약


Microsoft는 예측 실행 부채널 취약성으로 알려진 새로운 변종 공격 클래스를 인지하고 있습니다. 변종은 L1 터미널 결함(L1TF)마이크로아키텍처 데이터 샘플링(MDS)으로 이름이 지정되었습니다. L1TF 또는 MDS 취약성을 악용할 수 있는 공격자는 트러스트 경계를 벗어난 권한 있는 데이터를 읽을 수 있습니다.

2019년 5월 14일 업데이트: Intel은 2019년 5월 14일에 마이크로아키텍처 데이터 샘플링(Microarchitectural Data Sampling)이라는 새로운 종류의 예측 실행 부채널 취약성에 대한 정보를 발표했습니다. 다음 CVE가 할당되었습니다.

2019년 11월 12일 화요일 업데이트: 2019년 11월 12일 Intel에서 CVE-2019-11135를 할당하는 Intel® TSX(Intel® Transactional Synchronization Extensions) Transaction Asynchronous Abort 취약성에 관한 기술 권고를 게시했습니다. Microsoft는 이 취약성을 완화하기 위해 업데이트를 발표했습니다. 다음 사항에 유의하십시오.

  • 기본적으로 운영 체제 보호는 일부 Windows Server OS 버전의 경우 기본적으로 사용하도록 설정됩니다. 자세한 내용은 Microsoft 기술 자료 문서 4072698을 참조하세요.
  • 기본적으로 운영 체제 보호는 일부 Windows Client OS 버전의 경우 기본적으로 사용하도록 설정됩니다. 자세한 내용은 Microsoft 기술 자료 문서 4073119을 참조하세요.

취약성 개요


가상화 호스트 같이 리소스가 공유되는 환경의 경우 하나의 가상 머신에서 임의의 코드를 실행할 수 있는 공격자는 다른 가상 머신이나 가상화 호스트 자체의 정보에 액세스할 수 있습니다.

Windows Server RDS(원격 데스크톱 서비스) 같은 서버 작업 및 Active Directory 도메인 컨트롤러 같은 전용 역할도 공격받을 위험이 있습니다. 권한 수준에 관계없이 임의의 코드를 실행할 수 있는 공격자는 암호화 키, 암호 및 기타 중요한 데이터 같은 운영 체제 또는 작업 암호에 액세스할 수 있습니다.

Windows 클라이언트 운영 체제도 위험합니다. 특히, 신뢰할 수 없는 코드를 실행할 경우 Windows Defender Credential Guard 등 가상화 기반 보안을 이용하거나 Hyper-V로 가상 머신을 실행합니다.

참고: 이 취약성은 Intel Core 프로세서 및 Intel Xeon 프로세서에만 영향을 미칩니다.

완화 기능 개요

Microsoft는 이러한 문제를 해결하기 위해 Intel과 협력하여 소프트웨어 완화 기능과 지침을 개발하고 있습니다. 취약성 완화에 도움이 되는 소프트웨어 업데이트는 출시된 상태입니다. 제공되는 보호 기능을 모두 받으려면 장치 OEM에서 제공하는 마이크로코드가 포함될 수도 있는 업데이트가 필요할 수 있습니다.

이 문서에서는 다음 취약성을 완화하는 방법을 설명합니다.

  • CVE-2018-3620 – "L1 터미널 결함 – OS, SMM"
  • CVE-2018-3646 – "L1 터미널 결함 – VMM"
  • CVE-2018-11091 – "MDSUM(마이크로아키텍처 데이터 샘플링 캐시 불가능 메모리)"
  • CVE-2018-12126 – "MSBDS(마이크로아키텍처 저장 우회 데이터 샘플링)"
  • CVE-2018-12127 – "MLPDS(마이크로아키텍처 로드 포트 데이터 샘플링)"
  • CVE-2018-12130 – “(마이크로아키텍처 채우기 버퍼 데이터 샘플링)”
  • CVE-2019-11135 – "Windows 커널 정보 유출 취약성"

취약성에 대해 자세히 알아보려면 다음 보안 공지를 참조하세요.

L1TF: https://portal.msrc.microsoft.com/ko-kr/security-guidance/advisory/adv180018

MDS: https://portal.msrc.microsoft.com/ko-kr/security-guidance/advisory/adv190013

Windows 커널 정보 유출 취약성: https://portal.msrc.microsoft.com/ko-kr/security-guidance/advisory/CVE-2019-11135

위협 완화에 필요한 조치 확인


다음 절의 내용은 L1TF 및/또는 MDS 취약성의 영향을 받는 시스템을 식별하는 데는 물론, 위험을 이해하고 완화하는 데에도 도움이 될 수 있습니다.

잠재적 성능 영향

테스트 결과, 이러한 완화 기능으로 인해 성능에 어느 정도 영향이 발생하는 것으로 확인되었지만, 이는 시스템 구성 및 필요한 완화 기능에 따라 다릅니다.

일부 고객의 경우 L1TF 및 MDS로 인한 위험을 완전히 해결하기 위해 하이퍼 스레딩(동시 멀티 스레딩 또는 SMT라고도 함)을 사용하지 않도록 설정해야 할 수 있습니다. 하이퍼 스레딩을 사용하지 않도록 설정하면 성능 저하 현상이 발생할 수 있습니다. 이러한 상황은 다음을 사용하는 고객에게 발생합니다.

  • Windows Server 2016 또는 Windows 10 버전 1607(1주년 업데이트)보다 이전인 Hyper-V 버전
  • VBS(가상화 기반 보안) 기능(예: Credential Guard 및 Device Guard)
  • 신뢰할 수 없는 코드의 실행을 허용하는 소프트웨어(예: 빌드 자동화 서버 또는 공유 IIS 호스팅 환경)

영향은 시스템에서 실행되는 작업 및 하드웨어에 따라 다를 수 있습니다. 가장 일반적인 시스템 구성은 하이퍼 스레딩을 사용하도록 설정하는 것입니다. 따라서 시스템에서 하이퍼 스레딩을 사용하지 않도록 설정하는 조치를 취하는 사용자 또는 관리자의 경우 성능상의 영향이 발생하지 않습니다.

참고: 시스템에서 VBS로 보호되는 보안 기능을 사용하는지 여부를 확인하려면 다음 단계를 수행하세요.

  1. 시작 메뉴에서 MSINFO32를 입력합니다.

    참고: 시스템 정보 창이 열립니다.
  2. 찾을 내용 상자에 보안을 입력합니다.
  3. 오른쪽 창에서 스크린샷에서 선택된 두 개의 행을 찾고 열에서 가상화 기반 보안이 사용하도록 설정되어 있는지 여부와 실행 중인 가상화 기반 보안 서비스를 확인합니다.
     

    시스템 정보 창


Hyper-V 코어 스케줄러는 하이퍼 스레딩을 계속 사용하도록 설정한 상태로 유지하면서 Hyper-V 가상 머신에 대한 L1TF 및 MDS 공격 벡터를 완화합니다. 코어 스케줄러는 Windows Server 2016 및 Windows 10 버전 1607부터 사용할 수 있습니다. 이것은 가상 머신의 성능에 미치는 영향도 최소화합니다

코어 스케줄러는 VBS로 보호되는 보안 기능에 대해 L1TF 또는 MDS 공격 벡터를 완화하지 않습니다. 자세한 내용은 완화 조치 C 및 다음 가상화 블로그 문서를 참조하세요.

https://aka.ms/hyperclear

성능상의 영향과 관련하여 Intel에서 공개한 자세한 내용을 보려면 다음 Intel 웹 사이트를 방문하세요.

www.intel.com/securityfirst

영향을 받는 시스템 및 필요한 완화 기능 식별

그림 1의 순서도는 영향을 받는 시스템을 식별하고 올바른 조치를 확인하는 데 도움이 될 수 있습니다. 

중요: 가상 머신을 사용할 경우 순서도는Hyper-V 호스트와 영향을 받는 각 VM 게스트에 개별적으로 고려해서 적용해야 합니다. 완화 기능이 둘 다에 적용될 수 있기 때문입니다. 특히, Hyper-V 호스트의 경우 순서도의 단계에서는 VM 간 및 호스트 내 보호 기능을 제공합니다. 하지만 이러한 완화 기능을 Hyper-V 호스트에만 적용하는 것으로는 VM 간 보호 기능을 제공하는 데 부족합니다. VM 간 보호 기능을 제공하려면 순서도를 각각의 Windows VM에 적용해야 합니다. 대부분의 경우 이렇게 하면 VM에서 레지스트리 키가 설정됩니다.

순서도를 탐색하면 해당 시스템 구성과 관련된 L1TF 공격 벡터를 완화하는 데 필요한 하나 이상의 조치에 매핑되는 글자가 있는 파란색 원이 있습니다. 확인되는 각각의 조치를 적용해야 합니다. 녹색 선이 나타나는 경우 끝을 나타내는 것이므로 추가로 수행할 완화 단계가 없습니다. 

글자가 있는 각 완화 기능의 간단한 설명은 오른쪽의 범례에 포함되어 있습니다. 단계별 설치 및 구성 지침이 포함되어 있는 각 완화 기능에 대한 자세한 설명은 "완화 기능" 절에 나와 있습니다.

순서도

 

완화 기능


중요: 다음 절에서는 이전 절의 그림 1에 있는 순서도를 통해 확인되는 특정한 조건에서만 적용해야 하는 완화 기능에 대해 설명합니다. 순서도에 특정 완화 기능이 필요한 것으로 나타나 있는 경우를 제외하고는 이러한 완화 기능을 적용해서는 안 됩니다.

특정 보호 기능을 사용하도록 설정하려면 소프트웨어 및 마이크로코드 업데이트를 설치하는 것 외에 구성을 수동으로 변경해야 할 수도 있습니다. 엔터프라이즈 고객의 경우 보안 알림 메일러에 등록하여 콘텐츠 변경에 대한 알림을 받는 것이 좋습니다. (Microsoft 기술 보안 알림을 참조하세요.)

완화 조치 A

최신 Windows 업데이트 확보 및 적용

월별 Windows 보안 업데이트를 비롯하여 제공되는 모든 Windows 운영 체제 업데이트를 적용합니다. L1TF용 Microsoft 보안 공지 | ADV 180018, MDS용 보안 공지 | ADV 190013, Windows 커널 정보 유출 취약성용 CVE-2019-11135에서 영향을 받는 제품 표를 확인할 수 있습니다.

완화 조치 B

최신 마이크로코드 또는 펌웨어 업데이트 확보 및 적용

최신 Windows 보안 업데이트를 설치하는 동시에 프로세서 마이크로코드도 업데이트해야 합니다. 이러한 업데이트는 장치 OEM을 통해 설치합니다.

참고: 중첩된 가상화를 사용 중인 경우(게스트 VM에서 Hyper-V 컨테이너를 실행하는 것 포함), 게스트 VM에 새 마이크로코드 개발 사항을 노출해야 합니다. 이렇게 하려면 VM 구성을 버전 8로 업그레이드해야 할 수 있습니다. 버전 8에는 마이크로코드 개발 사항이 기본적으로 포함되어 있습니다. 자세한 내용 및 필요한 단계는 다음 Microsoft Docs 문서를 참조하세요.

중첩된 가상화를 통해 가상 머신에서 Hyper-V 실행

완화 조치 C

HT(하이퍼 스레딩)를 사용하지 않도록 설정해야 하나요?

L1TF 및 MDS 취약성은 Microsoft VBS(가상화 기반 보안)를 통해 유지되는 암호 및 Hyper-V 가상 머신의 기밀성이 부채널 공격으로 침해될 수 있는 위험한 상황의 원인이 됩니다. HT(하이퍼 스레딩)가 사용하도록 설정되어 있으면 Hyper-V와 VBS에서 제공하는 보안 경계가 모두 약화됩니다.

Hyper-V코어 스케줄러(Windows Server 2016 및 Windows 10 버전 1607부터 사용 가능)는 하이퍼스레딩을 계속 사용하도록 설정한상태로 유지하면서 Hyper-V 가상 머신에 대한 L1TF 및 MDS 공격 벡터를 완화합니다. 이렇게 하면 성능에 미치는 영향도 최소화됩니다.

Hyper-V 코어 스케줄러는 VBS 보안 기능에 대해 L1TF 또는 MDS 공격 벡터를 완화하지 않습니다. HT(하이퍼 스레딩)를 사용하도록 설정한 경우 L1TF 및 MDS 취약성은 부채널 공격을 통해 VBS 암호의 기밀성을 손상시켜 VBS가 제공한 보안 경계를 약화시키는 위험을 야기할 수 있습니다. HT를 사용하도록 설정하면 이렇게 위험이 커진 상황에서도 VBS가 보안상의 이점을 제공하며 광범위한 공격을 완화합니다. 따라서 VBS는 계속 HT를 사용하도록 설정한 시스템에서 사용하는 것이 좋습니다. L1TF 및 MDS 취약성이 VBS의 기밀성에 미치는 잠재적 위험을 제거하고자 하는 고객은 이 추가 위험을 완화하기 위해 HT를 사용하지 않도록 설정해야 합니다.

L1TF 및 MDS 취약성으로 인해 Windows Server 2016 이전 Hyper-V 버전의 기밀성에 유발되는 위험이나 VBS 보안 기능에 발생하는 위험을 방지하려는 고객은 신중하게 결정하고 HT를 사용하지 않도록 설정해야 합니다. 일반적으로 이러한 사항을 결정할 때는 다음과 같은 지침을 기준으로 삼아야 합니다.

  • Hyper-V를 실행하지 않고 VBS로 보호되는 보안 기능을 사용하지 않는 Windows 10 버전 1607 및 Windows Server 2016 이상의 시스템의 경우 고객은 HT를 사용하지 않도록 설정해서는 안 됩니다.
  • Hyper-V와 코어 스케줄러를 함께 실행하지만 VBS로 보호되는 보안 기능을 사용하지 않는 Windows 10 버전 1607 및 Windows Server 2016 이상의 시스템의 경우 고객은 HT를 사용하지 않도록 설정해서는 안 됩니다.
  • Hyper-V를 실행하는 Windows 10 버전 1511 및 Windows Server 2012 R2 이하 시스템의 경우 고객은 위험을 완화하기 위해 HT를 사용하지 않도록 설정해야 합니다.

HT를 사용하지 않도록 설정하는 데 필요한 단계는 OEM마다 다릅니다. 하지만 일반적으로 BIOS 또는 펌웨어 설정 및 구성 도구를 통해 수행합니다.

Microsoft는 BIOS 또는 펌웨어 설정 및 구성 도구에서 HT를 비활성화하는 것이 어렵거나 불가능할 경우 소프트웨어 설정을 통해 하이퍼 스레딩 기술을 비활성화하는 기능도 도입했습니다. HT를 비활성화하는 소프트웨어 설정은 BIOS 또는 펌웨어 설정이 불가능할 경우에 사용하며 기본적으로 비활성화되어 있습니다(즉, HT가 BIOS 또는 펌웨어 설정을 따라 갑니다). 이 설정과 이를 사용하여 HT를 비활성화하는 방법은 다음 문서를 참조하세요.

4072698 예측 실행 부채널 취약성 방지를 위한 Windows Server 관련 지침

가능한 경우, HT가 비활성화될 수 있도록 BIOS 또는 펌웨어에서 HT를 비활성화하는 것이 좋습니다.

참고: 하이퍼 스레딩을 비활성화할 경우 CPU 코어가 줄어듭니다. 이로 인해 최소 CPU 코어가 작동하도록 하는 기능에 영향을 미칠 수 있습니다. 예: WDAG(Windows Defender Application Guard).

완화 조치 D

Hyper-V 코어 스케줄러를 사용하도록 설정하고 코어당 VM 하드웨어 스레드 수를 2로 설정

참고: 이 완화 조치는 Windows Server 2016 및 버전 1809 이전의 Windows 10에만 적용됩니다. 코어 스케줄러는 기본적으로 Windows Server 2019 및 Windows 10 버전 1809부터 사용할 수 있습니다.

코어 스케줄러를 사용하려면 먼저 Hyper-V 호스트에서 스케줄러를 사용하도록 설정한 다음 코어당 하드웨어 스레드 수를 2로 설정하여 이를 활용하도록 각 VM을 구성하는 2단계 프로세스를 거쳐야 합니다.

Windows Server 2016 및 Windows 10 버전 1607에 도입된 Hyper-V 코어 스케줄러는 클래식 스케줄러 로직의 새로운 대안입니다. 코어 스케줄러는 HT를 사용하는 Hyper-V 호스트에서 실행되는 VM 내에서 작업의 성능 변화를 줄여줍니다.

Hyper-V 코어 스케줄러에 대한 자세한 설명과 이를 사용하도록 설정하는 단계는 다음 Windows IT Pro Center 문서를 참조하세요.

Hyper-V 하이퍼바이저 스케줄러 유형 이해 및 사용

Windows Server 2016 또는 Windows 10에서 Hyper-V 코어 스케줄러를 사용하도록 설정하려면 다음 명령을 입력합니다.

bcdedit /set HypervisorSchedulerType core

그런 다음, 지정한 VM의 코어당 하드웨어 스레드 수를 2로 구성할지 여부를 결정합니다. 가상 프로세서가 게스트 가상 머신에 대해 하이퍼 스레딩되어 있다는 사실을 노출하는 경우 VM 운영 체제의 스케줄러와 VM 작업을 사용하도록 설정하여 고유한 작업 스케줄링에 HT를 사용합니다. 이렇게 하려면 다음 PowerShell 명령을 입력합니다. 여기서 <VMName>은 가상 머신의 이름입니다.

Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore 2

완화 조치 E

공지 CVE-2017-5715, CVE-2017-5754, CVE-2019-11135에 대해 완화 기능 사용

참고: 이 완화 기능은 Windows Server 2019 및 Windows 클라이언트 운영 체제에서 기본적으로 사용됩니다.

공지 CVE-2017-5715, CVE-2017-5754, CVE-2019-11135에 대해 완화 기능을 사용하도록 설정하려면 다음 문서의 지침을 따릅니다.

4072698 예측 실행 부채널 취약성 방지를 위한 Windows Server 관련 지침

4073119 예측 실행 부채널 취약성 방지를 위한 Windows 전문가용 Windows 클라이언트 관련 지침

 

참고: 이러한 완화 기능은 Windows 커널용 완화 기능 및 CVE-2018-3620에 설명된 완화 기능에 대한 안전한 페이지 프레임 비트 완화 기능을 포함하며 이를 자동으로 사용하도록 설정합니다. 안전한 페이지 프레임 비트 완화 기능에 대한 자세한 설명은 다음 Security Research & Defense 블로그 문서를 참조하세요.

L1TF(L1 터미널 결함) 분석 및 완화