Get-SpeculationControlSettings PowerShell 스크립트 출력 이해

적용 대상: Windows 10

요약


Microsoft는 고객이 예측 실행 부채널 완화 기능의 상태를 손쉽게 확인할 수 있도록 고객이 직접 시스템에서 실행 가능한 PowerShell 스크립트를 게시했습니다. 이 항목에서는 스크립트 실행 방법 및 출력의 의미에 대해 설명합니다.

9개의 취약성을 포괄하는 ADV180002ADV180012, ADV180018, ADV190013 공지:

  • CVE-2017-5715(분기 대상 삽입)
  • CVE-2017-5753(범위 확인 우회)
  • CVE-2017-5754(Rogue 데이터 캐시 로드)
  • CVE-2018-3639(예측 저장 우회)
  • CVE-2018-3620(L1 터미널 결함 – OS)
  • CVE-2018-11091(MDSUM(마이크로아키텍처 데이터 샘플링 캐시 불가능 메모리))
  • CVE-2018-12126(마이크로아키텍처 저장 버퍼 데이터 샘플링(MSBDS))
  • CVE-2018-12127(마이크로아키텍처 로드 포트 데이터 샘플링(MLPDS))
  • CVE-2018-12130(마이크로아키텍처 채우기 버퍼 데이터 샘플링(MFBDS))

CVE-2017-5753(바운드 검사)용 보호는 별도의 레지스트리 설정이나 펌웨어 업데이트가 필요하지 않습니다. 이 항목에서는 별도의 레지스트리 설정과 가끔은 펌웨어 업데이트까지도 필요한 상기의 다양한 CVE에 대해 완화 상태를 판단하는 데 도움이 되는 PowerShell 스크립트에 대한 자세한 내용을 제공합니다.

추가 정보


다음 명령을 실행하여 스크립트를 설치하고 실행하십시오.

PowerShell 갤러리를 사용한 PowerShell 확인(Windows Server 2016 또는 WMF 5.0/5.1)

PowerShell 모듈 설치

PS> Install-Module SpeculationControl

PowerShell 모듈을 실행하여 보호 기능이 사용하도록 설정되었는지 확인

PS> # Save the current execution policy so it can be reset

PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> Import-Module SpeculationControl

PS> Get-SpeculationControlSettings

PS> # Reset the execution policy to the original state

PS> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser

TechNet의 다운로드를 사용한 PowerShell 확인(이전 OS 버전/이전 WMF 버전)

TechNet ScriptCenter에서 PowerShell 모듈 설치

  1. https://aka.ms/SpeculationControlPS로 이동합니다.
  2. SpeculationControl.zip을 로컬 폴더에 다운로드합니다.
  3. 로컬 폴더(예: C:\ADV180002)에 파일의 압축을 풉니다.

PowerShell 모듈을 실행하여 보호 기능이 사용하도록 설정되었는지 확인

PowerShell을 시작한 다음 위의 예제를 사용하여 다음 명령을 복사하고 실행합니다.

PS> # Save the current execution policy so it can be reset

PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> CD C:\ADV180002\SpeculationControl

PS> Import-Module.\SpeculationControl.psd1

PS> Get-SpeculationControlSettings

PS> # Reset the execution policy to the original state

PS> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser


이 PowerShell 스크립트의 출력은 다음과 같습니다. 사용하도록 설정된 보호 기능의 경우 출력에서 “True”로 표시됩니다.

PS C:\> Get-SpeculationControlSettings
Speculation control settings for CVE-2017-5715 [branch target injection]
Hardware support for branch target injection mitigation is present: False
Windows OS support for branch target injection mitigation is present: True
Windows OS support for branch target injection mitigation is enabled: False
Windows OS support for branch target injection mitigation is disabled by system policy: True
Windows OS support for branch target injection mitigation is disabled by absence of hardware support: True
Speculation control settings for CVE-2017-5754 [rogue data cache load]
Hardware requires kernel VA shadowing: True
Windows OS support for kernel VA shadow is present: False
Windows OS support for kernel VA shadow is enabled: False
Windows OS support for PCID optimization is enabled: False

Speculation control settings for CVE-2018-3639 [speculative store bypass]

Hardware is vulnerable to speculative store bypass: True
Hardware support for speculative store bypass mitigation is present: False
Windows OS support for speculative store bypass mitigation is present: True
Windows OS support for speculative store bypass mitigation is enabled system-wide: False

