Spectre

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
本脆弱性のロゴマーク

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

概要[編集]

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

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

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

  • (投機的実行における)条件付き分岐における境界チェックの回避 "bounds check bypass" (CVE-2017-5753)
  • (投機的実行における)分岐先のインジェクション "branch target injection" (CVE-2017-5715)

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

経緯[編集]

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

詳細[編集]

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

  • (投機的実行における)条件付き分岐における境界チェックの回避 (CVE-2017-5753)
  • (投機的実行における)分岐先のインジェクション(CVE-2017-5715)

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

境界チェックの回避[編集]

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

また、eBPF JITを有効にしたカーネルにおいて、AMDのプロセッサでも攻撃に成功したとされている。[14]

分岐先のインジェクション[編集]

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

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

評価[編集]

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

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

対策[編集]

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

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

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

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

影響[編集]

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

Intel[編集]

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

AMD[編集]

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

AMD Radeon GPUについては不詳。

ARM[編集]

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

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

NVIDIA[編集]

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

その他のCPUおよびベンダー[編集]

不詳。

回避策、アップデート[編集]

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

Windows[編集]

MacOS[編集]

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

Linux[編集]

Red Hat[編集]

CentOS[編集]

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

Android[編集]

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

iOS[編集]

iOS11.2以降、tvOS11.2以降でMeltdown対策パッチが当てられている[26]。なお、1月8日にリリースされた"iOS 11.2.2 にてSpectre対策が適用されている[24]

Google Chrome[編集]

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

[27]

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

Firefox[編集]

1月4日(現地時間)にリリースされたFirefox 57.0.4 で、perfomance.now()の精度を意図的に低下させ、SharedArrayBufferを無効化する事により対処したとしている。なお、Firefox 52 ESRでは既にSharedArrayBufferが無効化されている[30]

デバイスドライバ[編集]

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

Cisco[編集]

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

その他の対象CPU組み込み製品[編集]

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

副作用[編集]

脚注[編集]

  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” (en-US). 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 http://www.itmedia.co.jp/enterprise/articles/1801/11/news054.html
  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. ^ Chromium Security, Actions Required to Mitigate Speculative Side-Channel Attack Techniques, chromium.org, accessed 2018-01-08.
  11. ^ https://spectreattack.com/#faq-why-spectre
  12. ^ https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html
  13. ^ https://spectreattack.com/spectre.pdf section 4
  14. ^ a b c d https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html Variant 1: Bounds check bypass/Theoretical explanation
  15. ^ https://spectreattack.com/spectre.pdf section 5
  16. ^ https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html Variant 2: Branch target injection
  17. ^ https://www.amd.com/en/corporate/speculative-execution
  18. ^ http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20180101/513630.html
  19. ^ https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
  20. ^ https://spectreattack.com/#faq-antivirus
  21. ^ 引用エラー: 無効な <ref> タグです。 「:13」という名前の引用句に対するテキストが指定されていません
  22. ^ https://www.androidauthority.com/meltdown-spectre-kpti-827527/
  23. ^ https://www.raspberrypi.org/blog/why-raspberry-pi-isnt-vulnerable-to-spectre-or-meltdown/
  24. ^ a b https://news.mynavi.jp/article/20180109-meltdown_sol/
  25. ^ https://source.android.com/security/bulletin/2018-01-01
  26. ^ https://www.gizmodo.jp/2018/01/all-about-meltdown-and-spectre.html
  27. ^ Chromium Security, Actions Required to Mitigate Speculative Side-Channel Attack Techniques, chromium.org, accessed 2018-01-08.
  28. ^ https://blog.google/topics/google-cloud/what-google-cloud-g-suite-and-chrome-customers-need-know-about-industry-wide-cpu-vulnerability/
  29. ^ https://support.google.com/chrome/answer/7623121?hl=ja
  30. ^ https://www.mozilla.org/en-US/security/advisories/mfsa2018-01/
  31. ^ https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20180104-cpusidechannel

関連項目[編集]

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

外部リンク[編集]