ページの本文へ

Hitachi

HIRT-PUB18001:Meltdown、Spectre 問題と派生した CPU 脆弱性問題

更新日: 2018年09月10日

2018年 1月上旬、CPU の脆弱性として、Meltdown、Spectre 問題が報告されました。Intel、AMD、ARM など多くの CPU が影響を受ける、すなわち、多くの情報システムが影響を受けることから、各所から情報発信がされました。HIRT-PUB18001 では、Meltdown、Spectre 問題について紹介したいと思います。

[更新] 2018年 5月、派生した CPU の脆弱性問題が報告されました。

[更新] 2018年 6月、派生した CPU の脆弱性問題が報告されました。

[更新] 2018年 7月、派生した CPU の脆弱性問題が報告されました。

[更新] 2018年 8月、派生した CPU の脆弱性問題が報告されました。

1. 概要

多くの Meltdown、Spectre 問題の記事に、投機的実行 (Speculative Execution) という文字が記載されていたかと思います。


投機的実行 (Speculative Execution) とは

PC は、高速な CPU を最大限活用するために、命令を順番に処理するのではなく、処理できる命令は先物であっても先行して処理する機能 (アウトオブオーダ実行) や、履歴を元に次に使う選択肢を予測し先行して処理する機能 (分岐予測) を実装しています。このような機能のことを、総称して、投機的実行 (Speculative Execution) と呼んでいます。前倒しで作業をすることになるため、処理の効率化には有効ですが、当然、結果が無効であったり、処理する必要のない命令が実行されてしまったりするなどのイレギュラー状態、前倒しの作業が無駄になってしまった状態が発生することになります。これまでのセキュリティ機構は、このようなイレギュラー状態での動作を想定していなかったために、Meltdown や Spectre で報告された悪用できる問題、脆弱性が生まれてしまいました。


それでは、Meltdown、Spectre 問題を見ていきましょう。


1.1 Meltdown

Meltdown では、処理できる命令は先物であっても先行して処理する機能 (アウトオブオーダ実行) を利用して、権限がないとアクセスできないデータの処理と、そのデータを使った処理とを実行することで、権限がなくてもアクセスできるキャッシュと呼ばれるメモリに、権限がないとアクセスできないデータに関連する情報を格納する方法です (図 1) 。アウトオブオーダ実行によって、本来処理されるべきでない処理が実行されてしまうことに問題があるわけです。


図 1:[Meltdown] 不正なデータキャッシュの読み込み (CVE-2017-5754:Rogue Data Cache Load)
図 1:[Meltdown] 不正なデータキャッシュの読み込み (CVE-2017-5754:Rogue Data Cache Load)


1.2 Spectre

Spectre は、2 種類のアプローチがありますが、いずれも履歴を元に次に使う選択肢を予測し先行して処理する機能 (分岐予測) を利用します。一つは、CPU が、本来アクセスできない領域へのアクセスであるかどうかをチェックしている間に、アクセスできない領域へのアクセスを実行することで、キャッシュと呼ばれるメモリに、本来アクセスできない領域のデータに関連する情報を格納する方法です (図 2) 。もう一つは、履歴を元に分岐先のメモリアドレスを予測する機能を悪用するもので、不正な分岐先のメモリアドレスを予測させるよう誘導して、本来アクセスできない領域のデータを読み取る方法です (図 3) 。


図 2:[Spectre] 境界チェックの迂回 (CVE-2017-5753: Bounds Check Bypass)
図 2:[Spectre] 境界チェックの迂回 (CVE-2017-5753: Bounds Check Bypass)


図 3:[Spectre] 分岐先予測への介入 (CVE-2017-5715:Branch Target Injection)
図 3:[Spectre] 分岐先予測への介入 (CVE-2017-5715:Branch Target Injection)


1.3 派生したCPU の脆弱性問題

RSRE (Variant 3a) は、Meltdown の類似した問題です。権限がなくてもアクセスできるキャッシュと呼ばれるメモリへのアクセスに、記憶回路であるレジスタに格納されている情報を利用するというものです。