Speculation control settings for CVE-2018-3620 [L1 terminal fault]

Hardware is vulnerable to L1 terminal fault: True
Windows OS support for L1 terminal fault mitigation is present: True
Windows OS support for L1 terminal fault mitigation is enabled: True

MDS(마이크로아키텍처 데이터 샘플링)의 예측 제어 설정

Windows OS support for MDS mitigation is present: True
Hardware is vulnerable to MDS: True
Windows OS support for MDS mitigation is enabled: True



BTIHardwarePresent: False
BTIWindowsSupportPresent: True
BTIWindowsSupportEnabled: False
BTIDisabledBySystemPolicy: True
BTIDisabledByNoHardwareSupport: True
KVAShadowRequired: True
KVAShadowWindowsSupportPresent: False
KVAShadowWindowsSupportEnabled: False
KVAShadowPcidEnabled: False
SSBDWindowsSupportPresent: True
SSBDHardwareVulnerablePresent: True
SSBDHardwarePresent: True
SSBDWindowsSupportEnabledSystemWide: False
L1TFHardwareVulnerable: True
L1TFWindowsSupportPresent: True
L1TFWindowsSupportEnabled: True
L1TFInvalidPteBit: 45
L1DFlushSupported: False
MDSWindowsSupportPresent: True
MDSHardwareVulnerable: True
MDSWindowsSupportEnabled: True

최종 출력은 앞의 행 출력에 매핑됩니다. 이는 PowerShell이 함수에 의해 반환된 개체를 인쇄하기 때문입니다. 다음 표에는 각 행에 대한 설명이 나와 있습니다.

출력

설명

Speculation control settings for CVE-2017-5715 [branch target injection]

이 섹션은 두 번째 변종인 CVE-2017-5715 (분기 대상 주입)에 대한 시스템 상태를 제공합니다.

Hardware support for branch target injection mitigation is present

BTIHardwarePresent에 매핑됩니다. 이 행은 분기 대상 주입 완화를 지원하기 위한 하드웨어 기능이 있는지 여부를 알려 줍니다. CPU 제조업체가 제공한 마이크로코드가 포함된 업데이트된 BIOS/펌웨어는 장치 OEM이 제공해야 합니다. 이 행이 True이면 필요한 하드웨어 기능이 있는 것입니다. 이 행이 False이면 필요한 하드웨어 기능이 없으므로 분기 대상 주입 완화를 사용하도록 설정할 수 없습니다.

참고호스트에 OEM 업데이트를 적용했으며 지침을 따른 경우 게스트 VM에서 BTIHardwarePresent가 True입니다.

Windows OS support for branch target injection mitigation is present

BTIWindowsSupportPresent에 매핑됩니다. 이 행은 Windows 운영 체제에서 분기 대상 주입 완화를 지원하는지 여부를 알려 줍니다. 이 행이 True이면 운영 체제에서 분기 대상 주입 완화를 사용하도록 설정할 수 있으며 시스템에 2018년 1월 업데이트가 설치된 것입니다. 이 행이 False이면 시스템에 2018년 1월 업데이트가 설치되지 않았으므로 분기 대상 주입 완화를 사용하도록 설정할 수 없는 것입니다.

참고게스트 VM이 호스트 하드웨어 업데이트를 검색할 수 없는 경우 BTIWindowsSupportEnabled가 항상False입니다.

Windows OS support for branch target injection mitigation is enabled

BTIWindowsSupportEnabled에 매핑됩니다. 이 행은 Windows 운영 체제에서 분기 대상 주입 완화 지원이 사용하도록 설정되어 있는지 여부를 알려 줍니다. 이 행이 True이면 장치에 대해 분기 대상 주입 완화에 대한 하드웨어 지원 및 OS 지원이 설정되어 있으므로 CVE-2017-5715로부터 보호됩니다. 이 행이 False이면 다음 조건 중 하나에 해당합니다.

  • 하드웨어 지원이 없습니다.
  • OS 지원이 없습니다.
  • 시스템 정책에 의해 완화가 사용하지 않도록 설정되었습니다.

Windows OS support for branch target injection mitigation is disabled by system policy

