Get-SpeculationControlSettings PowerShell スクリプトの概要


概要


ユーザーが投機的実行のサイドチャネルの緩和策の状態を確認できるように、マイクロソフトは、ユーザーのシステムで実行できる PowerShell スクリプトをリリースしました。 このトピックでは、スクリプトの実行方法と出力の意味について説明します。

アドバイザリ  adv180002、 adv180012、および adv180018 は、次の 5 つの脆弱性を対象としています。

  • CVE-2017-5715 (ブランチ ターゲットのインジェクション)
  • CVE-2017-5753 (境界チェックのバイパス)
  • CVE-2017-5754 (不正なデータ キャッシュの読み込み)
  • CVE-2018-3639 (投機的ストア バイパス)
  • CVE-2018-3620 (L1 Terminal Fault – OS)

CVE-2017-5753 (境界チェック) の保護に追加のレジストリ設定またはファームウェアの更新プログラムは必要はありません。このトピックでは、追加のレジストリ設定が必要で、場合によってはファームウェアの更新プログラムが必要な CVE-2017-5715、CVE-2017-5754、CVE-2018-3639、および CVE-2018-3620 の緩和策の状態を判断するために役立つ 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



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

 

最終的な出力グリッドは、前述の行の出力にマッピングされます。 PowerShell は、関数から返されたオブジェクトを出力するため、このように表示されます。 各行について次の表で説明します。

出力

説明

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

このセクションは、バリアント 2、 CVE-2017-5715 、ブランチ ターゲット インジェクションのシステム状態を示しています。

Hardware support for branch target injection mitigation is present

BTIHardwarePresent へのマップ。 この行は、ブランチ ターゲット インジェクションの緩和策をサポートするハードウェア機能が存在するかどうかを示します。 デバイス OEM は、CPU の製造元が提供するマイクロコードを含む更新された BIOS/ファームウェアの提供を担当しています。 この行が 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]

このセクションは、バリアント 3、CVE-2017-5754、不正なデータ キャッシュの読み込みに関するシステム状態の概要を示しています。 この問題の緩和策は、カーネル仮想アドレス (VA) シャドウまたは不正データ キャッシュの読み込みの緩和策と呼ばれています。

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 にマッピングされます。 この行は、Windows オペレーティング システムがカーネル VA シャドウ機能をサポートしているかどうかを示します。 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 は、パフォーマンスの向上が有効かどうかのみを示します。 PCID は 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 にマッピングされます。 この行は、投機的ストア バイパスの無効化をサポートするハードウェア機能が存在するかどうかを示します。 デバイス OEM は、Intel が提供するマイクロコードを含む更新された BIOS/ファームウェアの提供を担当しています。 この行が 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) に関する緩和策の状態の概要を示しているわけではないのでご注意ください。

ハードウェアは L1 Terminal Fault に対して脆弱です。 True L1TFHardwareVulnerable にマッピングされます。 この行は、ハードウェアが L1 Terminal Fault (L1TF, CVE-2018-3620) に対して脆弱かどうかを示します。 True の場合、ハードウェアは CVE-2018-3620 に対して脆弱であると考えられます。 False の場合、ハードウェアは CVE-2018-3620 に対して脆弱ではないことがわかっています。
Windows OS support for L1 terminal fault mitigation is present: True L1TFWindowsSupportPresent にマッピングされます。 この行は、Windows オペレーティング システムが L1 Terminal Fault (L1TF) オペレーティング システムの緩和策をサポートしているかどうかを示します。 True の場合、2018 年 8 月の更新プログラムがデバイスにインストールされ、CVE-2018-3620 の緩和策が存在します。 True の場合、2018 年 8 月の更新プログラムがデバイスにインストールされてなく、CVE-2018-3620 の緩和策が存在しません。
Windows OS support for L1 terminal fault mitigation is enabled: True L1TFWindowsSupportEnabled にマッピングされます。 この行は、L1 Terminal Fault (L1TF、CVE-2018-3620) に対する Windows オペレーティング システムの緩和策が有効になっているかどうかを示します。 True の場合、ハードウェアは CVE-2018-3620 に対して脆弱であると考えられますが、この緩和策に関する 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 – ビット 0

マッピング先 - ブランチ ターゲット インジェクション - BTIWindowsSupportEnabled

FeatureSettingsOverride – ビット 1

マッピング先 - 不正なデータ キャッシュの読み込み - VAShadowWindowsSupportEnabled