了解 Get-SpeculationControlSettings PowerShell 指令碼輸出

適用於: Windows 10

摘要


為協助客戶確認理論式執行端通道緩和措施的狀態,Microsoft 已經發行 PowerShell 指令碼,可讓客戶在他們的系統上執行。 本主題說明如何執行指令碼,以及輸出所代表的意義。

資訊安全諮詢 ADV180002ADV180012ADV180018ADV190013 涵蓋下列九個弱點:

  • 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 (範圍檢查) 的保護不需要其他登錄設定或韌體更新。 這個主題提供有關 PowerShell 指令碼的詳細資訊,此指令碼可協助判斷上述各個 CVE 的緩和措施狀態,而這會需要其他登錄設定,在某些情況還需要韌體更新。

其他相關資訊


請執行下列命令,以安裝並執行指令碼:

使用 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 驗證 (舊版作業系統/舊版 WMF)

安裝 Technet 指令碼中心的 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

Speculation control settings for MDS [microarchitectural data sampling]

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]

這個區段會提供 Variant 2 CVE-2017-5715 分支目標導入的系統狀態。

Hardware support for branch target injection mitigation is present

對應至 BTIHardwarePresent。 這行說明是否存在可支援分支目標導入緩和措施的硬體功能。 裝置 OEM 會負責提供更新的 BIOS/韌體,其中包含 CPU 製造商所提供的微碼。 如果這行是 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]

這個區段會提供 Variant 3 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 無關安全性, 僅用於表示是否已啟用效能改善。 Windows Server 2008 R2 不支援 PCID

對應至 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。 這行說明是否存在可支援「理論式儲存略過停用」的硬體功能。 裝置 OEM 會負責提供更新的 BIOS/韌體,其中包含 Intel 所提供的微碼。 如果這行是 True,表示存在必要的硬體功能。 如果是 False,表示不存在必要的硬體功能,因此無法啟用「理論式儲存略過停用」。

注意:如果主機已經套用 OEM 更新,則客體 VM 中的 SSBDHardwarePresent 會是 True

 

Windows OS support for Speculative Store Bypass Disable is turned on

對應至 SSBDWindowsSupportEnabledSystemWide。 這行說明 Windows 作業系統是否已經啟用「理論式儲存略過停用」。 如果是 True,表示裝置已啟用對「理論式儲存略過停用」的硬體支援和 OS 支援,可防止「理論式儲存略過」發生,進而完全消除安全性風險。 如果是 False,表示下列其中一個情況為真:

  • 硬體支援不存在。
  • OS 支援不存在。
  • 尚未透過登錄機碼啟用「理論式儲存略過停用」。 請參閱下列文章,以取得有關如何啟用的指示:

IT 專業人員防範理論式執行端通道弱點的 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。 這行說明 L1 終端機錯誤 (L1TF) 作業系統緩和措施的 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 作業系統支援不存在,或者緩和措施尚未啟用。
Speculation control settings for MDS [Microarchitectural Data Sampling] 這個區段會提供 MDS 集合弱點 CVE-2018-11091CVE-2018-12126CVE-2018-12127CVE-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-11091CVE-2018-12126CVE-2018-12127CVE-2018-12139) 的攻擊。 如果是 True,表示硬體容易受到這些弱點的影響。 如果是 False,表示硬體不容易受到攻擊。
 
Windows OS support for MDS mitigation is enabled 對應至 MDSWindowsSupportEnabled。 這行說明微結構資料取樣 (MDS) 的 Windows 作業系統緩和措施是否啟用。 如果是 True,表示硬體容易受到 MDS 弱點的影響、緩和措施的 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

對應至 - 分支目標導入 - BTIWindowsSupportEnabled

FeatureSettingsOverride – Bit 1

對應至 - Rogue 資料快取載入 - VAShadowWindowsSupportEnabled