BTIDisabledBySystemPolicy에 매핑됩니다. 이 행은 분기 대상 주입 완화가 시스템 정책(예: 관리자가 정의한 정책)에 의해 사용하지 않도록 설정되었는지 여부를 알려 줍니다. 시스템 정책은 KB 4072698에 설명되어 있는 레지스트리 컨트롤을 참조합니다. 이 행이 True이면 시스템 정책으로 인해 완화가 사용하지 않도록 설정된 것입니다. 이 행이 False이면 다른 원인으로 인해 완화가 사용하지 않도록 설정된 것입니다.

Windows OS support for branch target injection mitigation is disabled by absence of hardware support

BTIDisabledByNoHardwareSupport에 매핑됩니다. 이 행은 하드웨어 지원이 없어 분기 대상 주입 완화가 사용하지 않도록 설정되었는지 여부를 알려 줍니다. 이 행이 True이면 하드웨어 지원이 없어 완화가 사용하지 않도록 설정된 것입니다. 이 행이 False이면 다른 원인으로 인해 완화가 사용하지 않도록 설정된 것입니다.

참고게스트 VM이 호스트 하드웨어 업데이트를 검색할 수 없는 경우 BTIDisabledByNoHardwareSupport가 항상 True입니다.

Speculation control settings for CVE-2017-5754 [rogue data cache load]

이 섹션은 세 번째 변종인 CVE-2017-5754(Rogue 데이터 캐시 로드)에 해당하는 시스템 상태 요약을 제공합니다. 이에 대한 완화를 커널 VA(가상 주소) 섀도 또는 Rogue 데이터 캐시 로드 완화라고 합니다.

Hardware requires kernel VA shadowing

KVAShadowRequired에 매핑됩니다. 이 행은 하드웨어가 CVE-2017-5754에 취약한지 여부를 알려 줍니다. 이 행이 True이면 하드웨어가 CVE-2017-5754에 취약한 것으로 간주됩니다. 이 행이 False이면 하드웨어가 CVE-2017-5754에 취약하지 않은 것으로 간주됩니다.

Windows OS support for kernel VA shadow is present

KVAShadowWindowsSupportPresent에 매핑됩니다. 이 행은 커널 VA 섀도 기능에 대한 Windows 운영 체제 지원이 있는지 여부를 알려 줍니다. 이 행이 True이면 장치에 2018년 1월 업데이트가 설치되어 있으며 커널 VA 섀도가 지원되는 것입니다. 이 행이 False이면 2018년 1월 업데이트가 설치되어 있지 않으며 커널 VA 섀도 지원이 없는 것입니다.

Windows OS support for kernel VA shadow is enabled

KVAShadowWindowsSupportEnabled에 매핑됩니다. 이 행은 커널 VA 섀도 기능이 사용하도록 설정되었는지 여부를 알려 줍니다. 이 행이 True이면 하드웨어가 CVE-2017-5754에 취약한 것으로 간주되고 Windows 운영 체제 지원이 있으며 기능이 사용하도록 설정된 것입니다. 현재 커널 VA 섀도 기능은 Windows 클라이언트 버전에서 기본적으로 사용하도록 설정되고 Windows Server 버전에서는 기본적으로 사용하지 않도록 설정됩니다. 이 행이 False이면 Windows 운영 체제 지원이 없거나 기능이 사용하도록 설정되지 않은 것입니다.

Windows OS support for PCID performance optimization is enabled

참고PCID는 보안에 반드시 필요한 것은 아니며 성능 향상 기능이 사용하도록 설정되었는지 여부만을 나타냅니다. PCID is not supported with Windows Server 2008 R2

KVAShadowPcidEnabled에 매핑됩니다. 이 행은 커널 VA 섀도에 대해 추가 성능 최적화가 사용하도록 설정되었는지 여부를 알려 줍니다. 이 행이 True이면커널 VA 섀도가 사용하도록 설정되고 PCID에 대한 하드웨어 지원이 있으며 커널 VA 섀도에 대한 PCID 최적화가 사용하도록 설정된 것입니다. 이 행이 False이면 하드웨어나 OS가 PCID를 지원하지 않을 수 있습니다. PCID 최적화를 사용하지 않도록 설정한다고 해서 보안상 취약한 것은 아닙니다.

Windows OS support for Speculative Store Bypass Disable is present

SSBDWindowsSupportPresent에 매핑됩니다. 이 행은 예측 저장 우회 비활성화에 대한 Windows 운영 체제 지원이 있는지 여부를 알려 줍니다. 이 행이 True이면 장치에 2018년 1월 업데이트가 설치되어 있으며 커널 VA 섀도가 지원되는 것입니다. 이 행이 False이면 2018년 1월 업데이트가 설치되어 있지 않으며 커널 VA 섀도 지원이 없는 것입니다.

