vSphere 用 Intel プロセッサにおける「L1 Terminal Fault」(L1TF - VMM) 投機的実行の脆弱性に対する VMware の対応 CVE-2018-3646
search cancel

vSphere 用 Intel プロセッサにおける「L1 Terminal Fault」(L1TF - VMM) 投機的実行の脆弱性に対する VMware の対応 CVE-2018-3646

book

Article ID: 324599

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

Symptoms:
この記事では、vSphere で CVE-2018-3646 (L1 Terminal Fault - VMM) を解決するために必要なハイパーバイザー固有の軽減策について説明します。

CVE-2018-3646 の概要

Intel は「L1 Terminal Fault」と総称される、CPU での投機的実行に関する新しい脆弱性について詳細を開示しました。この脆弱性は、過去および現在の Intel プロセッサ(少なくとも 2009 ~ 2018 年)で発生する可能性があります(影響を受けるサポート対象の vSphere プロセッサについては、表 1 を参照)。

影響を受ける Intel マイクロプロセッサが許可されているデータ アクセス以外の投機的動作を行うと、Meltdown、Rogue System Register Read、「Lazy FP state restore」などの「L1 Terminal Fault」の脆弱性が発生することがあります。 このような場合に投機的動作を継続すると、影響を受ける Intel マイクロプロセッサに、攻撃対象となる新しいサイドチャネルが生じます。 (ただし、機的動作は後で侵入者が撤退したときに無効になるため、アーキテクチャ面での正当性は維持されることに注意してください)。

CVE-2018-3646 はこのような Intel マイクロプロセッサの脆弱性の 1 つであり、ハイパーバイザーに影響をもたらします。 ハイパーバイザーまたは別の仮想マシンが権限を持つ情報が同じコアの L1 データ キャッシュ内に同時に存在する場合は、特定の CPU コアで実行されている悪意のある仮想マシンによってこの情報の内容が実際に推論される可能性があります。 現在の Intel プロセッサは、ハイパースレッディング (HT) 対応コアの両方の論理プロセッサで、物理的に解決された L1 データ キャッシュを共有します。両方の論理プロセッサでソフトウェア スレッドの同時スケジュール設定を無差別に行うと、情報がさらに漏洩する可能性が生じます。 CVE-2018-3646 には現在判明している攻撃ベクトルが 2 つあります(ここでは「シーケンシャルコンテキスト」と「同時コンテキスト」と表します)。 CVE-2018-3646 を軽減するには、両方の攻撃ベクトルに対処する必要があります。

攻撃ベクトルの概要
  • シーケンシャルコンテキスト攻撃ベクトル:悪意のある仮想マシンは、プロセッサ コアのいずれかの論理プロセッサ上にある以前のコンテキストの L1 データ(ハイパーバイザー スレッドまたは他の仮想マシンのスレッド)の中から、最近アクセスされたものを推測できる可能性があります。
  • 同時コンテキスト攻撃ベクトル:悪意のある仮想マシンは、ハイパースレッディング対応プロセッサ コアの他の論理プロセッサ上にある同時実行コンテキストの L1 データ(ハイパーバイザー スレッドまたは他の仮想マシンのスレッド)の中から、最近アクセスされたものを推測できる可能性があります。

軽減策の概要
  • シーケンシャルコンテキスト攻撃ベクトルを軽減するには、vSphere の更新やパッチを適用します。 この軽減策はデフォルトで有効になっていて、パフォーマンスに大きな影響を与えません。 詳細については、「対策」セクションを参照してください。
  • 同時コンテキスト攻撃ベクトルを軽減するには、ESXi サイドチャネル対応スケジューラと呼ばれる新しい機能を有効にする必要があります。 この機能の最初のバージョンでは、Intel ハイパースレッディング対応コアのいずれかの論理プロセッサ上にあるハイパーバイザーおよび仮想マシンにのみスケジュールが設定されます。 この機能はパフォーマンスに大きな影響を及ぼし、デフォルトでは無効になっています。 詳細については、「対策」セクションを参照してください。

重要: vSphere の更新およびパッチを適用した後に、ファームウェア/BIOS で(または VMkernel.Boot.Hyperthreading を使用して)Intel ハイパースレッディングを無効にすることはお勧めしません。これを無効にすると、有効になっていた可能性のある vSphere スケジューラが無効になり、両方の論理プロセッサを使用できる軽減策を実行できなくなります。 

