高性能プロセッサのセキュリティ脆弱性 Meltdown、Spectreメモ

 年始早々に高性能プロセッサが内在するセキュリティ脆弱性について報道があり、セキュリティパッチも配布された。

Today's CPU vulnerability: what you need to know (Google Security Blog)
Reading privileged memory with a side-channel (Project Zero)
プロセッサの脆弱性「Meltdown」と「Spectre」についてまとめてみた(Developers.IO)

 日本語での詳しい解説が日本語で読めます。素晴らしいですね。
Googleが発見した「CPUの脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめ
(4Gamer.net)
Meltdown, Spectre で学ぶ高性能コンピュータアーキテクチャ(FPGA開発日記)

 いずれもモダンな高性能プロセッサのメカニズムに起因する脆弱性で、よく気がつくなあという感想。設計時の検証では気付けなくても再現させるのは容易でしょう。

 以下、思いつくままに次のプロセッサ設計でどのような修正が入っていくかを考えてみる。

Variant1: Bounds check bypass (Spectre)
 保護された領域からのロードが投機実行されてしまい、それが破棄されてもキャッシュ上にロードされたデータが残ってしまう。
(1)安全策;投機実行中のロードは実行せず演算命令のみにする。性能劣化。
(2)投機実行時のロードで参照するアドレスが保護例外を起こしうる場合はロードを保留。
(3)キャッシュのタグをInvalidateのままロードし、投機実行が成立したらタグを有効化する。
(4)投機実行でのロードは近くのキャッシュをバイパスする。やや性能劣化。
(5) (4)の後、投機実行が成立したらキャッシュを補充する。

(3),(4),(5)いずれもキャッシュコヒーレンシ制御が複雑になる。

Variant2: Branch target injection (Spectre)
 これは複数の論理CPUでひとつの物理CPUに入っている分岐予測機構を共有しているのが原因なので、分けてしまえばよい。ただしメカニズムを2つにしてRTB/BHTの容量を半分づつにしてしまうのは性能が落ちるので、それぞれのバッファに格納する物理アドレスに論理CPUの番号(高々1〜2bit)を付加し、実行している論理CPUの番号と比較して利用すればよさそう。性能劣化するケースは別々の論理CPUがまったく同じ番地にあるプログラムを実行している時のみ物理アドレスが重複しバッファの利用率が悪くなる。

Variant3: Rogue data cache load (Meltdown)
 ハード的にはVarialt1が対処できていればOK

 キャッシュまわりで気を付けないといけないことは、1バイトのロードでもそのアドレスの位置を含む(64バイトとか128バイトといった)キャッシュライン全体を持ってくるので該当箇所周辺のコードやデータがごっそり持ってこられてしまう。また、キャッシュに補充されるということは掃き出される領域もあるということで、n-Wayセットアソシエイティブのキャッシュ構造なら対応するエントリ(主に下位アドレスが共通)が追い出される。脆弱性がロード時間の差で発生するというのなら、これも利用される可能性がある。私にはちょっと想像できないけど。

 キャッシュメモリ周りのセキュリティホールを予防するためには、キャッシュエントリをハッシュなどでかき混ぜてしまい容易には推測できないようにする、キャッシュタグに保護情報を追加してどのようなメモリ空間から持ってきたのか/書き込むのかがわかるようにしておく、というのが必要だろうか。

 あと思うのは、投機実行や分岐予測の有効/無効を制御するフラグがなかったのかというのが疑問で、プロセッサの性能測定をする場合はこれらのON/OFFの設定でプログラムを実行してどの程度効果があったかを確認するのだけれどもIntelは非公開なのかな?


007 スペクター [Blu-ray]007 スペクター [Blu-ray]

20世紀フォックス・ホーム・エンターテイメント・ジャパン 2016-12-21
売り上げランキング : 206

Amazonで詳しく見る
by G-Tools


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

ナイス

この記事へのコメント

この記事へのトラックバック

  • Meltdown/Spectreの対策 SafeSpec

    Excerpt:  Ando's Processor Information 最近の話題2018年6月16日より。SpectreやMeltdownを防ぐSafeSpecという論文が発表された。 Weblog: 竹下世界塔の計算機よもやま話 racked: 2018-06-18 03:58