情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

CPU脆弱性に対応するWindows Update(KB4056892)が適用済みか確認する方法について

Windows (485) Windows 10 (255) 脆弱性 (5)

2018年1月から大きな話題となっているCPU脆弱性「Meltdown/Spectre」の影響を緩和するためのWindows Updateが提供されました。最新のWindows 10 (Fall Creators Update済み)に対応するWindows Updateは「KB4056892」ですが、このアップデートが適用済みかどうかを確認したときの手順を紹介します。

CPU脆弱性に対応するWindows Updateが適用済みか確認する手順

ここから、3種類の確認方法を紹介します。

冒頭の2つの方法が手軽にできる方法で、3番目はコマンドラインを利用する、少し高度な方法です。

方法1:「更新プログラムのインストール履歴を表示」を使う方法

まず、画面左下の「スタート」ボタン→「設定(歯車)」とクリックして、設定画面を表示します(Win+Xを押した後にN、も便利)

次に、設定項目一覧の中の一番最後にある「更新とセキュリティ」をクリックします。

すると「Windows Update」の画面が表示されるので(別のタブが表示されていたら、左の一覧から「Windows Update」を選択)「更新プログラムのインストール履歴を表示」をクリックします。

すると「更新プログラムのインストール履歴を表示」画面が表示されます。この画面の下段にある「品質更新プログラム」の中に、「KB4056892」というものがあれば、適用済みです(Windowsのバージョンによって、「KB4056890」や「KB4056891」の場合があるものの、最新のWindows 10には「KB4056892」)。

※画像には、「2018-01 x64 ベース システム用 Windows 10 Version 1709 の累積更新プログラム (KB4056892)」とあるが、ここの「Version 1709」が、現在最新の「Windows 10 Fall Creators Update」向けであることを指す。

方法2:「インストールされた更新プログラム」を使う方法

その画面の場合、表示されるアップデート数が少ないので、場合によっては「インストールされた更新プログラム」という画面から確認した方が良い場合もあります。

まず、画面左下の「スタート(Windowsロゴ)」ボタンを右クリックしてから「アプリと機能」を選択します。

そして、画面右にある「プログラムと機能」をクリックします。

「プログラムのアンインストールまたは変更」が表示されるので、左のメニューから「インストールされた更新プログラムを表示」をクリックします。

すると、ここでも(先ほどの画面より少し詳細な)更新プログラムの一覧を確認することができます:

方法3:PowerShellから「Get-SpeculationControlSettings」を使う方法

まったく別の方法として、PowerShellから「Get-SpeculationControlSettings」コマンドMicrosoftの英語マニュアル)を利用して、CPU脆弱性「Spectre」の対応状況を調べる方法が利用可能です。

まず、管理者としてPowerShellを起動します(スタートボタンを右して「Windows PowerShell(管理者)」を選択)

実行するコマンド

そして、以下のコマンドを順番に実行します。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\WINDOWS\system32> Install-Module SpeculationControl
PS C:\WINDOWS\system32> $SaveExecutionPolicy = Get-ExecutionPolicy
PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned -Scope Currentuser
PS C:\WINDOWS\system32> Import-Module SpeculationControl
PS C:\WINDOWS\system32> Get-SpeculationControlSettings
PS C:\WINDOWS\system32> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser

最後から2番目の「Get-SpeculationControlSettings」コマンドの結果が最終的に知りたい情報で、その前後は事前準備と事後処理(元に戻す処理)となります。

コマンドの実行結果

これらのコマンドの実行結果がこちらです:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\WINDOWS\system32> Install-Module SpeculationControl

続行するには NuGet プロバイダーが必要です
PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet
プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または
'C:\Users\did2\AppData\Local\PackageManagement\ProviderAssemblies' に配置する必要があります。'Install-PackageProvider
-Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet プロバイダーをインストールすることもできます。今すぐ
PowerShellGet で NuGet プロバイダーをインストールしてインポートしますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y

信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit
ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery'
からモジュールをインストールしますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

PS C:\WINDOWS\system32> $SaveExecutionPolicy = Get-ExecutionPolicy
PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

PS C:\WINDOWS\system32> Import-Module SpeculationControl
PS C:\WINDOWS\system32> 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: False
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: True
Windows OS support for kernel VA shadow is enabled: True
Windows OS support for PCID performance optimization is enabled: True [not required for security]

Suggested actions

 * Install BIOS/firmware update provided by your device OEM that enables hardware support for the branch target injection mitigation.


BTIHardwarePresent             : False
BTIWindowsSupportPresent       : True
BTIWindowsSupportEnabled       : False
BTIDisabledBySystemPolicy      : False
BTIDisabledByNoHardwareSupport : True
KVAShadowRequired              : True
KVAShadowWindowsSupportPresent : True
KVAShadowWindowsSupportEnabled : True
KVAShadowPcidEnabled           : True



PS C:\WINDOWS\system32> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y
PS C:\WINDOWS\system32>

結果の見方

コマンドの出力結果に水色で表示されている見出し「Speculation control settings for CVE-2017-5715 [branch target injection]」のセクションと「Speculation control settings for CVE-2017-5754 [rogue data cache load]」のセクションの赤色表示がなく、全て緑色で表示された場合にSpectreに対する保護が完全に有効、と判断してよいようなのですが、ここではまだ赤い出力が4つ残っています。

しかし、こちらの記事で紹介されているとおり、Windows Updateを適用してはじめて「Windows OS support for branch target injection mitigation is present: True」という緑色の行が現れるため、ここだけを見てひとまず「Windows Update済みだ」ということは判定できる模様です(※全てを緑色にするには、Microsoftではなく、ハードウェアベンダーが提供するファームウェアアップデートが必要)

「KB4056892」の表示の今後について

今後の大型アップデートなどにより、「KB4056892」とは表示されなくなったり、別のアップデートプログラムにだいたいされたりして、「対策が実施済み」であることと、「KB4056892が表示されること」が一致しなくなる可能性もあります。

つまり、「KB4056892と表示されれば、対応アップデート済み」というのは確かですが、「KB4056892と表示されないから、対応アップデートが絶対にされていないんだ」ということは今後崩れていくものと思われます。

コメント(0)

新しいコメントを投稿