SSB, SpectreNG (Variant 4) は、書き込み処理に先立つ参照処理を悪用する問題です。書き込みで使用する領域の情報を参照する処理を悪用することで、権限がなくてもアクセスできるキャッシュと呼ばれるメモリに記録されていた一つ前のデータにアクセスできるというものです。


2. 想定される影響

表 1:想定される影響

公開日 2018年01月30日
名称 Meltdown
Variant 3
Spectre
Variant 1
Spectre
Variant 2
脆弱性 不正なデータキャッシュの読み込み (CVE-2017-5754) 境界チェックの迂回 (CVE-2017-5753) 分岐先予測への介入 (CVE-2017-5715)
影響 メモリに保存された情報の漏洩
深刻度 CVSS:2.0/AV:L/AC:M/Au:N/C:C/I:N/A:N
CVSS:3.0/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N
影響を受ける CPU Intel、IBM POWER Intel、AMD、ARM、IBM POWER
可能性のある攻撃シナリオ 漏洩したアカウント情報を利用したアクセス権限の昇格
カーネルのアドレス空間配置のランダム化機能の迂回
仮想化されたホスティング環境への攻撃、例えば、ゲスト OS からホスト OS へアクセスなどの仮想環境の突破
ブラウザを介した攻撃、例えば、ブラウザが保有する秘密情報の漏洩


公開日 2018年05月21日 2018年06月13日
名称 RSRE
Variant 3a
SSB, SpectreNG
Variant 4
 
脆弱性 不正なシステムレジスタの参照 (CVE-2018-3640) 書込み前メモリの参照 (CVE-2018-3639) 適切でない FP 状態管理 (CVE-2018-3665)
影響 メモリに保存された情報の漏洩
深刻度 CVSS:2.0/AV:L/AC:L/Au:N/C:P/I:N/A:N
CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
影響を受ける CPU Intel、AMD、ARM Intel、AMD、ARM、IBM POWER
可能性のある攻撃シナリオ


公開日 2018年07月10日
名称 BCBS
Spectre 1.1
Spectre 1.2
脆弱性 境界チェックの迂回による書込み (CVE-2018-3693) 読み取り専用保護の迂回
影響 メモリに保存された情報の漏洩
深刻度 CVSS:2.0/AV:L/AC:M/Au:N/C:C/I:N/A:N
CVSS:3.0/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N
影響を受ける CPU Intel、AMD、ARM
可能性のある攻撃シナリオ


公開日 2018年08月14日
名称 Foreshadow
Foreshadow-SGX
Foreshadow-OS Foreshadow-VMM
脆弱性 L1 Terminal Fault (L1TF) SGX (CVE-2018-3615) L1 Terminal Fault (L1TF) OS/SMM (CVE-2018-3620) L1 Terminal Fault (L1TF) VMM (CVE-2018-3646)
影響 メモリに保存された情報の漏洩
深刻度 CVSS:2.0/AV:L/AC:L/Au:N/C:C/I:P/A:N
CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
影響を受ける CPU Intel
可能性のある攻撃シナリオ

3. 対策

表 2:対策のアプローチ

公開日 2018年01月30日
名称 Meltdown
Variant 3
Spectre
Variant 1
Spectre
Variant 2
脆弱性 不正なデータキャッシュの読み込み (CVE-2017-5754) 境界チェックの迂回 (CVE-2017-5753) 分岐先予測への介入 (CVE-2017-5715)
基本的なアプローチ OS アップデートを実施する。 アプリケーションアップデートを実施する。 アプリケーション、OS、ファームウェアアップデートを実施する。
ファームウェアアップデート Intel OS アップデートで対応 OS とファームウェアアップデートで対応
Facts About the New Security Research Findings and Intel Products
INTEL-OSS-10003 INTEL-OSS-10002
AMD 影響なし OS アップデートで対応 OS とファームウェアアップデートで対応
AMD Processors: Google Project Zero, Spectre and Meltdown
ARM Vulnerability of Speculative Processors to Cache Timing Side-Channel Mechanism
IBM POWER Potential Impact on Processors in the POWER Family
OS アップデート Windows ADV180002
Mac   iOS 11.2.2macOS High Sierra 10.13.2 追加アップデート から対応
Red Hat Kernel Side-Channel Attacks
Android Android Security Bulletin - January 2018
Android Security Bulletin - April 2018
Android Security Bulletin - May 2018
Chrome 64.0.3282.144 から対応
仮想環境アップデート VMware   VMSA-2018-0002VMSA-2018-0004
VMSA-2018-0007
Red Hat How to patch my RHV environment for Meltdown and Spectre CVE(CVE-2017-5754, CVE-2017-5753, and CVE-2017-5715)?
ブラウザアップデート Chrome   64.0.3282.119 から対応
Actions required to mitigate Speculative Side-Channel Attack techniques
Firefox 57.0.4 から対応
Safari 11.0.2 から対応
IE/Edge KB4056890 などで対応
Mitigating speculative execution side-channel attacks in Microsoft Edge and Internet Explorer


