Spectre単語

17件
スペクター
2.8千文字の記事
  • 0
  • 0pt
掲示板へ

Spectreとは、2018/1/3にGoogle社のProject ZEROによって開されたCPUに関する脆弱性の一つである。同時にMeltdownと呼ばれる類似の脆弱性も発見された。

また、この記事はセキュリティ問題に対する注意喚起を促すものであり、不正な攻撃を正当化するものではない。
もしあなたに知識があったとしても絶対やんなよ?絶対だぞ?フリじゃないからな?

概要

2018/1/3にGoogle社のProject ZEROによって以下の3つの脆弱性が発表された。

これらのうちVariant 1,Variant 2を「Spetre」、Variant 3を「Meltdown」と呼称する。

これらの脆弱性は「投機的実行」というCPUの性フルに活かすための機に起因しており、ソフトウェアではなくマイクロアーキテクチャの段階で脆弱性を内包していたという点で話題となった。

「Spetre」を利用した攻撃が行われると、同じ物理コアで実行している別のアプリケーションに割り当てられているメモリデータを不正に取得される可性がある。このため、個人PCというよりはクラウドサーバなどの1つのコアが複数ユーザアプリケーションを実行する可性の環境で脅威と言える。

対策としては「OS」、「BIOS」、「ソフトウェア」、「ドライバ」などの脆弱性対策のアップデートを行うことが重要であるが、何よりも重要であるのは”不審なアプリケーションを実行しないこと"、”不審なウェブページアクセスしないこと”である。

Variant 1

「Spectre」のうちVariant 1について詳しく解説する。

Variant 1は「Spectre」を利用した攻撃のうち、条件が整った際にメモリデータを推定できる状態で保存するプロセスが対応している。

攻撃の理論

Variant 1を利用した攻撃では、「投機的実行」のうち「分岐予測」と言われる機が利用されている。「分岐予測」はプログラムの投機的実行の実行時に、まだ分岐先が不明である分岐に遭遇した際に、”実行される可性が高そうな”分岐を判定し、投機的実行として事前に実行する機である。(ただしこの分岐予測が外れた場合、実行された命は実行しなかったことにされ、分岐命までローバックされる。すなわち分岐先の計算結果は破棄される。)

分岐予測を利用する方法であるが、まずアクセスしたいメモリの領域が不正でないかチェックする条件文を条件とした分岐を作る。
この条件分を投機的実行時の分岐予測で”おそらく不正でない”と分岐予測させる。その状態で分岐先の命を投機的実行すると、分岐条件の結果が予測した方に分岐しないと判定され、ローバックされるまでの間は本来アクセス不可能な割り当てられていないユーザ間のデータ読み出すことが可である。
そこで、この読み出したデータキャッシュに格納したいが、そのままのデータキャッシュに格納し読むことはことは不可能である。よって読み出したデータを適切に計算しキャッシュに保存しておく。

キャッシュに保存されたデータは通常のデータよりも速く読み出すことが出来る。この特性を用いて、先に適切に計算した結果を読み出すように、データアクセスする。
すると、あるデータアクセス(すなわち適切に計算した結果を利用したアクセス)のみアクセス速度が速くなる。したがってアクセス速度を測定してあげることで、投機的実行時に読み出したデータが何であるかを推測することが可となる。

この脆弱性を内包するプロセッサー

Variant 1は、現代のプロセッサーのほぼ全てが有している「分岐予測」の機を巧妙に利用した攻撃に対する脆弱性のため、現代のほぼ全てのプロセッサーが該当する。該当するCPUは以下の通り

Variant 2

「Spectre」のうちVariant 2について解説する。

Variant 1は「Spectre」を利用した攻撃のうち、分岐予測をコントロールする役割を担っている。

攻撃の理論

*ここではGoogleProject Zero開した文書によって解説されている、Intel Haswell CPUに基いて解説していく。

「Spectre」と呼ばれる脆弱性に対する攻撃のうち、そのプロセスの大半は上記のVariant 1の脆弱性を利用して行われるが、そこには問題がある。問題とは”分岐予測のコントロール”であり、Variant 1を実行するのならば分岐予測において、悪意ある命を実行する分岐に分岐させる必要がある。それを高い精度でコントロールするのがVariant 2となる。

IntelHaswell CPU実装されている間接分岐予測器は以下のような特徴を有している。

この特徴を用いて分岐予測をコントロールする。
まず、1つの物理コア分割した2つの論理コアを異なる仮想メモリに割り当て、一方の論理コアで偏った分岐をさせることで、分岐予測のテーブル恣意的に誘導する。このとき、コントロールしたい分岐予測と予測に使うビットが等しい分岐元から、不正な命ジャンプするようにしておく。
この状態でVariant 1の条件分岐(偽不明)に達すると、実行したい命を投機的実行することが可となる。

この脆弱性を内包するプロセッサー

Varinat 2の脆弱性も、研究によって分岐予測の仕組みが解明されたプロセッサーは内包することになる。該当するCPUは以下の通り

*ただし、AMD製のCPUは原理的に可とされていながらも、現状はこの脆弱性を突いた攻撃は成功していないとされている。

関連動画

関連項目

関連サイト exit

【スポンサーリンク】

  • 0
  • 0pt
記事編集 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

Spectre

1 ななしのよっしん
2018/05/26(土) 18:11:59 ID: iTs5UXKKRf
記事作成乙
イギリス英語について知らなかったから間違えて読んでたわ
お恥ずかしい
👍
高評価
0
👎
低評価
0

スマホで作られた新規記事

こちらの記事に加筆・修正してみませんか?

画面遷移確認のための記事 健康優良児 あらそう