2018年2回目 Intel microcode update用 Windows Update

2018年8月配布のIntel Microcode Update

CPUの脆弱性への対応としては今年2回目です。

Intel Microcode Update Revision 2018/08/08 [PDFファイル]
https://www.intel.com/content/dam/www/public/us/en/documents/sa00115-microcode-update-guidance.pdf

前回のIntel Microcode Update(2018年3月前後から配布)は、Spectre Variant 2 (CVE 2017-5715: "Branch Target Injection")の緩和策のためのものでした。

参照

Intel Microcode Revision Guidance 2018/04/02 [PDFファイル]
https://newsroom.intel.com/wp-content/uploads/sites/11/2018/04/microcode-update-guidance.pdf

Intel 製マイクロコードの更新プログラムの概要 (for Windows10)
https://support.microsoft.com/ja-jp/help/4093836/
(対象CPU増加に伴い、数回更新されています)

今回のMicrocode Update Revisionには、次の3つの脆弱性への緩和策が追加されています。

  • CVE-2018-3640
    [Rogue System Register Read (RSRE)] Spectre Variant 3a
  • CVE-2018-3639
    [Speculative Store Bypass (SSB)] Spectre Variant 4 (SpectreNG)
  • CVE-2018-3615
    [L1 Terminal Fault (L1TF): SGX] (Foreshadow-SGX)
  • CVE-2018-3620
    [L1 Terminal Fault (L1TF): OS/SMM] (Foreshadow-OS/SMM)
  • CVE-2018-3646
    [L1 Terminal Fault (L1TF): VMM] (Foreshadow-VMM)
参照

Rogue System Register Read / CVE-2018-3640 / INTEL-SA-00115
https://software.intel.com/security-software-guidance/software-guidance/rogue-system-register-read

Speculative Store Bypass / CVE-2018-3639 / INTEL-SA-00115
https://software.intel.com/security-software-guidance/software-guidance/speculative-store-bypass

L1 Terminal Fault / CVE-2018-3615 , CVE-2018-3620,CVE-2018-3646 / INTEL-SA-00161
https://software.intel.com/security-software-guidance/software-guidance/l1-terminal-fault

脆弱性の中には、Microcodeの更新だけではなく、ソフトウェア側の対策が必要なものがあります。

(以下、Windows向けの内容です)

Intel Microcode UpdateのためのWindows更新プログラム (2018/08/20)

この更新プログラムに含まれるIntel Microcode Update Revision (2018/09/03時点)

  • Intel Skylake、Kaby Lake、Coffee Lakeの場合

    2018年8月のIntel Microcode Update Revision

  • 上記以外のIntel CPUの場合 (サポートが終了したCPUを除く)

    2018年4月までのIntel Microcode Update Revision

後者ついては、後日最新のRevisionに差し替えられると思います。(再度、ダウンロードとインストールが必要)

また、今のところ、対象OSがWindows10とWindows server 2016だけですが、そのうちWindows7~8.1等にも出るでしょう。

Windows更新プログラム一覧 (Intel Microcode Update、2018/08/20リリース)

  • KB4346084: Windows 10 1803、Windows Server 2016 (1803)

    旧 KB4100347

  • KB4346085: Windows 10 1709、Windows Server 2016 (1709)

    旧 KB4090007

  • KB4346086: Windows 10 1703

    旧 KB4091663

  • KB4346087: Windows 10 1607、Windows Server 2016 (1607)

    旧 KB4091664

  • KB4346088: Windows 10 1507

    旧 KB4091666

このWindows更新プログラムをインストールすると、OS上のMicrocode Update Revisionが更新されます。(BIOSのMicrocode Update Revisonは変わりません) それは、BIOSのMicrocode Update Revisonより新しい場合のみ、Windows起動中だけ適用されます。

Skylake S搭載PCにインストールした結果

(CPU: Intel Core i5-6500 = Skylake S、CPUID 506E3、Platform ID 36)

Windows使用時のMicrocode Update Revision

0xC2 (KB4346085インストール前)

0xC6 (KB4346085インストール後)

レジストリエディター上の(Microcode) Update RevisionがC6

