MDS - マイクロアーキテクチャーデータサンプリング - CVE-2018-12130、CVE-2018-12126、CVE-2018-12127、および CVE-2019-11091
この情報は役に立ちましたか?
概要
マイクロプロセッサーの不具合が新たに 4 つ発見され、そのうち最も影響度の高い不具合は Red Hat プロダクトセキュリティーチームによって「重要な影響」と評価されました。ローカルでシステムにシェルアクセスできる攻撃者がこれらの不具合を悪用すると、CPU のキャッシュにあるデータを未承認のプロセスに公開することができます。難易度は高いものの、技術のある攻撃者はこれらの不具合を利用して仮想インスタンス、コンテナー化されたインスタンス、または基盤のホストシステムからメモリーを呼び出すことが可能です。Red Hat は影響を受けるシステムへの軽減策を用意しています。また、この影響によるリスクをお客様が評価および対応するために必要な詳細手順を提供します。
問題の詳細と背景情報
Red Hat は、権限を持たないローカルの攻撃者が従来のメモリーセキュリティー制限を回避して、アクセスに権限が必要なメモリーへの読み取りアクセスを可能にする、マイクロアーキテクチャー (ハードウェア) の実装問題を認識しています。コンテナー内で不正なコードを実行して、これらの不具合を悪用することも可能です。最近の Intel マイクロプロセッサーの多くがこの問題の影響を受け、Linux カーネル、仮想化スタック、および CPU マイクロコードの更新が必要です。この問題には、影響度が「重要」の CVE-2018-12130 のほか、影響度が「中程度」の CVE-2018-12126、CVE-2018-12127 および CVE-2019-11091 が割り当てられられました。
現時点では、これらの不具合は Intel のプロセッサーのみに影響することが判明していますが、Red Hat プロダクトセキュリティーチームは関連性のない SMT (同期マルチスレッディング) の脆弱性について多くのベンダーを対象にして調査を継続しています。
不具合は、Intel マイクロプロセッサーが複数のパフォーマンスマイクロ最適化を実装する方法で発見されました。脆弱性を悪用すると、攻撃者はサイドチャネルを利用して他のプロセス、コンテナー、仮想マシン、またはカーネルに属するシステムで最近使用されたデータにアクセスすることができます。
これらの脆弱性は、内部 CPU 構造内に残された状態を取得するという推測に依存するため、マイクロアーキテクチャーのデータサンプリング (MDS、Microarchitectural Data Sampling) と呼ばれます。
CVE-2018-12126 - Microarchitectural Store Buffer Data Sampling (MSBDS、マイクロアーキテクチャーのストアバッファーデータサンプリング)
最近のメモリーへの保存内容 (書き込み) が含まれる、プロセッサーストアバッファー構造の情報漏えいの可能性に関し、多くの Intel マイクロプロセッサーで不具合が発見されました。
最近の Intel マイクロプロセッサーは、ハードウェアレベルのマイクロ最適化を実装し、CPU キャッシュへデータをライトバックするパフォーマンスを向上します。この書き込み操作は STA (STore Address、アドレスの格納) と STD (STore Data、データの格納) のサブ操作に分割されます。これらのサブ操作により、プロセッサーは書き込みを最適化するため、アドレス生成ロジックをこれらのサブ操作に引き継ぐことが可能です。両方のサブ操作は 'プロセッサーストアバッファー' と呼ばれる共有分散プロセッサーに書き込みを行います。
プロセッサーストアバッファーは概念的にはアドレス、値、および 'is valid' エントリーのテーブルです。サブ操作はおたがいに依存せずに実行できるため、テーブルのアドレスや値の列を独立して更新することができます。そのため、異なる時点でアドレスや値が無効になる可能性があります。
プロセッサーはストアバッファーからエントリーを推測的に転送する可能性があります。分割操作により、このような転送で不適切なアドレスなどの陳腐値が推測的に使用され、以前の関係のないストアからデータが返される可能性があります。これは障害/補助の解決後に再実行されるロードに対してのみ発生するため、プログラムのアーキテクチャーは影響を受けませんが、サイドチャネルの分析によりデータ取得の目的で不正に作成されたコードにストアバッファーの状態がリークする可能性があります。
プロセッサーストアバッファーエントリーは、アクティブなハイパースレッドの間で平等に分割されます。電源状態の変更などの状況によって、エントリーが消去されたことを確認せずに、部分的に更新された状態のプロセッサーストアバッファーエントリーを別のスレッドに再割り当てすることが可能です。
この問題は Fallout と呼ばれます。
CVE-2018-12127 - Microarchitectural Load Port Data Sampling (MLPDS、マイクロアーキテクチャーのロードポートデータサンプリング)
マイクロプロセッサーは 'ロードポート' を使用して、メモリーまたは IO からロード操作を実行します。ロードポートはメモリーまたは IO サブシステムからデータを受け取り、データを CPU のパイプラインの CPU レジスターおよび操作に提供します。
一部の実装では、各ロードポート内部のライトバックデータバスは、新しいロード操作がデータを上書きするまで、以前のロード操作のデータ値を保持することができます。
MLPDS は以下の場合に、古いロードポートデータを悪意のあるユーザーに公開することができます。
- サイズが 64ビットを超える CPU 実行命令である SSE / AVX / AVX-512 の障害または補助がロードされた場合。
- 64 バイト境界をまたがるような障害または補助がロードされた場合。
上記の場合、ロード操作は推測的に古いデータ値を内部データ構造から依存する操作に提供します。このデータを推測的に転送してもプログラムの実行を編集することにはなりませんが、これをウェジットとして使用すると、ロードポートへアクセスするタイミングにより、プロセスのデータ値の内容を推測することができます。
CVE-2018-12130 - Microarchitectural Fill Buffer Data Sampling (MFBDS、マイクロアーキテクチャーのフィルバッファーデータサンプリング)
この問題のリスクが最も高く、Red Hat は「重要な影響」と評価しています。この不具合は、Intel マイクロプロセッサーによって使用されるフィルバッファーの実装で発見されました。
フィルバッファーは、存在しない値の使用を試みた結果、プロセッサーの L1 データキャッシュがミスしたデータを保持します。L1 データのキャッシュミスが Intel コア内で発生した場合、フィルバッファーは、アクセスされる値がより高レベルのキャッシュからロードされる間、プロセッサーが他の操作を継続できるよう設計されています。さらにこの設計により、結果が実行ユニット (Execution Unit) に転送され、L1 データキャッシュにロードされなくても直接ロードを取得できます。
ロード操作はストアと同様に分離されませんが、Address Generation Unit (AGU、アドレス生成ユニット) 操作が関係します。AGU が障害 (#PF など) または補助 (A/D ビット) を生成した場合、Intel の従来の設計はロードをブロックし、後で再実行します。現在の設計では、ロードが実際に行われる前に、後続の推測操作はフィルバッファースロットから、転送されたデータ値を一時的に確認することが可能です。そのため、フィルバッファーエントリーが上書きされていない場合、別のスレッドによって最近アクセスされたデータを読み取ることが可能です。
この問題は RIDL または ZombieLoad と呼ばれます。
CVE-2019-11091 - Microarchitectural Data Sampling Uncacheable Memory (MDSUM、マイクロアーキテクチャーのデータサンプリングキャッシュ不可能なメモリー)
L1 CPU キャッシュでキャッシュミスが発生した場合に近年の CPU によって使用されるメカニズム 「フィルバッファー」の実装で、不具合が発見されました。ページ障害を作成するロード操作を攻撃者が生成できる場合、データがより高レベルのキャッシュから取得される間に、フィルバッファーからの不適切なデータを使用して実行が推測的に継続されます。この応答時間を測定して、フィルバッファーのデータを推測できます。
謝辞
Red Hat は、この問題を報告し、軽減策で協力していただいた Intel および業界のパートナーに感謝いたします。
また、Red Hat は報告者に感謝いたします (以下敬称略)。
Microarchitectural Store Buffer Data Sampling (MSBDS) - CVE-2018-12126
この脆弱性は Intel の社員によって発見されました。Intel は Ke Sun、Henrique Kawakami、Kekai Hu、および Rodrigo Branco に感謝の意を表明しています。この脆弱性は個別に Lei Shi - Qihoo - 360 CERT および Marina Minkin、Daniel Moghimi、Moritz Lipp、Michael Schwarz、Jo Van Bulck、Daniel Genkin、Daniel Gruss、Berk Sunar、Frank Piessens、 Yuval Yarom (1University of Michigan、Worcester Polytechnic Institute、Graz University of Technology、imec-DistriNet、KU Leuven、University of Adelaide) によって報告されました。
Microarchitectural Load Port Data Sampling (MLPDS) - CVE-2018-12127
この脆弱性は、Intel の社員および Microsoft によって発見されました。Intel は Brandon Falk (Microsoft Windows Platform Security Team)、および Ke Sun、Henrique Kawakami、Kekai Hu、Rodrigo Branco (Intel) に感謝の意を表明しています。この脆弱性は個別に Matt Miller (Microsoft)、および Stephan van Schaik、Alyssa Milburn、Sebastian Österlund、Pietro Frigo、Kaveh Razavi、Herbert Bos、Cristiano Giuffrida (VU Amsterdam の VUSec group) によって報告されました。x12/>
Microarchitectural Fill Buffer Data Sampling (MFBDS) - CVE-2018-12130
この脆弱性は Intel 社員によって発見されました。Intel は Ke Sun、Henrique Kawakami、Kekai Hu、および Rodrigo Branco に感謝の意を表明しています。この脆弱性は個別に Giorgi Maisuradze (Microsoft Research)、Dan Horea Lutas、Andrei Lutas (Bitdefender)、Volodymyr Pikhur (個人)、Stephan van Schaik、Alyssa Milburn、Sebastian Österlund、Pietro Frigo、Kaveh Razavi、Herbert Bos、Cristiano Giuffrida (VU Amsterdam の VUSec group)、Moritz Lipp、Michael Schwarz、Daniel Gruss (Graz University of Technology) によって報告されました。
Microarchitectural Data Sampling Uncacheable Memory (MDSUM) - CVE-2019-11091
この脆弱性は Intel の社員によって発見されました。Intel は Ke Sun、Henrique Kawakami、Kekai Hu、および Rodrigo Branco に感謝の意を表明しています。この脆弱性は個別に Volodrmyr Pikhur (個人)、Moritz Lipp、Michael Schwarz、Daniel Gruss (Graz University of Technology)、Stephan van Schaik、Alyssa Milburn、Sebastian Österlund、Pietro Frigo、Kaveh Razavi、Herbert Bos、Cristiano Giuffrida (VU Amsterdam の VUSec group) によって発見されました。
その他の参考資料
これらの問題に関する詳細は Intel の Web サイト を参照してください。
KCS: Simultaneous Multithreading in Red Hat Enterprise Linux
KCS: Disabling Hyper-Threading
KCS: CPU Side Channel Attack Index Page
KCS: Microcode availability for Pre-Haswell CPUs
KCS: Applying MDS CVE's patches on RHV hosts and manager node
Video: All about MDS in about 3 minutes
Video: Longform MDS Technical Explanation
Blog: Deeper Look at the MDS Vulnerability
Blog: Modern IT security: Sometimes caring is NOT sharing
影響を受ける製品
Red Hat Product セキュリティーチームは、本件によるセキュリティー上の影響度を重要と評価しています。
以下の Red Hat 製品のバージョンが影響を受けます。
Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 6
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 8
Red Hat Atomic Host
Red Hat Enterprise MRG 2
Red Hat OpenShift Online v3
Red Hat Virtualization (RHV/RHV-H)
Red Hat OpenStack Platform
Red Hat Linux コンテナーは、サードパーティーハードウェアの脆弱性の影響を直接受けませんが、そのセキュリティーはホストカーネル環境の整合性に依存しています。Red Hat では最新バージョンのコンテナーイメージを使用することを推奨します。Red Hat Container Catalog の一部である Container Health Index を使用すると、常に Red Hat コンテナーのセキュリティー状態を確認できます。使用中のコンテナーのプライバシーを保護するには、これらの攻撃に対して (Red Hat Enterprise Linux や Atomic Host といった) コンテナーホストを更新する必要があります。Red Hat はこのユースケース向けに更新された Atomic Host をリリースしています。
攻撃ベクトル | 脆弱であるかどうか | 脆弱である場合、その理由 | 軽減策 |
---|---|---|---|
ローカルユーザープロセス対ホスト | 脆弱 | 保護されたメモリーの読み取り | カーネル MDS パッチ + マイクロコード + HT の無効化 |
ローカルユーザープロセス対他のユーザープロセス | 脆弱 | 保護されたメモリーの読み取り | カーネル MDS パッチ + マイクロコード + HT の無効化 |
ゲスト対他のゲスト | 脆弱 | 保護されたメモリーの読み取り | カーネル MDS パッチ + マイクロコード + HT の無効化 |
ゲスト対ホスト | 脆弱 | 保護されたメモリーの読み取り | カーネル MDS パッチ + マイクロコード + HT の無効化 |
ホストユーザー対ゲスト | 脆弱 | 保護されたメモリーの読み取り | カーネル MDS パッチ + マイクロコード + HT の無効化 |
コンテナー対ホスト | 脆弱 | 保護されたメモリーの読み取り | カーネル MDS パッチ + マイクロコード + HT の無効化 |
コンテナー対他のコンテナー | 脆弱 | 保護されたメモリーの読み取り | カーネル MDS パッチ + マイクロコード + HT の無効化 |
ホストによって HT が無効化されたマルチテナントシステムでは、他のゲストが同じコアでスレッドにアクセスできず、脆弱ではありません。影響を受けるのは、ホストのパフォーマンスと利用できるリソースです。
ホストの HT が有効で、ハイパーバイザーが脆弱であるマルチテナントシステムでは、HT が有効または無効であるかに関わらず、ゲストも脆弱になります。
ホストの HT が有効で、ハイパーバイザーが脆弱でないマルチテナントシステムでは、ゲストを保護するために HT を無効にすることを検討する必要があります。
脆弱性の診断
以下の診断スクリプトを使用して、現在ご使用のシステムにこの不具合による脆弱性が存在するかどうかを判断します。正規のスクリプトであることを確認する場合は 分離されている GPG 署名 もダウンロードします。
Red Hat Virtualization 製品をお使いの場合は、ナレッジベースの記事を参照して OEM 提供のマイクロコード/ファームウェアが適用されているか確認してください。
該当する更新を適用した後、以下のいずれかのコマンドを実行すると、パッチが有効になっていることを確認することができます。
# dmesg | grep "MDS:"
[ 0.162571] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[ 181.862076] MDS: Mitigation: Clear CPU buffers
# cat /sys/devices/system/cpu/vulnerabilities/mds
Mitigation: Clear CPU buffers; SMT vulnerable
対処方法
影響を受けるバージョンの Red Hat 製品をご使用のお客様は、エラータが利用可能になり次第、更新を行うことが強く推奨されます。利用可能な更新を早急に適用し、適切な軽減策を有効にしてください。
パッチを適用する順序は重要ではありませんが、ファームウェアおよびハイパーバイザーの更新後は、すべてのシステム/仮想マシンの電源を切って再起動し、新たなハードウェアタイプを認識する必要があります。
影響を受ける製品の更新
製品名 | パッケージ名 | アドバイザリー/更新 |
Red Hat Enterprise Linux 8 (z-stream) | kernel | RHSA-2019:1167 |
Red Hat Enterprise Linux 8 | kernel-rt | RHSA-2019:1174 |
Red Hat Enterprise Linux 8 | virt:rhel | RHSA-2019:1175 |
Red Hat Enterprise Linux 8 | microcode_ctl | RHEA-2019:1211 |
Red Hat Enterprise Linux 7 (z-stream) | kernel | RHSA-2019:1168 |
Red Hat Enterprise Linux 7 | kernel-rt | RHSA-2019:1176 |
Red Hat Enterprise Linux 7 | qemu-kvm | RHSA-2019:1178 |
Red Hat Enterprise Linux 7 | qemu-kvm-rhev | RHSA-2019:1179 |
Red Hat Enterprise Linux 7 | libvirt | RHSA-2019:1177 |
Red Hat Enterprise Linux 7 | microcode_ctl | RHEA-2019:1210 |
Red Hat Enterprise Linux 7.5 Extended Update Support [1] | kernel | RHSA-2019:1155 |
Red Hat Enterprise Linux 7.5 Extended Update Support [1] | qemu-kvm | RHSA-2019:1183 |
Red Hat Enterprise Linux 7.5 Extended Update Support [1] | libvirt | RHSA-2019:1182 |
Red Hat Enterprise Linux 7.5 Extended Update Support [1] | microcode_ctl | RHEA-2019:1213 |
Red Hat Enterprise Linux 7.4 Extended Update Support [1] | kernel | RHSA-2019:1170 |
Red Hat Enterprise Linux 7.4 Extended Update Support [1] | qemu-kvm | RHSA-2019:1185 |
Red Hat Enterprise Linux 7.4 Extended Update Support [1] | libvirt | RHSA-2019:1184 |
Red Hat Enterprise Linux 7.4 Extended Update Support [1] | microcode_ctl | RHEA-2019:1214 |
Red Hat Enterprise Linux 7.3 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | kernel | RHSA-2019:1171 |
Red Hat Enterprise Linux 7.3 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | qemu-kvm | RHSA-2019:1189 |
Red Hat Enterprise Linux 7.3 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | libvirt | RHSA-2019:1187 |
Red Hat Enterprise Linux 7.3 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | microcode_ctl | RHEA-2019:1215 |
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | kernel | RHSA-2019:1172 |
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | qemu-kvm | RHSA-2019:1188 |
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | libvirt | RHSA-2019:1186 |
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support [2]、[3] | microcode_ctl | RHEA-2019:1216 |
Red Hat Enterprise Linux 6 (z-stream) | kernel | RHSA-2019:1169 |
Red Hat Enterprise Linux 6 | qemu-kvm | RHSA-2019:1181 |
Red Hat Enterprise Linux 6 | libvirt | RHSA-2019:1180 |
Red Hat Enterprise Linux 6 | microcode_ctl | RHEA-2019:1212 |
Red Hat Enterprise Linux 6.6 Advanced Update Support [2] | kernel | RHSA-2019:1193 |
Red Hat Enterprise Linux 6.6 Advanced Update Support [2] | qemu-kvm | RHSA-2019:1195 |
Red Hat Enterprise Linux 6.6 Advanced Update Support [2] | libvirt | RHSA-2019:1194 |
Red Hat Enterprise Linux 6.6 Advanced Update Support [2] | microcode_ctl | RHEA-2019:1218 |
Red Hat Enterprise Linux 6.5 Advanced Update Support [2] | kernel | RHSA-2019:1196 |
Red Hat Enterprise Linux 6.5 Advanced Update Support [2] | qemu-kvm | RHSA-2019:1198 |
Red Hat Enterprise Linux 6.5 Advanced Update Support [2] | libvirt | RHSA-2019:1197 |
Red Hat Enterprise Linux 6.5 Advanced Update Support [2] | microcode_ctl | RHEA-2019:1219 |
Red Hat Enterprise Linux 5 Extended Lifecycle Support [5] | kernel | 以下参照 |
RHEL Atomic Host [4] | kernel | リスピン保留中 |
Red Hat Enterprise MRG 2 | kernel-rt | RHSA-2019:1190 |
Red Hat Virtualization 4 | vdsm | RHSA-2019:1203 |
Red Hat Virtualization 4.2 | vdsm | RHSA-2019:1204 |
Red Hat Virtualization 4.3 | rhvm-setup-plugins | RHSA-2019:1205 |
Red Hat Virtualization 4.2 | rhvm-setup-plugins | RHSA-2019:1206 |
Red Hat Virtualization 4 | virtualization host | RHSA-2019:1207 |
Red Hat Virtualization 4 | rhvm-appliance | RHSA-2019:1208 |
Red Hat Virtualization 4.2 | virtualization host | RHSA-2019:1209 |
Red Hat OpenStack Platform 14 (Rocky) | qemu-kvm-rhev | RHSA-2019:1202 |
Red Hat OpenStack Platform 14 (Rocky) | container image | RHBA-2019:1242 |
Red Hat OpenStack Platform 13 (Queens) | qemu-kvm-rhev | RHSA-2019:1201 |
Red Hat OpenStack Platform 13 (Queens) | container image | RHBA-2019:1241 |
Red Hat OpenStack Platform 10 (Newton) | qemu-kvm-rhev | RHSA-2019:1200 |
Red Hat OpenStack Platform 9 (Mitaka) | qemu-kvm-rhev | RHSA-2019:1199 |
[1] このパッチを取得するには、有効な EUS サブスクリプションが必要です。お持ちのアカウントに有効な EUS サブスクリプションがない場合は、Red Hat の営業部門または営業担当者に お問い合わせ ください。
Red Hat Enterprise Linux Extended Update Support サブスクリプションとは何ですか?
[2] RHEL AUS のパッチを入手するには、アクティブな AUS サブスクリプションが必要です。
What is Advanced mission critical Update Support (AUS)?
[3] RHEL E4S/TUS のパッチを取得するには 有効な Update Services for SAP Solutions Add-on または TUS サブスクリプションが必要です。
[4] Red Hat Enterprise Atomic Host の更新方法に関する詳細は、「Deploying a specific version fo Red Hat Enterprise Atomic Host」を参照してください。
Red Hat Enterprise Linux 5 Extended Life Cycle Support (ELS) アドオンに関する FAQ
[5] 現時点では、Red Hat Enterprise Linux 5 のサポートライフサイクルの状況や、軽減策に必要となるマイクロコードを利用できる CPU の種類が少ないことなどを考慮して問題の影響度を判断した結果、RHEL5 は更新や軽減策の対象外となっています。利用できるアップグレードオプションについては Red Hat サポートにお問い合わせください。
注記: ハードウェアの OEM に連絡して、最新バージョンの CPU マイクロコード/ファームウェアを取得する必要がある場合があります。
軽減策
ハードウェア OEM によって提供される CPU マイクロコード/ファームウェアと合わせてベンダーのソフトウェア更新を適用するか、脆弱でないマイクロプロセッサーを使用する以外に、既知の軽減策はありません。Red Hat のお客様は、ベンダーの解決策を CPU に適用し、パッチが利用可能になり次第、カーネルを更新してください。サポートされるプラットフォームの利用可能なマイクロコードに関する詳細については、システムの OEM プロバイダーまたは CPU メーカーにお問い合わせください。
影響を受けるシステムの SMT を無効にすると、アタックサーフェスの一部を減らすことができますが、脆弱性によるすべてのリスクを完全に排除できるわけではありません。これらの脆弱性によるリスクを軽減するには、システムに更新済みのマイクロコードやカーネル、仮想化パッチが必要で、管理者は SMT/HT の無効化がデプロイメントに適した処置であるかどうかを見極める必要があります。さらに、アプリケーションのパフォーマンスに影響する可能性があります。SMT の無効化に関する情報は「Disabling Hyper-Threading」を参照してください。
この問題の軽減策については、リスクベースのアプローチが推奨されます。高レベルのセキュリティーと信頼が求められるシステムから対処し、悪用のリスクを低減する対処法がこれらのシステムに適用されるまで、これらのシステムを他の信頼できないシステムから分離してください。
Ansible Playbook
Ansible Playbook の disable_mds_smt_mitigate.yml を以下に示します。この Playbook は稼働中のシステムの SMT を無効にし、今後のシステムの再起動で SMT を無効にし、関連する更新を適用します。この Playbook を使用するには、HOSTS の追加変数で無効にする SMT のホストを指定します。
ansible-playbook -e HOSTS=web,mail,ldap04 disable_mds_smt_mitigate.yml
また、Playbook はコマンドライン引数を追加し、FORCEOFF 変数を true に設定することで、起動時に SMT が再度有効化されないようにすることもできます。
ansible-playbook -e HOSTS=hypervisors -e FORCEOFF=true disable_mds_smt_mitigate.yml
正規の Playbook であることを確認するために、GPG 分離署名をダウンロード することができます。
パフォーマンスの影響と MDS の無効化
MDS の CVE 軽減策は、パフォーマンスに影響することが判明しています。この影響は、ユーザー空間とカーネル空間の往来が高頻度で行われるアプリケーションでより顕著になります。例として、システム呼び出し、NMI、割り込みなどが挙げられます。
ワークロードの影響を予測する方法はありませんが、テストでは以下のような結果が得られました。
- 多くの時間をユーザーモードで費やすアプリケーションは、速度の低下が最も少なく、速度の低下率は通常 0-5% の範囲でした。
- 小さいブロックや小さいパケットのネットワーク I/O を多く実行したアプリケーションの速度の低下率は 10-25% の範囲でした。
- 速度の低下が最も著しかったのは、ユーザー空間とカーネル空間を往来する以外に何もしなかった一部のマイクロベンチマークでした。
MDS 軽減策のパフォーマンスへの影響を測定するには、MDS が有効な状態でアプリケーションを実行した後に無効にします。MDS の軽減策はデフォルトで有効になっています。SMT を無効にした状態で MDS の軽減策を完全に有効にするには、「mds=full,nosmt」フラグをカーネルブートのコマンドラインに追加します。MDS の軽減策を完全に無効にするには、「mds=off」フラグをカーネルブートのコマンドラインに追加します。実行中に無効にすることはできません。
ハイパースレッディングを無効にした場合のパフォーマンスの影響については、https://access.redhat.com/security/vulnerabilities/L1TF-perf の「Disabling Hyper-Threading」を参照してください。
Comments