ファームウェア / BIOS で (または VMkernel.Boot.Hyperthreading を使用して) Intel ハイパースレッディングを明示的に無効にするのとは異なり、L1TF-VMM に対して脆弱ではない AMD プロセッサおよび新しい Intel プロセッサでは、ESXi サイドチャネル対応スケジューラの有効化は無視されます。[影響を受ける vSphere プロセッサについては表 1 を参照してください]


Resolution

CVE-2018-3646 の軽減プロセスは、次の 3 つのフェーズで構成されます。
  1. 更新フェーズ: vSphere の更新およびパッチの適用
シーケンシャルコンテキスト攻撃を軽減するには、VMware Security Advisory VMSA-2018-0020 に記載されている製品バージョンに vSphere を更新します。 この軽減策では、Intel マイクロコードの更新(ほとんどの Intel ハードウェア プラットフォームでは独立した ESXi パッチに付属)を利用します。VMSA-2018-0020 も参照してください。 この軽減策はデフォルトで有効になっていて、パフォーマンスに大きな影響を与えません。

: 上記のワークフローに表示されているように、ESXi のパッチを適用する前に vCenter Server を更新する必要があります。前述のアップデートおよびパッチでは、CVE-2018-3646 の同時コンテキスト攻撃ベクトルを緩和するにはESXi サイドチャネル対応スケジューラを有効にする必要があることを説明する通知メッセージが追加されました。ESXi が vCenter Server よりも先にアップデートされた場合、これに関連する不可解な通知メッセージを受け取る可能性があります。vCenter がアップデートされた後、通知は正しく表示されるようになります。
  1. 計画フェーズ: 環境の評価
同時コンテキスト攻撃ベクトルを軽減するには、VMSA-2018-0020 に示されている更新およびパッチに含まれている ESXi サイドチャネル対応スケジューラを有効にします。 デフォルトでは、このスケジューラは有効ではありません。 このスケジュールを有効にすると、vSphere 環境で実行されているアプリケーションのパフォーマンスに大きな影響が及ぶ可能性があります。 計画フェーズの目標は、同時環境に、スケジューラを有効にしても動作に影響が生じないようにするために必要な CPU キャパシティがあるかどうかを把握することです。
次のリストに、ESXi サイドチャネル対応スケジューラを有効にした後に生じる可能性のある問題領域の概要を示します。
  • ESXi ホストで使用できる物理コアの処理能力を上回る vCPU が装備された仮想マシン
  • カスタム アフィニティまたは NUMA が設定された仮想マシン
  • 遅延の影響を受ける構成の仮想マシン
  • 平均 CPU 使用率が 70% を超える ESXi ホスト
  • カスタム CPU リソース管理オプションが有効になっているホスト
  • ローリング アップグレードによって平均 CPU 使用率が 100% を超える HA クラスタ
重要: 上記のリストは、ESXi サイドチャネル対応スケジューラの有効化に関連する問題領域の概要を示すためのものです。 VMware パフォーマンス チームは、KB55767 で詳細なガイドおよびパフォーマンス データを公開しています。 スケジューラを有効にする前に、このドキュメントを詳細に確認することを強くお勧めします。
: ESXi サイドチャネル対応スケジューラを有効にする前に、追加のハードウェアを取得するか、既存のワークロードを再分散しなければならない可能性があります。 組織は、リスク評価を行って同時コンテキスト攻撃ベクトルで発生するリスクを受け入れた後に、ESXi サイドチャネル対応スケジューラを有効にしないように選択することができます。 この方法はお勧めしません。VMware が組織に代わってこの決定を行うことはできません。
  1. スケジューラ有効化フェーズ:
a.  ESXi 5.5, 6.0, 6.5, 6.7 (6.7u2 以前), 7.0 での ESXi サイドチャネル対応スケジューラの有効化