Hardware requires Speculative Store Bypass Disable

SSBDHardwareVulnerablePresent에 매핑됩니다. 이 행은 하드웨어가 CVE-2018-3639에 취약한지 여부를 알려 줍니다. 이 행이 True이면 하드웨어가 CVE-2018-3639에 취약한 것으로 간주됩니다. 이 행이 False이면 하드웨어가 CVE-2018-3639에 취약하지 않은 것으로 간주됩니다.

Hardware support for Speculative Store Bypass Disable is present

SSBDHardwarePresent에 매핑됩니다. 이 행은 예측 저장 우회 비활성화를 지원하기 위한 하드웨어 기능이 있는지 여부를 알려 줍니다. Intel에서 제공한 마이크로코드가 포함된 업데이트된 BIOS/펌웨어는 장치 OEM이 제공해야 합니다. 이 행이 True이면 필요한 하드웨어 기능이 있는 것입니다. 이 행이 False이면 필요한 하드웨어 기능이 없으므로 예측 저장 우회 비활성화를 설정할 수 없습니다.

참고 호스트에 OEM 업데이트를 적용한 경우 게스트 VM에서 SSBDHardwarePresent가 True입니다.

 

Windows OS support for Speculative Store Bypass Disable is turned on

SSBDWindowsSupportEnabledSystemWide에 매핑됩니다. 이 행은 Windows 운영 체제에서 예측 저장 우회 비활성화가 설정되어 있는지 여부를 알려 줍니다. 이 행이 True이면 장치에서 예측 저장 우회가 발생하지 않도록 예측 저장 우회 비활성화에 대한 하드웨어 및 OS 지원이 설정되어 있으므로 보안 위험이 완전히 사라진 것입니다. 이 행이 False이면 다음 조건 중 하나에 해당합니다.

  • 하드웨어 지원이 없습니다.
  • OS 지원이 없습니다.
  • 예측 저장 우회 비활성화가 레지스트리 키를 통해 설정되지 않았습니다. 설정 방법과 관련된 지침은 다음 문서를 참조하세요.

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

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

 

Speculation control settings for CVE-2018-3620 [L1 terminal fault]

이 섹션은 CVE-2018-3620에서 언급된 L1TF(운영 체제)에 대한 요약 시스템 상태를 제공합니다. 이 완화 기능은 안전한 페이지 프레임 비트가 존재하지 않거나 유효하지 않은 페이지 테이블 항목에 사용되도록 합니다.

이 섹션은 CVE-2018-3646에 언급된 L1TF(VMM)에 대한 완화 기능 상태 요약은 제공하지 않습니다.

