Intel 社による 2019 年 11 月のマイクロコード更新
Table of Contents
概要
Red Hat は、Intel の CPU ハードウェアマイクロアーキテクチャーとオンボードコンポーネントに影響する CPU ハードウェアの不具合を複数認識しています。
Red Hat は、弊社のマイクロプロセッサーパートナーによって開発された、更新済みのマイクロコードを提供します。 追加の改善策を利用できる可能性があるため、ハードウェアベンダーに連絡し、BIOS/ファームウェアのより新しい更新が推奨されるかどうかを判断してください。
背景
CVE-2019-11135: TSX (Transactional Synchronization Extensions) の非同期アボート
TSX (Transactional Synchronization Extensions) の非同期アボートは、これまで MDS 関連の脆弱性の影響を受けたバッファーに影響する MDS 関連の不具合です。カスタムコードを使用するローカル攻撃者は、この不具合を悪用して、SMT (同時マルチスレッド、Simultaneous multithreading) と TSX をサポートするプロセッサーや、それらのプロセッサーの兄弟論理プロセッサーのキャッシュコンテンツから情報を収集できます。
この不具合は、TSX リージョンの実行時間を監視できる認証されたローカル攻撃者が、アボート実行時間を比較してメモリー状態を推測できる Intel TSX アボートの実装で見つかりました。
これにより、攻撃者はトランザクションのアボートのタイミングを監視できる間、監視されたサイドチャネルを経由して情報を公開することが可能になります。
この問題には CVE-2019-11135 が割り当てられ、「中程度の影響」があると評価されました。
ターゲットアレイ間接共有エラータ (情報漏えい)
Intel マイクロプロセッサーのターゲットアレイ (TA) 共有の実装で不具合が確認されました。ターゲットアレイは、CPU コア内の分岐予測ユニットによって使用される高速アクセスバッファーです。同じターゲットアレイが論理プロセッサースレッドの間で共有されます。
使用される CPU 分岐予測は、分岐ターゲットを通常作業の一部として作成します。分岐ターゲット (間接分岐の宛先) が 2 つの兄弟スレッド間で同義語として検出されると、プロセッサーは分岐ターゲットアレイに単一のエントリーのみを作成します。
ローカルアクセスを認証された攻撃者は、分岐予測ユニットが両方の論理プロセッサーで間接ターゲットを使用するように操作できます。CPU の間接ターゲットの一致に不具合があり、ターゲットが一致しなくても一部のターゲットを誤って一致します。
誤った一致を攻撃ベクトルとして使用すると、攻撃者は影響を受けるプロセッサーで Spectre-V2 のような攻撃を実行することが可能です。
論理プロセッサー間の TA 共有を無効化して動作を変更するマイクロコードの更新を利用すると、この不具合を軽減できます。
これまでの MDS 軽減策の不完全な修正 (VERW)
初回の MDS に対して 2019 年 5 月 14 日にリリースされたファームウェアの変更では、情報がエンドユーザーに漏えいしないようにするためバッファーをクリアにする命令がオーバーロードされました。不具合を軽減するために、オペレーティングシステムによって使用される追加機能を実行する 4 つの命令がこの修正によって変更されました。これらの命令は次のとおりです。
- VERW 命令
- L1D_FLUSH 命令
- RSM (Return from System Management mode)
- SGX Enter および SGX Exit(セキュアエンクレーブ Enter および Exit)
VERW
および L1D_FLUSH
コマンドは、影響を受けるプロセッサーで実行しているファームウェアが、さまざまな MDS 攻撃セットで使用される可能性のあるバッファー値を上書きするよう、オペレーティングシステムのベンダーによって使用されました。
しかし、L1D バッファーが不適切に消去され、バッファーのすべてのビットがゼロに設定されませんでした。バッファーの一部 (ビット 16-31 および 48-63) は、クリアされるよう設定された直後に、クリアされる前の最後の既知の値に復元されました。
これにより、システムによって部分的に共有されたデータへのサイドチャネルが許可されますが、これまでの MDS でさらされたリスクよりも範囲が狭くなります。
ローカル攻撃者は、システムで MDS 関連の攻撃を実行し、システム上で情報を収集する必要があります。 攻撃の信頼性は、これまでの MDS 関連の攻撃に比べ大幅に低下するとみられます。
この問題には、マイクロコードの更新が必要で、パフォーマンスへの影響や変更はないことが想定されます。
SHUF* 命令実装の不具合 (DoS)
Intel マイクロプロセッサーの、パッキングされたバイトのシャッフル AVX 命令 (SHUF*) の実装で、不具合が見つかりました。不具合を悪用して、プロセッサーで安定性の問題を引き起こすことができ、マシンチェック例外 (MCE、Machine Check Exception) を発生できる可能性があります。
これにより、ローカルアカウントを持つ攻撃者は、仮想化環境のゲスト内のシステムやホストをクラッシュできる可能性があります。
この問題には、マイクロコードの更新が必要で、パフォーマンスへの影響や変更はないことが想定されます。
CVE-2019-0117: Intel SGX (情報漏えい)
保護されたメモリーのアクセス制御に関する SGX の実装で不具合が見つかりました。 SGX が有効になっているシステムのローカル攻撃者と、コードの実行が可能な影響を受ける Intel GPU は、SGX で保護されたメモリーの内容を推測することが可能です。
この問題には CVE-2019-0117 が割り当てられ、「中程度の影響」があると評価されました。
EGETKEY エラータ
Intel SGX 機能は、メモリー構造が稼働中のハードウェアによって暗号を用いて作成されたことを検証するために使用されるハードウェア命令を提供します。
EGETKEY アセンブリ命令は、この機能によって使用されるキーをセキュアエンクレーブで実行されているソフトウェアに提供します。
ハイパースレッディングが有効であると、競合状態が存在します。競合状態では、ローカル攻撃者がコアに使用するリセットキーにアクセスでき、その情報から HT は無効なキーを入手し、そのキーを使って無効なプラットフォームをエミュレートまたは偽装できます。
CVE-2019-11139: 電圧変調の脆弱性
最近の Intel プロセッサーには、VR (Voltage Regulator、電圧レギュレーター) と呼ばれるシステムによって制御されるデバイスが組み込まれ、CPU の各部分に提供される電力量を管理するために使用されます。VR は、CPU の特定のサブシステムが使用されていればいつでも電圧の要件を調整できます。最近の CPU 上の AVX サブシステムが例として挙げられます。このサブシステムが使用されていないときは電源を切ることができます。
レギュレーターの設計に不具合があるため、特定の条件下で、レギュレーターへの 0mv (調整なし) と呼ばれるメッセージに対して誤った応答を送信することが可能になります。
レギュレーターに論理制御を発行できる攻撃者は、システムをクラッシュしたり、ハードウェアの電圧調整ユニットの寿命を短くすることが可能です。
この問題には CVE-2019-11139 が割り当てられ、「中程度の影響」があると評価されました。
電源制御ユニットに対してマイクロコードを更新すると、0mv 調整ロジックを送信できなくなるため、誤った応答が発生しなくなります。
電圧変調 (FIVR エラータ)
Intel プロセッサーの電圧調整ユニットに存在する脆弱性により、権限を持つローカルユーザーがシステムをクラッシュできるサービス拒否状態が発生する可能性があります。
条件付きジャンプ Macro-Fusion (Dos または権限昇格)
Intel のマイクロプロセッサーには、中間層が命令のシーケンスを CPU のハードウェアによって実行される単一のマイクロオペレーション (μOp) にまとめる Macro-Op (MOP) Fusion と呼ばれる論理が含まれています。
Intel の最新のプロセッサーに含まれる MOP Fusion の設計に実装の不具合が存在するため、悪意のあるコードが未定義の動作を実行する可能性があります。この状態を悪用すると、システムのクラッシュやエラーが発生する可能性があります。
この脆弱性の正確な条件には、キャッシュラインの境界を超える DSB (Decoded Stream Buffer または μOp キャッシュ) によって以前にデコードされた条件分岐が関係します。一般的でない条件下では、このようなシーケンスは存在しないコードを誤って実行しようとするため、#UD (未定義命令カーネルパニック) や偽のページ障害 (システムをパニックさせる可能性もある) など、さまざまなエラーが発生する原因となります。Red Hat Product Security チームは、このバグを悪用した権限昇格の可能性を否定していません。
Jump Conditional Code Erratum Overview White Paper for Intel® Processors
診断ツール
現時点では、攻撃の実行を探知する方法はありません。
影響を受ける製品
製品名 | 修正済みパッケージ | アドバイザリーのリンク |
---|---|---|
Red Hat Enterprise Linux 8.1.0 (Z-stream) | microcode_ctl-20190618-1.20191112.1.el8_1 | RHEA-2019:3845 |
Red Hat Enterprise Linux 8.0.0 SAP extension | microcode_ctl-20180807a-2.20191112.1.el8_0 | 該当なし |
Red Hat Enterprise Linux 7.7 (Z-stream) | microcode_ctl-2.1-53.3.el7_7 | RHEA-2019:3846 |
Red Hat Enterprise Linux 7.6 EUS | microcode_ctl-2.1-47.8.el7_6 | RHEA-2019:3848 |
Red Hat Enterprise Linux 7.5 EUS | microcode_ctl-2.1-29.24.el7_5 | RHEA-2019:3849 |
Red Hat Enterprise Linux 7.4 AUS/E4S/TUS | microcode_ctl-2.1-22.26.el7_4 | RHEA-2019:3850 |
Red Hat Enterprise Linux 7.3 AUS/E4S/TUS | microcode_ctl-2.1-16.27.el7_3 | RHEA-2019:3851 |
Red Hat Enterprise Linux 7.2 AUS/E4S/TUS | microcode_ctl-2.1-12.24.el7_2 | RHEA-2019:3852 |
Red Hat Enterprise Linux 6.10 (Z-stream) | microcode_ctl-1.17-33.19.el6_10 | RHEA-2019:3847 |
Red Hat Enterprise Linux 6.6 AUS | microcode_ctl-1.17-19.23.el6_6 | RHEA-2019:3853 |
Red Hat Enterprise Linux 6.5 AUS | microcode_ctl-1.17-17.25.el6_5 | RHEA-2019:3854 |
Red Hat Enterprise Linux 5 | 更新は提供されません | 該当なし |
影響を受ける設定
以下に、これらの不具合の影響を受ける CPU ファミリーを不具合別に示します。影響の有無を確認するには、CPU のファミリーを判断する必要があります。
CPU ファミリーモデルの検索
システムによって提供される CPU モデルを検索します。 これは、/proc/cpuinfo
ファイルで検索できます。
$ grep -E '^(cpu family|model|stepping|microcode)' /proc/cpuinfo | sort -u
cpu family : 6
microcode : 0x84
model : 94
model name : Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
stepping : 3
(注記: RHEL 6 でのマイクロコードのリビジョンは 10 進数です。RHEL 7 以降では 16 進数と対応する接頭辞になります)
問題を軽減する Intel のマイクロコード更新
モデル番号 (10 進数) | ステッピング (10 進数) | 軽減策の最小マイクロコードレビジョン (10 進数) | 該当する脆弱性およびエラータ | コード名 | モデル名 |
---|---|---|---|---|---|
0x4e (78) | 0x03 (3) | 0xd4 (212) | TA 間接共有、VERW、SHUF、JCC、SGX、EGETKEY | Skylake U/Y Skylake U (2+3e) |
6th Generation Intel® Core™ プロセッサーファミリー |
0x55 (85) | 0x04 (4) | 0x2000064 (33554532) ** | 電圧変調 (CVE-2019-11139)、FIVR エラータ、TA 間接共有、JCC、SHUF | Skylake D Bakerville Skylake Server Skylake W Skylake X Basin Falls |
Intel® Xeon® Processor D-2123IT、D-2141I、D-2142IT、D-2143IT、D-2145NT、D-2146NT、D-2161I、D-2163IT、D-2166NT、D-2173IT、D-2177NT、D-2183IT、D-2187NT Intel® Xeon® Bronze プロセッサー 3104、3106 Intel® Xeon® Gold Processor 5115、5118、5119T、5120、5120T、5122、6126、6126F、6126T、6128、6130、6130F、6130T、6132、6134、6134M、6136、6138、6138F、6138T、6140、6140M、 6142、6142F、6142M、6144、6146、6148、6148F、6150、6152、6154 Intel® Xeon® Platinum プロセッサー 8153、8156、8158、8160、8160F、8160M、8160T、8164、8168、8170、8170M、8176、8176F、8176M、8180、8180M Intel® Xeon® Silver プロセッサー 4108、4109T、4110、4112、4114、4114T、4116、4116T Intel® Xeon® プロセッサー W-2123、W-2125、W-2133、W-2135、W-2145、W-2155、W-2195、W-2175 Intel® Core™ i9 79xxX、78xxX |
0x55 (85) | 0x07 (7) | 0x500002b (83886123) ** | TAA、FIVR エラータ、TA 間接共有、SHUF、JCC | Cascade Lake | 2nd Generation Intel® Xeon® スケーラブルプロセッサー |
0x5e (94) | 0x03 (3) | 0xd4 (212) | TA 間接共有、VERW、SHUF、JCC、SGX、EGETKEY | Skylake H | 6th Generation Intel® Core™ プロセッサーファミリー |
0x8e (142) | 0x09 (9) | 0xc6 (198) | TA 間接共有、VERW、SHUF、JCC、SGX、EGETKEY | Kaby Lake U Kaby Lake U (2+3e) Kaby Lake Y |
7th Generation Intel® Core™ プロセッサーファミリー |
0x8e (142) | 0x09 (9) | 0xc6 (198) | TAA、TA 間接共有、VERW、SHUF、JCC、SGX、EGETKEY | Amber Lake Y | 8th Generation Intel® Core™ プロセッサーファミリー |
0x8e (142) | 0x0a (10) | 0xc6 (198) | TAA、TA 間接共有、VERW、SHUF、JCC、SGX、EGETKEY | Coffee Lake U (4+3e) Kaby Lake Refresh U (4+2) |
8th Generation Intel® Core™ プロセッサーファミリー |
0x8e (142) | 0x0b (11) | 0xc6 (198) | TAA、TA 間接共有、SHUF、JCC、SGX、EGETKEY | Whiskey Lake U | 8th Generation Intel® Core™ プロセッサー |
0x8e (142) | 0x0c (12) | 0xc6 (198) | TAA、TA 間接共有、SHUF、JCC、SGX、EGETKEY | Whiskey Lake U | 8th Generation Intel® Core™ プロセッサー |
0x9e (158) | 0x09 (9) | 0xc6 (198) | TAA、TA 間接共有、VERW、SHUF、JCC、SGX、EGETKEY | Kaby Lake G Kaby Lake H Kaby Lake S Kaby Lake X Kaby Lake Xeon E3 |
7th Generation Intel® Core™ プロセッサーファミリー 8th Generation Intel® Core™ プロセッサーファミリー Intel® Core™ X-series プロセッサー (i5-7640X、 i7-7740X) Intel® Xeon® Processor E3 v6 ファミリー |
0x9e (158) | 0x0a (10) | 0xc6 (198) | TAA、TA 間接共有、VERW、SHUF、JCC、SGX、EGETKEY | Coffee Lake H (6+2) Coffee Lake S (6+2) Coffee Lake S (6+2) Xeon E Coffee Lake S (4+2) Xeon E |
8th Generation Intel® Core™ プロセッサーファミリー Intel® Xeon® Processor E ファミリー |
0x9e (158) | 0x0b (11) | 0xc6 (198) | TAA、TA 間接共有、SHUF、JCC、SGX、EGETKEY | Coffee Lake S (4+2) | 8th Generation Intel® Core™ プロセッサーファミリー Intel® Pentium® Gold プロセッサーシリーズ Intel® Celeron® プロセッサー G シリーズ |
0x9e (158) | 0x0d (13) | 0xc6 (198) | TAA、TA 間接共有、SHUF、JCC、SGX、EGETKEY | Coffee Lake H Coffee Lake S Coffee Lake S (8+2) Xeon E |
9th Generation Intel® Core™ プロセッサーファミリー |
**microcode-20190918 リリースが含まれる以前の microcode_ctl
パッケージバージョン以降でマイクロコードの更新を利用できます。
解決策
影響を受けるバージョンの Red Hat 製品をご使用のお客様は、エラータが利用可能になり次第、更新を行うことが強く推奨されます。適切な更新を直ちに適用し、再起動してこの不具合を適切に軽減することが求められます。
謝辞
Red Hat は、これらの問題を修正し、Red Hat が問題を認識するよう報告してくれた Intel 社に感謝します。
よくある質問
問: 再起動して変更を反映する必要がありますか?
答: システムでこれらの問題を修正するには、マイクロコードパッケージを更新することが最低限の要件となります。この問題は、TSX と IFU (CVE-2018-12207) 両方の更新と関連しているため、適切に機能および報告するには再起動が必要になります。
問: 使用している CPU が表に記載されていません。
答: Red Hat は、必要に応じてマイクロコードパッケージの更新を継続します。追加の改善策を利用できる可能性があるため、ハードウェアベンダーに連絡し、BIOS/ファームウェアのより新しい更新が推奨されるかどうかを判断してください。
追加情報
マイクロコードの更新はアップストリームベンダーによって提供されるため、Red Hat は上記の情報の正確性を保証できません。
関連するナレッジベースの記事:
Is CPU microcode available to address CVE-2017-5715 via the microcode_ctl package?
Is CPU microcode available to address CVE-2018-3639 via the microcode_ctl package?
Is CPU microcode available to address CVE-2018-3620 and CVE-2018-3646 via the microcode_ctl package?
Is CPU microcode available to address MDS (ZombieLoad) CVE-2018-12130, CVE-2018-12126, CVE-2018-12127, and CVE-2019-11091 via the microcode_ctl package?
November IPU Update (Intel 社提供)
Microcode Update Guidance (Intel 社提供)
Comments