全てのCPUに共通の脆弱性が発見

1月 5, 2018

Intel製CPUに内在する脆弱性問題の根は深く「すべてのプロセッサが安全性と高速性を両立できない問題を抱える」との指摘

2018年初頭から激震が走りましたね…Intel製CPUだと、2007年以降に生産されたCPUが対象とのことで、CoreマイクロアーキテクチャのCPUが全て、AMD,ARM製CPUも影響を受けるということで…
記事をよくよく読んでみると、「投機的実行」と書いてありますが、いわゆる分岐予測を行う先読み実行の過程において、メモリが特権モードとユーザモードに分離されていないため、CPUキャッシュに残っているデータを読み出す事で、権限関係なくデータが読み出せてしまうというものらしい。

これ、いわゆるCPU高速化の功罪で、CPUは1クロックごとに

  1. 命令読み出し
  2. デコード
  3. データ読み出し
  4. 実行
  5. データ保存

という5つのサイクルで基本動きます。4番目の実行だけが実際にCPUが演算(仕事)しているところで、後はメモリからCPUへ、CPUからメモリへとデータを運んでいるだけです。さて、これをどうやって高速化させようかなぁと考えると…

実行の数を増やす

のが手っ取り早い。すると、このサイクルを一段づつずらして重ねていくと、実行が毎クロック実行されます。これをスーパーパイプラインと言います。で、これはメモリから命令を先読みしてじゃんじゃん実行していくので、IF文とかでJUMP命令が実行されると、先読みしておいたコードを全てリセットしてしまうので、もう一度パイプラインの詰め直しで実行速度が遅くなります。これを解決する手段が「実行される可能性が高い分岐の方を実行しておく」という分岐予測と、「同じコードは何度も実行されるので近い所に置いておく」というCPUキャッシュという概念が登場します。

で…これが今回悪用されたと…

で、この問題。

悪意あるプログラムと攻撃対象のプログラムが同じCPUにいると問題になる

ということですね。これを防ぐためには…

悪意あるプログラムを同じCPUに入れなければいい

ということで、オンプレミスで実行されるプログラムならば大丈夫、ということになる。すると、最も危険なのはみんなが共通で使用すること前提のクラウドサービスってことになるんですね。今更ながら、自前サーバでの構築が功を奏したってことに、なるんでしょうかねぇ…

で、問題が2つあって、「メルトダウン」と「スペクター」の2種類。先の問題は「メルトダウン」の方で、「スペクター」については解説がありませんでした…

さて、単純な解決方法だと

パイプラインとキャッシュを、カーネルモード用とユーザモード用で分離して配備すればいい

ということになるのかなぁ。すると、カーネルモードとユーザモードの並列実行が可能になって、より高速化が可能になる…ということには、ならないのかな…いずれにしても、OSパッチ、新CPUが提供されることになるでしょうから、動向を見守る他ないでしょうな…
今までの常識が非常識になる瞬間とでも言うのでしょうか。久々にお勉強いたしましたよ。継続して注視したい問題です。

Leave Your Comment

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード