Spectre

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

|

Spectre脆弱性のロゴマーク

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

## 概要

[編集]

悪意あるプログラムが任意のメモリ領域（機密情報を含む可能性がある）の読み取りを可能とする、マイクロプロセッサの分岐予測・投機的実行の実装に含まれる脆弱性である[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は、ブラウザ・ベースのJavaScriptのJITエンジンに発見された脆弱性である。ウェブサイトから、端末の他のブラウザで使用されるデータや、ブラウザ・プロセスそのもののデータを読み取ることができる。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のゼロデイ攻撃研究のプロジェクトProject Zeroと暗号学者のポール・コッフェルが中心となった研究チームが別々に発見し、Meltdownのチームとの共同作業となり、2018年1月3日に発表された。 「Spectre」（幽霊）と命名した理由は、投機的実行 (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]。

2018年3月までに、Spectre Variant2に対するCPUマイクロコードのアップデート状況を公表している[23]。現実のシステムへの適用は、BIOS/UEFIのファームウェアアップデート、またはオペレーティングシステム (OS) によるマイクロコードリリースパッチの提供に依存する（これらで未提供の場合、適用されない）。

2018年4月2日付文書で、Intel Core 2世代と、第1世代Core iシリーズの一部について、脆弱性パッチの適用を中止すると公表した。対象CPUのコードネームは以下の通り[24][25][26]。

なお、Core 2よりも以前の世代のCPU（LGA775ではCore Duo/Solo/Pentium M/4/D/EEなど、およびNetBurstマイクロアーキテクチャとそれ以前）については何も発表されていない。

* Penryn
* Core 2の殆どのリリース
* Pentium T4200/4300/4400/4500など
* Celeron 900/925, SU2300, T3100/3300/3500, ULV763など
* Celeron M ULV 722/723/743など
* Yorkfield
* Core 2の殆どのリリース
* Xeon L3360/3320/3330/3350/3360/3370/3380など
*   * Wolfdale
* Core 2の殆どのリリース
* Pentium E5200/5300/5400/5500/5700/5800/6300/6500/6500K/6600/6700/6800など
* Celeron E3200/3300/3400/3500など
* Xeon E3110/3120(E0)/5205/5220, L3110(E0)/5215(E0)/5240, X5260/5270(E0)/5272など
* Bloomfield
* Core i7-920/930/940/950/960/965/975など
* Xeon W3520/3530/3540/3550/3565/3570/3580など
* Clarksfield
* Core i7-720QM/740QM/820QM/840QM/920XM/940XMなど
* Gulftown
* Core i7-970/980/980X/990Xなど
* Xeon W3690など
* Jasper Forest
* Celeron P1053など
* Xeon EC3528/3529/5509/5539/5549, LC3518/3528/5518/5528など
* Harpertown
* Xeon L5408/5410/5420/5430(E0), E5405/5410/5420/5430/5440/5450/5462/5472, X5450/5460/5470/5472(C0)/5482(C0)/5492(E0)など
* SoFIA 3GR
* Atom x3-C3200RK/3230RKなど

### AMD

[編集]

GoogleはeBPF JITを有効にしたカーネルにおいて、AMD PROで攻撃に成功したとしている（eBPF JITを無効にした場合は成功していない）[16]。その他のCPUではテストされていない[16]。

AMD Radeon GPUについては不詳。

### ARM

[編集]

ARMは、Cortex-R7/R8/A8/A9/A15/A17/A57/A72/A73/A75はSpectreの影響を受け、これに加えてCortex-A75はMeltdownの影響を受ける事を認めた[16]。

ミドルレンジAndroid携帯電話端末の多数に使用されるオクタコアのARM Cortex-A53/A55 は、アウト・オブ・オーダー実行をしないため、MeltdownやSpectreのいずれの脆弱性の影響も受けないとされている。Qualcomm Snapdragon 630/626/625/4xxもベースコアがCortex-A53/A55 のため同様である[27]。Raspberry Piも影響を受けないとされている[28]。

### NVIDIA

[編集]

Geforce GPUには脆弱性が確認されていない[6]。

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

[編集]

不詳。

この節の加筆が望まれています。 （2018年1月）

|

## 回避策、アップデート

[編集]

本見出し中の日付は特記ない場合2018年。

→「Meltdown § 回避策、アップデート」も参照

Spectreは、Meltdownと同様にCPUのハードウェアレベルの脆弱性であるため、OS側やブラウザなどのアプリケーション側で回避策が取られつつある。KPTI（英語版）(kernel page-table isolation)パッチはMeltdownに有効、Spectreには無効であるが、多くのベンダーはパッチがMeltdownとSpectreのどちら（又は双方）を回避、緩和するのか明確にしていない（そのようなパッチに関しては、Meltdown側で記述する）。

### Windows

[編集]

→詳細は「Meltdown § 回避策、アップデート」を参照

### macOS

[編集]

macOSは1月8日にリリースされた"macOS High Sierra 10.13.2 Supplemental Update" で、Meltdown対策に加え、Spectre対策が適用されている（同時にSafariもアップデートされる）[29]。

### Linux

[編集]

→詳細は「Meltdown § 回避策、アップデート」を参照

SpectreはKPTI（英語版）によっては回避されないので、2018年1月5日時点でOSレベルのパッチは出ていない。

### Android

[編集]

GoogleはAndroid OSのセキュリティパッチを配信している[30]が、現実の端末へのパッチの互換性は、端末のメーカーあるいは携帯電話事業者の対応に依存する。

### iOS

[編集]

iOS 11.2以降、tvOS 11.2以降でMeltdown対策パッチが当てられている[31]。なお、1月8日にリリースされた"iOS 11.2.2 にてSpectre対策が適用されている[29]。

### Google Chrome

[編集]

1月23日リリース予定のChrome 64においてJavaScriptエンジンにSpectre対策を施す予定である

[10]。

また当面のSpectre対策として、Strict site isolation（厳格なサイト分離）機能を有効にする事をGoogleは提案している[32][33]。ブラウザの互換性については多少の問題がある。

### Firefox

[編集]

1月4日（現地時間）にリリースされたFirefox 57.0.4 で、`perfomance.now()`の精度を意図的に低下させ、`SharedArrayBuffer`を無効化する事により対処したとしている。なお、Firefox 52 ESRでは既に`SharedArrayBuffer`が無効化されているが[34]、1月23日（現地時間）リリースのESR 52.6で57.0.4と同レベルの修正が掛かっている[35]。

### デバイスドライバ

[編集]

* NVIDIAはGeForce GPUのデバイスドライバにSpectre脆弱性パッチを適用、公開した。なお、Geforce GPUそのものには脆弱性は確認されていないとしている[6]。

### シスコ

[編集]

→詳細は「Meltdown § 回避策、アップデート」を参照

シスコはルーター、アプライアンス製品やソフトウェアに脆弱性がある事を認めた[36]。

### POWER

[編集]

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

[編集]

→詳細は「Meltdown § 回避策、アップデート」を参照

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

[編集]

メーカー等の対応に依存する。

### 副作用

[編集]

→詳細は「Meltdown § 回避策、アップデート」を参照

## 脚注

[編集]

1. ^ a b Greenberg, Andy (2018年1月3日). “A Critical Intel Flaw Breaks Basic Security for Most Computers”. Wired. 2018年1月3日時点のオリジナルよりアーカイブ。2018年1月3日閲覧。
2. ^ a b Bright, Peter (2018年1月5日). “Meltdown and Spectre: Here's what Intel, Apple, Microsoft, others are doing about it”. Ars Technica. 2018年1月6日閲覧。
3. ^ a b Staff (2018年). “Meltdown and Spectre”. Graz University of Technology. 2018年1月3日時点のオリジナルよりアーカイブ。2018年1月3日閲覧。
4. ^ a b Metz, Cade; Perlroth, Nicole (2018年1月3日). “Researchers Discover Two Major Flaws in the World's Computers” (英語). The New York Times. ISSN 0362-4331. オリジナルの2018年1月3日時点におけるアーカイブ。. https://web.archive.org/web/20180103224048/https://www.nytimes.com/2018/01/03/business/computer-flaws.html 2018年1月3日閲覧。
5. ^ a b Warren, Tom (2018年1月3日). “Intel's processors have a security bug and the fix could slow down PCs”. The Verge. オリジナルの2018年1月3日時点におけるアーカイブ。. https://web.archive.org/web/20180103141306/https://www.theverge.com/2018/1/3/16844630/intel-processor-security-flaw-bug-kernel-windows-linux 2018年1月3日閲覧。
6. ^ a b c “NVIDIA、CPUの脆弱性対応でドライバのアップデート公開 GPUは影響受けず”. ITmedia エンタープライズ (2018年1月11日). 2025年2月20日閲覧。
7. ^ Mozilla Foundation Security Advisory 2018-01
8. ^ https://www.theregister.co.uk/2018/01/04/intel_amd_arm_cpu_vulnerability/ Meltdown, Spectre: The password theft bugs at the heart of Intel CPUs, the Register, 2018-01-04.
9. ^ Chromium Security, Site Isolation, chromium.org, accessed: 2018-01-08.
10. ^ a b Chromium Security, Actions Required to Mitigate Speculative Side-Channel Attack Techniques, chromium.org, accessed 2018-01-08.
11. ^ “JVNVU#97971879:投機的実行機能を持つ CPU に対するキャッシュサイドチャネル攻撃”. Japan Vulnerability Notes (2018年5月22日). 2018年6月15日閲覧。
12. ^ Hideto Tarui (2018年5月22日). “セキュリティ＞脆弱性＞Windows＞“Spectre”脆弱性の新しい亜種、各ベンダーが一斉に製品への影響と回避策を案内”. 窓の杜. 2025年2月20日閲覧。
13. ^ https://spectreattack.com/#faq-why-spectre
14. ^ https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html
15. ^ https://spectreattack.com/spectre.pdf section 4
16. ^ a b c d e https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html Variant 1: Bounds check bypass/Theoretical explanation
17. ^ https://spectreattack.com/spectre.pdf section 5
18. ^ https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html Variant 2: Branch target injection
19. ^ https://www.amd.com/en/corporate/speculative-execution
20. ^ http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20180101/513630.html
21. ^ https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
22. ^ https://spectreattack.com/#faq-antivirus
23. ^ 2018年3月時点ニュースリリース：https://newsroom.intel.com/wp-content/uploads/sites/11/2018/03/microcode-update-guidance.pdf
24. ^ http://tech.nikkeibp.co.jp/it/atcl/idg/14/481542/040600489/
25. ^ https://gigazine.net/news/20180405-intel-abandon-old-cpu/
26. ^ https://www.itmedia.co.jp/enterprise/articles/1804/06/news062.html
27. ^ https://www.androidauthority.com/meltdown-spectre-kpti-827527/
28. ^ https://www.raspberrypi.org/blog/why-raspberry-pi-isnt-vulnerable-to-spectre-or-meltdown/
29. ^ a b https://news.mynavi.jp/techplus/article/20180109-meltdown_sol/
30. ^ https://source.android.com/security/bulletin/2018-01-01
31. ^ https://www.gizmodo.jp/2018/01/all-about-meltdown-and-spectre.html
32. ^ https://blog.google/topics/google-cloud/what-google-cloud-g-suite-and-chrome-customers-need-know-about-industry-wide-cpu-vulnerability/
33. ^ https://support.google.com/chrome/answer/7623121?hl=ja
34. ^ https://www.mozilla.org/en-US/security/advisories/mfsa2018-01/
35. ^ https://www.mozilla.org/en-US/firefox/52.6.0/releasenotes/
36. ^ https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20180104-cpusidechannel

## 参考文献

[編集]

* Ando, Hisa (2018年6月26日). “投機実行の隙を突くSpectre/Meltdownの仕組みを知る”. マイナビニュース. 2023年1月6日閲覧。

## 関連項目

[編集]

* Meltdown \- 同時に発表された別の脆弱性

## 外部リンク

[編集]

* MeltdownとSpectre脆弱性の公式ウェブサイト
* Spectreの論文
* Google Project Zero の記事
* CVE-2017-5715(最新の各ベンダーの情報へのリンクが随時更新されている)
* CVE-2017-5753(最新の各ベンダーの情報へのリンクが随時更新されている)

* 表
* 話
* 編
* 歴

脆弱性、攻撃手法、エクスプロイト

クロスサイト攻撃|

* クロスサイトリクエストフォージェリ (CSRF)
* クロスサイトスクリプティング (XSS)
* クロスサイト・クッキング
* クロスサイトトレーシング
* クロスゾーンスクリプティング（英語版）

インジェクション (CWE-74)|

* OSコマンドインジェクション (CWE-78)
* クロスサイトスクリプティング (XSS) (CWE-79)
* SQLインジェクション (CWE-89)
* LDAPインジェクション (CWE-90)
* コードインジェクション (CWE-94)
* HTTPヘッダ・インジェクション (CWE-113)
* HTTPレスポンススプリッティング（英語版） (CWE-113)
* 書式文字列攻撃 (CWE-134)
* プロンプトインジェクション

スプーフィング攻撃|

* DNSスプーフィング
* IPスプーフィング
* ARPスプーフィング
* クリックジャッキング (CAPEC-103)
* リファラスプーフィング（英語版）
* Eメールスプーフィング（英語版）
* フィッシング (CAPEC-98)
* ファーミング (CAPEC-89)

セッションハイジャック関連|

* セッションフィクセーション (CWE-384, CAPEC-61)
* セッションポイズニング（英語版）
* TCPシーケンス番号予測攻撃
* クッキーモンスター攻撃（英語版）

DoS攻撃|

* SYN flood
* ICMP echoフラッド
* Smurf攻撃
* UDPフラッド攻撃
* スローロリス (DOS攻撃ツール)
* メールボム
* クリアチャネル評価攻撃（英語版）

サイドチャネル攻撃|

* コールドブート攻撃（英語版）
* Meltdown
* Spectre
* Lazy FP state restore（英語版）
* TLBleed（英語版）

不適切な入力確認 (CWE-20)|

* バッファオーバーフロー (CWE-119、120、121等)
* Return-to-libc攻撃
* ディレクトリトラバーサル (CWE-22)

未分類|

* 中間者攻撃 (CAPEC-94)
* MITB攻撃
* MOTS攻撃（英語版）
* Off-by-oneエラー (CWE-193)
* ファイルインクルード脆弱性（英語版）
* Mass Assignment脆弱性（英語版）
* ダングリングポインタ（英語版）
* DNSリバインディング
* in-sessionフィッシング（英語版）
* クッキースタッフィング（英語版）
* 悪魔の双子攻撃
* IDNホモグラフ攻撃
* スナーフィング（英語版）
* JITスプレーイング（英語版）
* リプレイ攻撃
* 誕生日攻撃
* CRIME
* KRACK
* Intel ME（英語版）の脆弱性

対策|

* Outbound Port 25 Blocking（OP25B）
* Content Security Policy（CSP）
* コンテントスニッフィング（英語版）
* HTTP Strict Transport Security (HSTS)
* ファイアウォール
* 侵入防止システム (IPS)
* 侵入検知システム (IDS)
* Web Application Firewall (WAF)
* Wi-Fi Protected Access
* セキュリティ・バイ・デザイン（SBD）

関連項目|

* マルウェア
* セキュリティホール
* クラッキング
* 脆弱性情報データベース
* ブラウザクラッシャー
* シェルコード
* Metasploit
* Sshnuke
* Nikto Web Scanner（英語版）
* OWASP（英語版）
* w3af（英語版）
* 隠れ通信路（英語版）