計画フェーズで上記の問題領域を解決した後に、CVE-2018-3646 の同時コンテキスト攻撃ベクトルを軽減するには、ESXi サイドチャネル対応スケジューラを有効にする必要があります。 このスケジューラは、詳細設定オプション hyperthreadingMitigation を使用して個々の ESXi ホスト上で有効にできます。
  • このオプションを有効化すると、vSphere UI は物理コアごとに単一の論理プロセッサを報告するようになります。ハイパースレッディングが有効になっていた場合は論理プロセッサの数が半分になります。さらに、様々な設定タブでハイパースレッディングが [無効] と表示されます。
  • 現在の ESXi サイドチャネル対応スケジューラ は CVE-2018-5407 にも対応できます。

vSphere Web Client または vSphere Client を使用した ESXi サイドチャネル対応スケジューラの有効化
  1. vSphere Web Client または vSphere Client を使用して vCenter Server に接続します。
  2. インベントリで ESXi ホストを選択します。
  3. [管理] タブ (5.5/6.0) または [設定] タブ (6.5/6.7) をクリックします。
  4. [設定] サブタブをクリックします。
  5. [システム] 見出しで、[システムの詳細設定] をクリックします。
  6. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigation を検索します。
  7. 設定を名前で選択して、[編集](鉛筆アイコン)をクリックします。
  8. 設定オプションを true に変更します(デフォルトは false)。
  9. OK をクリックします。
  10. ESXi ホストを再起動して構成の変更を有効にします。
ESXi Embedded ホスト クライアントを使用した ESXi サイドチャネル対応スケジューラの有効化
  1. Web ブラウザをで https://HOSTNAME を開いて、ESXi ホストに接続します。
  2. [管理] タブをクリックします。
  3. [詳細設定] サブタブをクリックします。
  4. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigation を検索します。
  5. 設定を名前で選択して、[編集](鉛筆アイコン)をクリックします。
  6. 設定オプションを true に変更します(デフォルトは false)。
  7. [保存] をクリックします。
  8. ESXi ホストを再起動して構成の変更を有効にします。

ESXCLI を使用した ESXi サイドチャネル対応スケジューラの設定の有効化
  1. ESXi ホストに SSH で接続するか、リモート ESXCLI がインストールされているコンソールを開きます。 詳細については、http://www.vmware.com/support/developer/vcli/ を参照してください。
  2. esxcli system settings kernel list -o hyperthreadingMitigation を実行して、HT 対応軽減策設定の現在のランタイム値を確認します。
このコマンドの返り値は、次のようになります。
  1. HT 対応の軽減策を有効にするには、次のコマンドを実行します。
esxcli system settings kernel set -s hyperthreadingMitigation -v TRUE
  1. ESXi ホストを再起動して構成の変更を有効にします。

b.  ESXi 6.7u2 (13006603)以降での、 ESXi サイドチャネル対応スケジューラ (SCAv1) または  ESXi サイドチャネル対応スケジューラv2 (SCAv2) の有効化
:ESXi 6.7u2 (13006603) 以降のリリースには、ESXi サイドチャネル対応スケジューラv2 が含まれています。6.5, 6.0, 5.5 などの以前のリリースラインでは、この新しいスケジューラは使用できません。
image.png
VMware は、SCAv1 と SCAv2 のパフォーマンスの違いについてより詳しく説明したホワイトペーパー「Performance of vSphere 6.7 Scheduling Options」を公開しました。続行する前に、このドキュメントを確認してください。

vSphere Web Client または vSphere Client を使用した ESXi サイドチャネル対応スケジューラ (SCAv1) の有効化
  1. vSphere Web Client または vSphere Client を使用して vCenter Server に接続します。
  2. インベントリで ESXi ホストを選択します。
  3. [設定] または [構成] タブをクリックします。
  4. [システム] の見出しで、[システムの詳細設定] をクリックします。
  5. [編集] をクリックします。
  6. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigation を検索します。
  7. 設定の名前で選択します。
  8. 設定オプションを true に変更します(デフォルトは false)。
  9. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigationIntraVM を検索します。
  10. 設定オプションを true に変更します(デフォルトは true)。
  11. OK をクリックします。
  12. ESXi ホストを再起動して構成の変更を有効にします。
