2018年01月05日

Meltdown(メルトダウン)、Spectre(スペクター)ってなんだ?

※先に謝っておきます。間違っていたらすみません。m(_ _)m

投機的実行の実装に欠陥があり、メモリ内容を盗み見られるらしい。

例:
メモリ[0000]へアクセスできない、もしくはアクセスするとエラーを吐くとします。

    始め
    aレジスタ = 0
    bレジスタ = 2
    条件分岐。aレジスタとbレジスタを比較し、同等ならラベルxへジャンプ。
    cレジスタ = メモリ[8000]
ラベルx:
    aレジスタ += 1
    条件分岐。aレジスタとbレジスタを比較し、同等ならラベルyへジャンプ。
    cレジスタ = メモリ[9000]
ラベルy:
    aレジスタ += 1
    条件分岐。aレジスタとbレジスタを比較し、同等ならラベルzへジャンプ。
    cレジスタ = メモリ[0000]
ラベルz:
    終わり


赤字の部分が投機的に実行されることとします。
ラベルzにジャンプするので、結果は破棄され、レジスタやメモリやフラグは変わりません。
破棄されるので、その処理は実行されていないことになり、エラーやセキュリティー上の通知は行われません。
しかしアクセスしたメモリ内容がキャッシュに残ります。

投機的に実行されたものは、実際に処理が反映されるときだけセキュリティー上のチェックが入るのでしょう。

破棄されない投機的実行は、しっかり安全が確保される。
破棄される投機的実行なら、セキュリティー上の壁をすり抜け、なんでも実行できる?とか。

CPU上からは、破棄され実行していないように見える処理なので、こっそりスパイプログラムを実行可能かもしれません。
破棄されるのでメモリの改ざんは行われませんし、エラーも何も出さないのでキャッチできないのでは。

対策が、苦肉の策のような印象を受けます。
JavaScriptの対策は、タイマーの精度を粗くすることで、このセキュリティーホールを使う方法を使いづらくし、盗み見される可能性を低下させる対策に見えます。

解決策は?
Speculative Execution(投機的実行)を行わないCPUに買い換える。

Intel Atomの第一世代や、Raspberry Pi 3などで使われているARM Cortex-A53などの、In-OrderのCPUなら大丈夫という話が出ています。

今使っているPCを使い続けても大丈夫なのでしょうか?
今までのコンピュータが捨てられるぐらいの問題なのではないでしょうか。

莫大な損害賠償が発生するかもしれないので、CPUメーカーは「仕様」ということにして、言い訳の逃げの一手しかないと思われます。

※私自身よく分かっていないので、ちゃんとしたニュースを読むことをおすすめします。m(_ _)m
posted by 齋藤聡 at 21:46 | Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。