Spectre
[Wikipedia|▼Menu]

この項目では、マイクロプロセッサの脆弱性について説明しています。その他の用法については「スペクター」をご覧ください。
Spectre脆弱性のロゴマーク

Spectre(スペクター)は、今日の幅広いマイクロプロセッサに存在するハードウェアレベルの脆弱性であり、正当な権限のないプロセスが保護されたメモリの領域(例:サンドボックスの外側)にアクセスすることが可能になる。[1][2] [3][4][5]
目次

1 概要

1.1 新しい亜種


2 経緯

3 詳細

3.1 境界チェックの回避

3.2 分岐先のインジェクション

3.3 評価

3.4 対策


4 影響

4.1 インテル

4.2 AMD

4.3 ARM

4.4 NVIDIA

4.5 その他のCPUおよびベンダー


5 回避策、アップデート

5.1 Windows

5.2 macOS

5.3 Linux

5.4 Android

5.5 iOS

5.6 Google Chrome

5.7 Firefox

5.8 デバイスドライバ

5.9 シスコ

5.10 POWER

5.11 主要ベンダー・メーカー

5.12 その他の対象CPU組み込み製品

5.13 副作用


6 脚注

7 参考文献

8 関連項目

9 外部リンク

概要

悪意あるプログラムが任意のメモリ領域(機密情報を含むかもしれない)の読み取りを可能とする、マイクロプロセッサ分岐予測投機的実行の実装に含まれる脆弱性である。[1][2] [3][4][5]

特定のCPUアーキテクチャに依存した脆弱性ではなく、x86インテルAMDおよび互換CPU)、ARMでも発生することが示唆されている。GPUでは不詳、あるいは確認されていない[6]

Spectreに関連するCVE番号は次の2つである

Variant 1

(投機的実行における)条件付き分岐における境界チェックの回避 "bounds check bypass" (CVE-2017-5753)


Variant 2

(投機的実行における)分岐先のインジェクション "branch target injection" (CVE-2017-5715)

この内、CVE-2017-5753は、ブラウザ・ベースのJavaScriptJITエンジンに発見された脆弱性である。ウェブサイトから、端末の他のブラウザで使用されるデータや、ブラウザ・プロセスその物のデータを読み取る事ができる。Firefox 57.0.4とGoogle Chrome 64で、ウェブサイト毎にプロセスを分割する事で対処されるとしている[7][8][9][10]
新しい亜種

2018年5月21日、Spectreの新しい亜種(Variant 3a/4)が発表された[11][12]

Variant 3a

"Rogue System Register Read" (CVE-2018-3640)


Variant 4

"Speculative Store Bypass" (CVE-2018-3639)


経緯

Googleのzero-day攻撃研究のプロジェクトProject Zeroと暗号学者のポール・コッフェルが中心となった研究チームが別々に発見し、Meltdownのチームとの共同作業となり、2018年1月3日に発表された。命名の理由は、投機的実行 (speculative execution) に由来する。[13]
詳細

Spectreは、以下の2つの脆弱性を内包している [14]

(投機的実行における)条件付き分岐における境界チェックの回避 (CVE-2017-5753)

(投機的実行における)分岐先のインジェクション (CVE-2017-5715)

いずれの脆弱性も、権限のないデータの読み取りが可能であることを示唆している。また、共通する事象として、通常、これらの攻撃の痕跡は残らないため、攻撃を受けて流出したデータの特定が困難であることを意味する。
境界チェックの回避

メモリアクセスにおいて、通常はマイクロプロセッサの境界チェックにより、読み取り可能な領域かどうかをチェックされているが、特定の条件下で投機的実行を行った場合に境界チェックが適切に行われず、盲目的にメモリ命令が発行されるケースがほとんどのプロセッサで存在しており、結果として読み取る必要のない領域がキャッシュに読み込まれることがあり、その変化を追跡することで秘密情報のアドレスを特定し、秘密情報を入手が可能としている[15]。原理的には他プロセスでの攻撃も成功すると推測するが、Exploitは自プロセスのデータ読み取りが提示されている。

また、eBPF JITを有効にしたカーネルにおいて、AMDのプロセッサでも攻撃に成功したとされている[16]
分岐先のインジェクション

処理の概要としては、return-oriented programming (ROP) とよく似ており、悪意のあるプロセスで分岐予測を学習させ、ターゲットとなるプロセス内の間接分岐命令がガジェットを投機的実行することを試みる。[17]攻撃の成否をキャッシュヒットミスの測定することで確認している(サイドチャネル攻撃)。

攻撃成立の前提として投機的実行により副作用が発生することが必要で、検証では同一物理コア内のSMTによる論理コア間でデータを読み出すことが可能であったと示されている[18]
評価

自プロセス内の機密データを読み取るExploitによる攻撃が成功している(ブラウザベースのJavaScriptによる攻撃等)。

他プロセスのデータを読み取る場合は、確率的な挙動を示し、攻撃の容易度はプロセッサのアーキテクチャに依存するとされている。AMDは、内部アーキテクチャの違いから、CVE-2017-5715はほぼゼロリスク、Meltdownはゼロリスクである、と述べている[19]
対策

攻撃対象のプロセスのメモリ構造を知っていれば攻撃の成功率を劇的に向上することができるため、逆説的に、メモリ構造を推測させなければ、攻撃を劇的に緩和させることが可能である。

ユーザランドの対策としては、他のメモリに対する攻撃同様、アドレス空間配置のランダム化 (ASLR) とPosition Independent Code (PIC) を組み合わせるなどして、メモリマップをランダム化する手法が知られており、この脆弱性でも有効とされている。また、LLVMパッチを充てることで、同様の効果が得られる[20]

また、成功・失敗の判別にはサイドチャネル攻撃的なアイデアで判別されることがあるが、これらは例えばスクリプトの応答時間を均一化したり、処理時間を高精度で測定させない等の方法により緩和することも可能である。(ブラウザのJavaScriptの実行にて同様のアプローチがとられている[21])

ウィルス対策ソフトウェアでの防御は、有効性が疑問視されている[22]。影響を完全に排除するには、プロセッサアーキテクチャの大幅な刷新が必要であると述べられている。
影響

原理的には、分岐予測投機的実行を実装するプロセッサに潜在的影響があるとされている。
インテル

GoogleはXeon E5-1650 v3をテストに使用し、攻撃に成功している。その他のCPUではテストされていない[16]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:40 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:FIRTREE