ESXi Embedded ホスト クライアントを使用した ESXi サイドチャネル対応スケジューラ (SCAv1) の有効化
  1. Web ブラウザをで https://HOSTNAME を開いて、ESXi ホストに接続します。
  2. [管理] タブをクリックします。
  3. [詳細設定] サブタブをクリックします。
  4. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigation を検索します。
  5. 設定を名前で選択して、[オプションの編集] をクリックします。
  6. 設定オプションを true に変更します (デフォルトは false)。
  7. [保存] をクリックします。
  8. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigationIntraVM を検索します。
  9. 設定を名前で選択して、[オプションの編集] をクリックします。
  10. 設定オプションを true に変更します(デフォルトは true)。
  11. [保存] をクリックします。
  12. ESXi ホストを再起動して構成の変更を有効にします。

ESXCLI を使用した ESXi サイドチャネル対応スケジューラ (SCAv1) の有効化
  1. ESXi ホストに SSH で接続するか、リモート ESXCLI がインストールされているコンソールを開きます。 詳細については、http://www.vmware.com/support/developer/vcli/ を参照してください。
  2. esxcli system settings kernel list -o hyperthreadingMitigation および esxcli system settings kernel list -o hyperthreadingMitigationIntraVM  を実行して、現在の設定を確認します。
  3. ESXi サイドチャネル対応スケジューラ (SCAv1) を有効化するには、次のコマンドを実行します。
  4. esxcli system settings kernel set -s hyperthreadingMitigation -v TRUE
  5. esxcli system settings kernel set -s hyperthreadingMitigationIntraVM -v TRUE
  6. ESXi ホストを再起動して構成の変更を有効にします。
vSphere Web Client または vSphere Client を使用した ESXi サイドチャネル対応スケジューラ (SCAv2) の有効化
  1. vSphere Web Client または vSphere Client を使用して vCenter Server に接続します。
  2. インベントリで ESXi ホストを選択します。
  3. [設定] または [構成] タブをクリックします。
  4. [システム] の見出しで、[システムの詳細設定] をクリックします。
  5. [編集] をクリックします。
  6. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigation を検索します。
  7. 設定の名前で選択します。
  8. 設定オプションを true に変更します(デフォルトは false)。
  9. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigationIntraVM を検索します。
  10. 設定オプションを false に変更します(デフォルトは true)。
  11. OK をクリックします。
  12. ESXi ホストを再起動して構成の変更を有効にします。

ESXi Embedded ホスト クライアントを使用した ESXi サイドチャネル対応スケジューラ (SCAv2) の有効化
  1. Web ブラウザをで https://HOSTNAME を開いて、ESXi ホストに接続します。
  2. [管理] タブをクリックします。
  3. [詳細設定] サブタブをクリックします。
  4. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigation を検索します。
  5. 設定を名前で選択して、[オプションの編集] をクリックします。
  6. 設定オプションを true に変更します (デフォルトは false)。
  7. [保存] をクリックします。
  8. [フィルタ] ボックス内でクリックし、VMkernel.Boot.hyperthreadingMitigationIntraVM を検索します。
  9. 設定を名前で選択して、[オプションの編集] をクリックします。
  10. 設定オプションを false に変更します(デフォルトは true)。
  11. [保存] をクリックします。
  12. ESXi ホストを再起動して構成の変更を有効にします。
ESXCLI を使用した ESXi サイドチャネル対応スケジューラ (SCAv2) の有効化
  1. ESXi ホストに SSH で接続するか、リモート ESXCLI がインストールされているコンソールを開きます。 詳細については、http://www.vmware.com/support/developer/vcli/ を参照してください。
  2. esxcli system settings kernel list -o hyperthreadingMitigation および esxcli system settings kernel list -o hyperthreadingMitigationIntraVM  を実行して、現在の設定を確認します。
  3. ESXi サイドチャネル対応スケジューラ (SCAv2) を有効化するには、次のコマンドを実行します。
  4. esxcli system settings kernel set -s hyperthreadingMitigation -v TRUE
  5. esxcli system settings kernel set -s hyperthreadingMitigationIntraVM -v FALSE
  6. ESXi ホストを再起動して構成の変更を有効にします。

ESXi 6.7 U2 (またはそれ以降) でのスケジューラ設定の概要
hyperthreadingMitigationhyperthreadingMitigationIntraVMScheduler Enabled
FALSETRUE or FALSEデフォルトのスケジューラ (緩和策なし)
TRUETRUESCAv1
TRUEFALSESCAv2


HT 対応軽減策のツール