公開日 2018年05月21日 2018年06月13日
名称 RSRE
Variant 3a
SSB, SpectreNG
Variant 4
 
脆弱性 不正なシステムレジスタの参照 (CVE-2018-3640) 書込み前メモリの参照 (CVE-2018-3639) 適切でない FP 状態管理 (CVE-2018-3665)
基本的なアプローチ
ファームウェアアップデート Intel INTEL-SA-00115: Q2 2018 Speculative Execution Side Channel Update INTEL-SA-00145: Lazy FP state restore
AMD AMD Processor Security Updates
ARM Vulnerability of Speculative Processors to Cache Timing Side-Channel Mechanism
IBM POWER Potential Impact on Processors in the POWER Family
OS アップデート Windows ADV180013 ADV180012 ADV180016
Mac
Red Hat What is CVE-2018-3640? Speculative Store Bypass explained: what it is, how it works
Android Android Security Bulletin - January 2018
Chrome
仮想環境アップデート VMware VMSA-2018-0012
Red Hat
ブラウザアップデート Chrome
Firefox
Safari
IE/Edge


公開日 2018年07月10日
名称 BCBS
Spectre 1.1
Spectre 1.2
脆弱性 境界チェックの迂回による書込み (CVE-2018-3693) 読み取り専用保護の迂回
基本的なアプローチ
ファームウェアアップデート Intel INTEL-OSS-10002
AMD
ARM Vulnerability of Speculative Processors to Cache Timing Side-Channel Mechanism
IBM POWER
OS アップデート Windows ADV180002
Mac
Red Hat CVE-2018-3693
Android
Chrome
仮想環境アップデート VMware
Red Hat
ブラウザアップデート Chrome
Firefox
Safari
IE/Edge


公開日 2018年08月14日
名称 Foreshadow
Foreshadow-SGX
Foreshadow-OS Foreshadow-VMM
脆弱性 L1 Terminal Fault (L1TF) SGX (CVE-2018-3615) L1 Terminal Fault (L1TF) OS/SMM (CVE-2018-3620) L1 Terminal Fault (L1TF) VMM (CVE-2018-3646)
基本的なアプローチ
ファームウェアアップデート Intel INTEL-SA-00161: Q3 2018 Speculative Execution Side Channel Update
AMD
ARM
IBM POWER
OS アップデート Windows ADV180018
Mac
Red Hat L1TF - L1 Terminal Fault Attack - CVE-2018-3620 & CVE-2018-3646
Android
Chrome
仮想環境アップデート VMware VMSA-2018-0021 VMSA-2018-0020
Red Hat L1TF - L1 Terminal Fault Attack - CVE-2018-3620 & CVE-2018-3646
ブラウザアップデート Chrome
Firefox
Safari
IE/Edge


Meltdown、Spectre 問題を解決するためには、部分的にファームウェアアップデートが必要となります。しかし、アプリケーション (ブラウザ、仮想環境など) アップデート、OS アップデートによって脅威を低減することは可能で、これが多段防御として機能することなります。さらに、今回の脆弱性対策では、サイバー攻撃による脅威のほかに、対策による性能低下、対策による再起動問題も報告されていることから、稼働性を十分に考慮しなければなりません。従って、(1) サイバー攻撃による脅威、(2) 対策による性能低下、(3) 対策による障害の発生状況を踏まえて、対策要否、対策内容 (ブラウザ、仮想環境、OS、ファームウェアアップデートなど) と実施時期を検討する必要があります。