緩和策が有効にするために必要なこと

Windowsマシンでは、最新のMicrocode Updateと最新のWindowsの累積更新プログラムを適用します。

ただし、次の2つに対する緩和策を有効にするには、追加の作業が必要です。

  • CVE-2018-3639
    Spectre Variant 4 (SpectreNG)
  • CVE-2018-3646
    L1 Terminal Fault: VMM (Foreshadow-VMM)
参照

スペクターとメルトダウンから Windows デバイスを保護する - Windows Help
https://support.microsoft.com/ja-jp/help/4073757/

Spectre Variant 4 の緩和策を有効にする設定

レジストリを次のように変更します。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]

FeatureSettingsOverride (DWORD) 8
FeatureSettingsOverrideMask (DWROD) 3

レジストリエディター画面 FeatureSettingsOverride=8、FeatureSettingsOverrideMask=3

ここの数値による違いについては、次の記事のFeatureSettingsOverrideの数値でどう変わるのか。をご覧ください。

参照

Windows client guidance for IT Pros to protect against speculative execution side-channel vulnerabilities
https://support.microsoft.com/en-us/help/4073119/

Windows Server guidance to protect against speculative execution side-channel vulnerabilities
https://support.microsoft.com/en-us/help/4072698/

L1 Terminal Fault: VMMの緩和策に必要かもしれない、追加の措置

  • 仮想マシン管理ソフトの修正パッチの適用
  • ハイパースレッディング(HT)の無効化
    (環境によっては無効化しなくてもよい場合がある)

ハイパースレッディングテクノロジーをサポートしているIntel CPUのリスト (ark.intel.comの検索ページ)
https://ark.intel.com/ja/Search/FeatureFilter?productType=processors&HyperThreading=true

注意!
ハイパースレッディング(HT)を無効にすると、パフォーマンスが大幅に低下する可能性があります。

ハイパースレッディングの有効(Enabled)/無効(Disabled)の切り替えについて

UEFI/BIOS設定画面から行います。CPU関連の項目の所にHTも表示されています。

HTの項目名の例 (Intel CPU用マザーボードの場合)

  • Intel(R) HT Technology
  • Intel(R) Hyper-Threading Technology
  • Hyper-Threading
  • Hyper-Threading Technology

搭載CPUがHT非対応の場合は、HTの項目が表示されないことがあります。

HTを無効化しなくても良いケース

  • 搭載CPUがハイパースレッディング(HT)をサポートしていない。(元々HTが無効のため)
  • Hyper-V、その他の仮想マシン管理ソフトを使用していない。(Windows 10以前、Windows Server 2012 R2以前の場合)

Windows Server 2016(以降)で、HTを無効化すべきか否か

L1 Terminal Fault から保護するための Windows Server 向けガイダンス
https://support.microsoft.com/ja-jp/help/4457951/

上記URLの内容(の一部)をまとめると、こんな感じ?

Windows Server 2016以降において、HTを無効する必要があるケース

  • VBSに依存する機能 使用 + Hyper-V 有効
  • VBSに依存する機能 使用 + Hyper-V 無効
  • VBSに依存する機能 不使用 + Hyper-V 有効 + Hyper-V core scheduler 無効

Windows Server 2016以降において、HTを無効する必要がないケース

  • VBSに依存する機能 不使用 + Hyper-V 無効
  • VBSに依存する機能 不使用 + Hyper-V 有効 + Hyper-V core scheduler 有効 & コアあたりのVMハードウェアスレッド数を2に設定

※ VBS = Virtualization-based security (VBScriptではありません)

※ Hyper-V hypervisor scheduler typeのデフォルト設定
Windows Server 2016以前とWindows Client: The classic scheduler
Windows Server 2019: The core scheduler (予定)

参照
https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/manage/manage-hyper-v-scheduler-types#the-core-scheduler

Hyper-V hypervisor scheduler typeがcoreであれば、Hyper-Vが有効の時でも脆弱性が緩和されるとのことです。しかし、サードパーティ製仮想マシン管理ソフトを使っている場合はどうなるのかわかりません。

関連記事