こんにちは。おばけが怖いJUZO(じゅうぞう)です。
高校生の頃たまたま田舎に行く用があったので親戚のうちに泊まったことがあります。そこで夜トイレに行きたくなって部屋を出たら昼間と違って誰だかわからないおばさんと鉢合わせて絶叫してしまいました。そして次の日、
おばけじゃないんだから、と言われてしまいました。私が何を思ったかは内緒です。
さて、今日はインテルCPUの脆弱性(脆弱性はインテル以外にも及ぶ)「メルトダウンとスペクター」に関する質問をインテルに直接してみましたのでそれについて書きます。
メルトダウンとスペクター
そもそもメルトダウンとスペクターとは何か。またなぜスペクターについてだけ聞いたのかという疑問があると思います。
メルトダウンとはCPUの投機的実行という仕組みを使って本来読み取れない部分のメモリ領域を読み取れてしまいそこから情報が遅漏するという脆弱性です。こちらはOSに依存しています。
スペクターはもう少し複雑ですが、投機的実行における分岐予測の際に、一つには本来使用せず破棄すべき領域のデータを読み取れてしまうもののようです。もう一つは投機的実行における分岐予測を不正に操作し悪意のある処理をさせるというもの。
このうち、スペクターの脆弱性の一つ目はOSとCPUのマイクロコードに依存し、2つめはCPUのマイクロコードに依存するということです。
つまりメルトダウンに関しては対策はOSで行われるためインテルに問い合わせても意味がないということですね。
投機的実行と分岐予測
投機的実行と分岐予測とは何でしょうか。このような例を考えて下さい。
ある日バリバリのキャリアウーマンである英子が重要な会議の資料をまとめていました。
後輩である新人の美威子は「先輩、何か手伝いましょうか」と言います。しかし英子はあまり美威子の能力を当てにしていないため「いいのよ、ちょっと待っててね」と言いました。
たまにこのような放置という根深い闇を垣間見せてくれる話を聞きますね。
でも美威子は何もしないでも暇するだけなので先輩が後で使うであろう資料の素材を予め用意しておきました。使えないと思っているのは先輩だけで新人でも色々出来るものですよね。
しかしこの美威子の行動、一見気が利いていそうですが空振りしてしまう場合もあります。
美威子「先輩、これ使うかと思って作っておきました」
英子 「何言ってんの。待っててって言ったじゃない。そんな素材は要らないのよ」
・・・
ここで人間観察をすることが趣味のC子がこう言いました。
「投機的ね」
つまり使うかわからないものを暇だからって用意しておくなんて、投機的でギャンブルだと言いたいのでしょうね。
全くふざけた説明ですね。でも意味はわかると思います。C子を登場させたかった親心について理解して下さい。
ともかく、投機的実行というのはやるかわからないタスクを予めしておくということですね。それだけわかればいいと思います。
分岐予測というのは投機的実行において予めされていた処理が、使われていなかった場合に備えて別の処理を先行しておくということのようです。
インテルにスペクターの脆弱性に対応したマイクロコードがあるか問い合わせてみた
「メルトダウンとスペクターへの脆弱性を判定するフリーソフト「InSpectre」」ですでにスペクターへの対策にCPUのマイクロコードが必要であることを書きました。
そこでインテルに直接問い合わせてみました。インテルのチャットにはすぐつながりました。オペレーターの方の名前は一部伏せ字にしてあります。
Xixxxxxg (2018/1/31 11:00:03): インテル・カスタマー・サポートにお問い合わせいただきありがとうございます。
自分 (2018/1/31 11:00:10): よろしくお願いいたします。
自分 (2018/1/31 11:00:49): さっそくですが、スペクターに対応したCPUマイクロコードはありますか?
いきなりずばっと聞いてみました。
Xixxxxxg(2018/1/31 11:00:59): ご利用されている製品の型番を教えて頂けますか。
全く動じずにいきなり的確な返ってきました。このような質問は結構されてるのでしょうか。
自分 (2018/1/31 11:01:08): いくつかあります。
自分 (2018/1/31 11:01:51): Core i7 4790 Core i5 560m Xeon xxxx Xeon xxxx
自分 (2018/1/31 11:02:15): それと第x世代の celeron core i3 xeon があります。
わけあって一部は伏せ字にしました。あまりにも色々持ちすぎですね。文字がXばかりになってしまいましした。
Xixxxxxg(2018/1/31 11:02:49): 確認いたしますので、少々お待ちください。
自分 (2018/1/31 11:02:53): はい
Xixxxxxg (2018/1/31 11:04:32): お待たせいたしました。
自分 (2018/1/31 11:04:36): はい
Xixxxxxg (2018/1/31 11:06:17): 確認しましたところ、現状では最新のマイクロコードがまだ更新されていません。しばらくお待ちいただければと思います。
自分 (2018/1/31 11:06:32): いつ頃対応予定でしょうか。
Xixxxxxg (2018/1/31 11:08:32): 具体的な予定日もまだ決まていませんが、現在積極的に検証させていただいております。
ここでインテルのホームページでLinux用のマイクロコードは公開されていたので尋ねてみました。
自分 (2018/1/31 11:09:30): そうですか。ところで御社ホームページにLinux用のマイクロコードがダルンロード出来るようになっていますが、ウィンドウズ用のものとは違うのでしょうか。
自分 (2018/1/31 11:09:44): ダウンロードでした。
何故か打ち間違えてしまいました。ちなみにオペレターターの方はスルーしました。
Xixxxxxg (2018/1/31 11:11:21): それはLinuxシステム専用になっておりますので、Windowsシステムには適用されておりません。
自分 (2018/1/31 11:11:45): なるほどわかりました。ありがとうございました。
Xixxxxxg (2018/1/31 11:11:59): 他のご質問などはございますか。
私はBIOSをちょっとだけいじれるのです。なのでマイクロコードが手に入ったら自分で加えてBIOSを更新してみようと思っています。(機会があれば報告しますね。)
それでマイクロコードが手に入るか確認してみました。
Xixxxxxg (2018/1/31 11:11:59): 他のご質問などはございますか。
自分 (2018/1/31 11:12:30): ちなみにマイクロコードは準備ができたらすぐに配布されるのでしょうか。
自分 (2018/1/31 11:13:00): マイクロコードだけ出来たらファイルで送ってもらうことは可能ですか?
Xixxxxxg (2018/1/31 11:15:23): 更新の準備ができましたら、弊社のホームページより配布させていただく予定でございます。何か問題があった場合はインテルカスタマサポートへご連絡いただければ、こちらよりサポートを提供させていただきます。
自分 (2018/1/31 11:15:54): ウィンドウズ用のマイクロコードをダウンロードから配布するということですね?
Xixxxxxg (2018/1/31 11:16:11): さようでございます。
自分 (2018/1/31 11:16:22): そうですか。わかりました。ありがとうございました
自分 (2018/1/31 11:16:26): 以上になります。
ここまでよどみなく応えられるのは凄いですね。さすがインテルのオペレーターという感じです。ちなみにマイクロソフトのオペレーターさんはかなり不器用な人がいますがなんだか丁寧で愛嬌があります。社風でしょうか。
まとめ
メルトダウンとスペクターについてはかなり話題になっていますが、対応が遅れているようです。とは言えかなりの数にのぼるインテルのCPUに対応させるには時間がかかるのかもしれません。
一般的にはマザーボードのBIOS更新を待つことになります。インテルが配布しなければマザーボードメーカーも対応できないのでインテルの情報に注目していればいいでしょう。
マザーボードの最新BIOSが配布されたら不具合がないか情報を調べて自己責任で早めにアップデートすると良いでしょう。BIOSは失敗すると致命的なので多少待ってからするのもいいと思います。
続報が待たれます。
それではかしこ。