(1) サイバー攻撃による脅威

可能性のある攻撃シナリオとしては、仮想化されたホスティング環境への攻撃、例えば、ゲスト OS からホスト OS へアクセスなどの仮想環境の突破、ブラウザを介した攻撃、例えば、ブラウザが保有する秘密情報の漏洩があります。可能性のある攻撃シナリオに該当する環境の場合には、対策の優先度を上げる必要があります。また、独 AV-TEST Institute から、Meltdown、Spectre 問題を悪用しようとするマルウェア検体 139 件を発見したと報告されていますが、Meltdown、Spectre 問題は、CVSS 評価 (AV:L/AC:M/Au:N/C:C/I:N/A:N) で報告されている通り、ネットワーク経由で直接的な攻撃を許してしまう脆弱性ではありません。マルウェアの侵入を防ぐという一般的な対策を実施することが重要です。


(2) 対策による性能低下

性能に対する実際の影響は、ワークロード、ハードウェア、デバイス、システム制約などによって、大きく異なる可能性があります。既に公開されている性能への影響資料、実機での検証結果などを踏まえて、セキュリティと性能のトレードオフのバランスを取る必要があります。

  • Windows クライアント
    インテルの公開資料では、Office などの利用を想定したベンチマークでは、比較的大きな性能低下があることを報告しています。また、マイクロフトの公開資料では、新しいシリコンを使用した CPU の場合、多くのユーザは性能の変化に気づかないとしています。
  • Windows サーバ
    マイクロフトの公開資料では、より著しい性能への影響があることから、セキュリティと性能のトレードオフのバランスを取るべきと報告しています。
  • Red Hat
    Red Hat の公開資料では、OLTP データベースワークロードのようなベンチマークでは、性能低下は 8-19% になると報告しています。



(3) 対策による障害の発生状況

アップデートの適用によって再起動問題が発生したなどの障害報告は、次の通りです。システムの稼働継続性確保の点からも、対策による障害の発生状況を踏まえて対応する必要があります。

  • マイクロソフト
    セキュリティ更新プログラムと互換性のないウイルス対策ソフトが入っている環境で更新プログラムを適用した場合に、起動できなくなる可能性があるとしています。
  • インテル
    2018年 1月11日に、マイクロコード適用後に発生した再起動の問題 (通常よりも頻繁に再起動が発生するなど) を報告しています。また、1月22日には、再起動の問題を踏まえ、不具合の発生しているバージョンの展開を中止するようアナウンスするとともに、調査を継続しています。



5. 参考情報


5.1 脆弱性識別

次の脆弱性識別番号が付与されています。


5.2 関連情報

6. 更新履歴

2018年10月29日
  • 4. 製品対応状況を更新
2018年09月10日
  • L1TF SGX (CVE-2018-3615)、L1TF OS/SMM (CVE-2018-3620)、L1TF VMM (CVE-2018-3646) を追記
2018年08月08日
  • 境界チェックの迂回による書込み (CVE-2018-3693) を追記
2018年06月18日
  • 適切でない FP 状態管理 (CVE-2018-3665) を追記
2018年06月06日
  • IBM POWER を追記
2018年06月01日
  • タイトル変更:「【解説】 Meltdown、Spectre 問題とは」から「Meltdown、Spectre 問題と派生した CPU 脆弱性問題」
2018年05月28日
  • 不正なシステムレジスタの参照 (CVE-2018-3640) Variant 3a、書込み前メモリの参照 (CVE-2018-3639) Variant 4 を追記
2018年04月09日
  • 4. 製品対応状況に追記、英語ページへのリンクを追記
2018年02月19日
  • 表 2:対策のアプローチに追記
2018年02月13日
  • このページを新規作成および公開しました。

担当:寺田、大西