Red Hat Virtualization 製品への CVE-2017-5754、CVE-2017-5753、および CVE-2017-5715 の影響
Environment
- Red Hat Enterprise Virtualization 3.6 ELS
- Red Hat Enterprise Virtualization 4.1
Issue
- RHV/RHEV をアップデートし、microcode_ctl のアップデートを利用できるようにする必要があります。
- 先日発生したセキュリティー問題に対応するために、RHV/RHEV システムのマイクロコードをアップデートする必要があります。
Resolution
この CVE の詳細と、RHV 環境における影響については、「原因」セクションを参照してください。
Kernel Side-Channel Attacks - CVE-2017-5754 CVE-2017-5753 CVE-2017-5715
お使いの環境で、どの仮想マシンおよびホストが、パッチが当たっている (IBRS サポートがある) か、当たっていないかを確認するには、How do I know if my RHV environment has been patched for Meltdown and Spectre CVE? を参照してください。
基本的なインフラストラクチャーにはパッチが当たっていることを確認する必要があります。詳細は、以下のようになります。
- 基本的なプラットフォームでは、マイクロコードがアップデートされている必要がある (OEM ベンダー)
- ホストカーネルには、問題を軽減させるためのパッチが当たっている
- ゲストを有効にするために、アップデートした qemu パッケージをインストールする必要がある
- ゲストインスタンスには、アップデートしたカーネルが含まれるパッチが当たっている必要がある (別の仮想マシンを見張っている仮想マシン内で実行しているサービスを保護するため。つまり、攻撃は、ホストとゲストの両方に影響します)
manager にもアップデートがあります。このアップデートでは、IBRS サポートが追加された、新しいクラスター CPU モデルを追加します。
注意: このプロセス中に、アップデートパッケージが適用されているすべてのゲストと、アップデートしたパッケージが適用されているホストを再起動する必要があります。
アップグレードの概要:
注意 1: 物理サーバー (物理ハードウェアで実行している場合は、ホストおよびマネージャー) におけるマイクロコードおよびファームウェアのアップデートは、OEM ベンダーの方法に従ってください。
注意 2: 利用可能なエラータの一覧は、https://access.redhat.com/security/vulnerabilities/speculativeexecution の [Resolution]タブを確認してください。
1. マネージャーをアップグレードし、再起動します。
2. 各ホストをアップデートし、再起動します。
3. クラスターの CPU のタイプを -IBRS バリアントに変更します。
4. 各ゲストをアップデートして、再起動します。
詳細:
1. manager をアップグレードし、再起動します。
1.1. manager で、以下のコマンドを実行します。
# yum update rhevm-setup-plugins
1.2. アップグレードドキュメントで説明されている手順で、manager のアップグレードを継続してください。この修正を追加したら、新しいカーネルで engine-setup を実行します。
アップグレードフローの詳細については、アップグレードガイドで「マイナーリリース間の更新」を参照してください 1。
または、セルフホストエンジンガイド 2 を参照してください。
2. 各ホストをアップデートし、再起動します。
アップグレードガイドで「virtualization ホストの更新」セクションを参照してください 3。
- 再起動したら、ホストの CPU が、
-IBRSを持つモデルとして適切に識別されていることを確認します。
# virsh -r capabilities | head
- manager で、[Host]、[General]、[Hardware] の順にサブタブを選択し、CPU タイプに -IBRS バリアントが含まれていることを確認します。
3. クラスター CPU タイプを、-IBRS バリアントに変更します。
- 十分な数のホストがアップグレードされたら、アップデートしていないすべてのホストが仮想マシンを実行できず、
NonOperationalとなるような設定に移行することが推奨されます。その時点で Up になっているすべてのハイパーバイザーが、サポート対象モデルとして IBRS を報告しているまで、Cluster CPU モデルを変更することはできません。実行中の仮想マシンはすべてシャットダウンして、新しい設定内容を設定します。 - [Cluster]、[Edit] の順に移動して、CPU タイプを -IBRS バリアントに変更します。
4. 各ゲストをアップデートして、再起動します。
注意: クラスター CPU の変更前に起動または移行した仮想マシンは、古い CPU モデルを使用し続けます。
* 仮想マシンをシャットダウンして、起動し、変更を有効にします。
-
Red Hat Virtualization - 4.1 - Upgrade Guide - Chapter 2. Updates between Minor Releases
Red Hat Enterprise Virtualization - 3.6 - Upgrade Guide - Chapter 2. Updates between Minor Releases ↩ -
Red Hat Virtualization - 4.1 - Self-Hosted Engine Guide - 5.4. Updating the Self-Hosted Engine Manager Between Minor Releases
Red Hat Enterprise Virtualization - 3.6 - 6.2. Upgrading a Self-Hosted Engine Environment ↩ -
Red Hat Enterprise Virtualization - 4.1 - Upgrade Guide - 2.3. Manually Updating Hosts
Red Hat Enterprise Virtualization - 3.6 - 2.4. Manually Updating Red Hat Enterprise Linux Virtualization Hosts ↩
Root Cause
先日、3 つの CVE (CVE-2017-5754、CVE-2017-5753、CVE-2017-5715) が公開されましたが、この脆弱性を使用すると、ローカルの攻撃者が認証されていないデータにアクセスできるようになります。CVE-2017-5753 では、仮想ゲストが、ホストや、同じ物理システムにあるその他のゲストと通信できるようになる、この攻撃のバリアントについて説明しています。
最新のプロセッサーは、優れたパフォーマンスを達成するために、命令の並行実行を使用しています。プロセッサーは、命令とデータのフローが円滑に進むように、複数のキャッシュバッファーを使用します。プロセッサーコアは、正しいシーケンシャル実行フローが特定される前でも、分岐予測や投機的実行などの別の技術を採用することがあります。このような実行の結果は、正しいシーケンスが特定されるまで、一時バッファー (キャッシュ領域) に保存されます。
このサイドチャンネル攻撃は、プロセッサーに投機的実行命令をさせ、非特権ユーザーがキャッシュバッファーへアクセスできるようにするために考え出されました。権限のないゲストユーザーがこの不具合を使用して、ホストメモリーと、ゲストのカーネルメモリーを読み込みます。
最初の 2 つのバリアントでは、境界検査回避 (CVE-2017-5753) を実行したり、分岐ターゲット挿入 (CVE-2017-5715) を利用することで、投機的実行を発生させます。両バリアントでは、特権コードで正確に定義された命令シーケンスがあり、メモリーアクセスが投機的に実行されたブロックが破棄され、実行することがなくても、キャッシュを追加しています。したがって、非特権の攻撃者は、この 2 つの不具合を使用して、キャッシュサイドチャンネル攻撃を行うことで、特権メモリーを読み込もうとします。このバリアントを使用して、syscall 境界を超える (バリアント #1 およびバリアント #2) だけでなく、ゲストとホストの境界も超えます (バリアント #2)。
3 番目のバリアント (CVE-2017-5754 バリアント #3) は、命令の投機的実行時にパーミッションに失敗し、命令ブロックの全体が退くまで、評価が抑えられます。そして、ブロックが破棄されて実行されないときでも、メモリーアクセスはキャッシュを追加します。その結果、非特権のローカルの攻撃者がこの不具合を使用してキャッシュサイドチャンネル攻撃を行い、特権のある (カーネル空間の) メモリーを読み取むことができます。ゲストの仮想マシンでは、この問題を利用して仮想マシンホストのメモリーを読み込むことはできません。
仮想環境での主なシナリオは [1] ホストのメモリー (ゲスト->ホスト)にアクセスしようとする非特権のゲストユーザー [2] その他のゲストメモリーにアクセスしようとする特権のあるゲストユーザー (ゲスト->(その他の)ゲスト) [3] ゲストカーネルのメモリーにアクセスしようとする非特権ゲストユーザー (ゲスト->(同じ)ゲスト) の 3 つです。最初の 2 つのシナリオが発生しないようにするには、ホストにアップデートを適用する必要があります。また、3 つ目のシナリオが発生しないようにするには、アップデートをホストおよびゲストシステムに適用する必要があります。
Diagnostic Steps
How do I know if my RHV environment has been patched for Meltdown and Spectre CVE?
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