Hardware is vulnerable to L1 terminal fault: True L1TFHardwareVulnerable에 매핑됩니다. 이 행은 하드웨어가 L1 터미널 결함(L1TF, CVE-2018-3620)에 취약한지 여부를 알려 줍니다. 이 행이 True이면 하드웨어가 CVE-2018-3620에 취약한 것으로 간주됩니다. 이 행이 False이면 하드웨어가 CVE-2018-3620에 취약하지 않은 것으로 간주됩니다.
Windows OS support for L1 terminal fault mitigation is present: True L1TFWindowsSupportPresent에 매핑됩니다. 이 행은 L1TF(L1 터미널 결함) 운영 체제 완화 기능에 대한 Windows 운영 체제 지원이 있는지 여부를 알려 줍니다. 이 행이 True이면 장치에 2018년 8월 업데이트가 설치되어 있으며 CVE-2018-3620에 대한 완화 기능이 있는 것입니다. 이 행이 False이면 2018년 8월 업데이트가 설치되어 있지 않으며 CVE-2018-3620에 대한 완화 기능이 없는 것입니다.
Windows OS support for L1 terminal fault mitigation is enabled: True L1TFWindowsSupportEnabled에 매핑됩니다. 이 행은 L1 터미널 결함(L1TF, CVE-2018-3620)에 대한 Windows 운영 체제 완화 기능이 사용하도록 설정되어 있는지 여부를 알려 줍니다. 이 행이 True이면 하드웨어가 CVE-2018-3620에 취약한 것으로 간주되고 완화 기능에 대한 Windows 운영 체제 지원이 있으며 완화 기능이 사용하도록 설정된 것입니다. 이 행이 False이면 하드웨어가 취약하지 않거나, Windows 운영 체제 지원이 없거나, 완화 기능이 사용하도록 설정되지 않은 것입니다.
MDS(마이크로아키텍처 데이터 샘플링)의 예측 제어 설정 이 섹션은 MDS 취약성 세트 CVE-2018-11091, CVE-2018-12126, CVE-2018-12127, CVE-2018-12130의 시스템 상태를 제공합니다.
Windows OS support for MDS mitigation is present MDSWindowsSupportPresent에 매핑됩니다. 이 행은 마이크로아키텍처 데이터 샘플링(MDS) 운영 체제 완화 기능에 대한 Windows 운영 체제 지원이 있는지 여부를 알려 줍니다. 이 행이 True이면 장치에 2019년 5월 업데이트가 설치되어 있으며 MDS에 대한 완화 기능이 있는 것입니다. 이 행이 False이면 2019년 5월 업데이트가 설치되어 있지 않으며 MDS에 대한 완화 기능이 없는 것입니다.
Hardware is vulnerable to MDS MDSHardwareVulnerable에 매핑됩니다. 이 라인은 일련의 하드웨어가 마이크로아키텍처 데이터 샘플링(MDS) 취약성(CVE-2018-11091, CVE-2018-12126, CVE-2018-12127, CVE-2018-12139)에 취약한지 여부를 알려줍니다. 이 행이 True이면 하드웨어가 이러한 취약성에 영향을 받는 것으로 간주됩니다. 이 행이 False이면 하드웨어가 이러한 취약성에 영향을 받지 않는 것으로 간주됩니다.
 
Windows OS support for MDS mitigation is enabled MDSWindowsSupportEnabled에 매핑됩니다. 이 행은 마이크로아키텍처 데이터 샘플링(MDS)에 대한 Windows 운영 체제 완화가 있는지 여부를 알려 줍니다. 이 행이 True이면 하드웨어가 이러한 취약성에 영향을 받는 것으로 간주되고, 완화 기능에 대한 Windows 운영 체제 지원이 있으며, 완화 기능이 사용하도록 설정된 것입니다. 이 행이 False이면 하드웨어가 취약하지 않거나, Windows 운영 체제 지원이 없거나, 완화 기능이 사용하도록 설정되지 않은 것입니다.

다음은 각 조건을 충족하는 데 필요한 사항과 함께 모든 완화가 사용하도록 설정되었을 때 예상되는 출력입니다.

BTIHardwarePresent: True -> apply OEM BIOS/firmware update
BTIWindowsSupportPresent: True -> install January 2018 update
BTIWindowsSupportEnabled: True -> on client, no action required. On server, follow guidance .
BTIDisabledBySystemPolicy: False -> ensure not disabled by policy.
BTIDisabledByNoHardwareSupport: False -> ensure OEM BIOS/firmware update is applied.
KVAShadowRequired: True or False -> no action, this is a function of the CPU the computer uses


If KVAShadowRequired is True
KVAShadowWindowsSupportPresent: True -> install January 2018 update
KVAShadowWindowsSupportEnabled: True -> on client, no action required. On server, follow guidance .
KVAShadowPcidEnabled: True or False -> no action , this is a function of the CPU the computer uses

If SSBDHardwareVulnerablePresent is True
SSBDWindowsSupportPresent: True -> install Windows updates as documented in adv180012
SSBDHardwarePresent: True -> install BIOS/firmware update with support for SSBD from your device OEM

SSBDWindowsSupportEnabledSystemWide: True -> follow recommended actions to turn on SSBD

If L1TFHardwareVulnerable is True
L1TFWindowsSupportPresent: True -> install Windows updates as documented in adv180018
L1TFWindowsSupportEnabled: True -> follow actions outlined in adv180018 for Windows Server or Client as appropriate to enable the mitigation

다음 표에는 출력 내용과 그에 해당하는 레지스트리 키(예측 실행 부채널 취약성 방지를 위한 Windows Server 관련 지침에 설명되어 있음) 간의 매핑이 나와 있습니다.

레지스트리 키

매핑

FeatureSettingsOverride – Bit 0

매핑 대상 - Branch target injection - BTIWindowsSupportEnabled

FeatureSettingsOverride – Bit 1

매핑 대상 - Rogue data cache load - VAShadowWindowsSupportEnabled