VMware は、計画フェーズスケジューラ有効化フェーズの両方の実行を大規模に支援するツールを用意しました。 このツールは、使用法、機能、制限事項に関する詳細な説明と共に KB56931 で提供されています。

表 1: 影響を受ける ESXi サポート対象の Intel プロセッサ
Intel のコード名FMSIntel のブランド名
Nehalem-EP0x106a5Intel Xeon 35xx シリーズ、
Intel Xeon 55xx シリーズ
Lynnfield0x106e5Intel Xeon 34xx Lynnfield シリーズ
Clarkdale0x20652Intel i3/i5 Clarkdale シリーズ、
Intel Xeon 34xx Clarkdale シリーズ
Arrandale0x20655Intel Core i7-620LE プロセッサ
Sandy Bridge DT0x206a7Intel Xeon E3-1100 シリーズ、
Intel Xeon E3-1200 シリーズ、
Intel i7-2655-LE シリーズ、Intel i3-2100 シリーズ
Westmere EP0x206c2Intel Xeon 56xx シリーズ、
Intel Xeon 36xx シリーズ
Sandy Bridge EP0x206d7Intel Pentium 1400 シリーズ、
Intel Xeon E5-1400 シリーズ、
Intel Xeon E5-1600 シリーズ、
Intel Xeon E5-2400 シリーズ、
Intel Xeon E5-2600 シリーズ、
Intel Xeon E5-4600 シリーズ
Nehalem EX0x206e6Intel Xeon 65xx シリーズ、
Intel Xeon 75xx シリーズ
Westmere EX0x206f2Intel Xeon E7-8800 シリーズ、
Intel Xeon E7-4800 シリーズ、
Intel Xeon E7-2800 シリーズ、
Ivy Bridge DT0x306a9Intel i3-3200 シリーズ、Intel i7-3500-LE/UE、Intel i7-3600-QE、
Intel Xeon E3-1200-v2 シリーズ、
Intel Xeon E3-1100-C-v2 シリーズ、
Intel Pentium B925C
Haswell DT0x306c3Intel Xeon E3-1200-v3 シリーズ
Ivy Bridge EP0x306e4Intel Xeon E5-4600-v2 シリーズ、
Intel Xeon E5-2400-v2 シリーズ、
Intel Xeon E5-2600-v2 シリーズ、
Intel Xeon E5-1400-v2 シリーズ、
Intel Xeon E5-2600-v2 シリーズ
Ivy Bridge EX0x306e7Intel Xeon E7-8800/4800/2800-v2 シリーズ
Haswell EP0x306f2Intel Xeon E5-2400-v3 シリーズ、
Intel Xeon E5-1400-v3 シリーズ、
Intel Xeon E5-1600-v3 シリーズ、
Intel Xeon E5-2600-v3 シリーズ、
Intel Xeon E5-4600-v3 シリーズ
Haswell EX0x306f4Intel Xeon E7-8800/4800-v3 シリーズ
Broadwell H0x40671Intel Core i7-5700EQ、
Intel Xeon E3-1200-v4 シリーズ
Avoton0x406d8Intel Atom C2300 シリーズ、
Intel Atom C2500 シリーズ、
Intel Atom C2700 シリーズ
Broadwell EP/EX0x406f1Intel Xeon E7-8800/4800-v4 シリーズ、
Intel Xeon E5-4600-v4 シリーズ、
Intel Xeon E5-2600-v4 シリーズ、
Intel Xeon E5-1600-v4 シリーズ
Skylake SP0x50654Intel Xeon Platinum 8100 (Skylake-SP) シリーズ、
Intel Xeon Gold 6100/5100 (Skylake-SP) シリーズ
Intel Xeon Silver 4100、Bronze 3100 (Skylake-SP) シリーズ
Broadwell DE0x50662Intel Xeon D-1500 シリーズ
Broadwell DE0x50663Intel Xeon D-1500 シリーズ
Broadwell DE0x50664Intel Xeon D-1500 シリーズ
Broadwell NS0x50665Intel Xeon D-1500 シリーズ
Skylake H/S0x506e3Intel Xeon E3-1500-v5 シリーズ、
Intel Xeon E3-1200-v5 シリーズ
Kaby Lake H/S/X0x906e9Intel Xeon E3-1200-v6


Additional Information