Hyper-Threading のセキュリティ脆弱性

ちょと遅れた話題だが、昨夜 IntelHyper-Threading にセキュリティ脆弱性が見つかったという話を受けた。

おいらの貧弱な英語力でレポートをななめ読みしながら、各所での議論を追ってみて、とりあえず分かったことはつまり、2つのプロセスでキャッシュを共有していることで、キャッシュのヒットパターンと実行ユニットのロードバランスの変動を調べることによって、あるプロセスから別のプロセスの計算内容を類推して盗む(今回はOpenSSLの秘密鍵)ことができた。ということらしい*2

今回は IntelHyper-Threading でそれを報告しているが、問題の性質上HTに限らずSMTに本質的に内在する問題じゃないかと思う。キャッシュを共有するという点では、マルチコアにも同じ事が言えるかもしれない。

この問題の可能性についてはすでに2003年にSunの中の人から指摘がされていたのだが、今回レポートでは実際にそれが可能であることを示しているだけに、影響は大きいかもしれない。

とりあえず考えられる対策としては、

  1. マイクロプログラムやBIOSの書き換え
  2. OSのタスクスケジューリングの書き換え
  3. Hyper-Threading の使用停止

いまのところ、SCO、FreeBSDNetBSDOpenBSDからしかこれに対するコメントは上がっていないみたい。他のベンダー、特にIntelからの声明を待ちたい。

パソコンレベルの環境では問題なしと言っているが、それはパソコンを狙うくらいならもっと手軽で確実な方法があるってことであって、この方法が使えないというわけではない。

で、おいらは

家鯖がPentium4だが、OSのカーネルがHT非対応なのでとりあえず問題なし。プロセッサコアのバーションをまだ確認していないが、たぶんHTを積んでいないんじゃなかったかと思う。

それよりも、これを発見した Colin Percival 氏がおない歳であることに orz

*1:FAQの5と7に笑ってしまった

*2:レジスタやキャッシュの中身が別プロセスから丸見え。と誤解している人がいるみたいだが、そんなことになればリコールどころじゃなくなる