Intelプロセッサの重大な脆弱性(SA-00086)に対処してみた話 | 内向型人間の知恵ブログ

Intelプロセッサの重大な脆弱性(SA-00086)に対処してみた話

サムネイル:CPUの基盤

北米時間の2017年11月20日に、Intelは特定のCPUに脆弱性があることを発表し、脆弱性の有無を判定する検査ツールを公開しました。
私が知ったのは24日のことで、そこから脆弱性へ対処した流れを紹介します。

この脆弱性は遠隔操作に対する重要なセキュリティホールです。
使用するPCが該当するかどうかを確認し、該当した場合はすみやかにメーカーが配布している修正パッチを適用することをおすすめします。

何があったか

詳細は4gamerの記事を読んだ方が早いですが、
普段はユーザが意識することのない機能がCPUには搭載されています。
今回は、Intel Management Engine(インテル・マネジメントエンジン:Intel ME)に重要な脆弱性が認められたという話です。

Intel MEは遠隔操作で高度な作業を行えるもののようで、それが悪用されれば当然危険ということ……らしい。
【参考】
Intel,第6~第8世代Coreプロセッサ搭載システムに関する重要な脆弱性情報を公開。脆弱性の有無を調べる検出ツールもリリース – 4Gamer.net 

(これも最近の「Intel CPUにはUnix系OSのMinixが動いている」という話と関係があるんだろうか。
CPUの中で別のOSが動いているなんて、想像できなかったけど。)
【参考】
IntelのCPUにはひそかにMINIX OSが仕込まれていて、Googleはそれを排除しようとしているらしい | ジサクテック 

さて、特定のCPUというのは、第6〜第8世代が該当しています。
私のPCには第6世代(Skylake)のCPUを載せているため、検査ツールを使わないわけにはいかなくなりました。 

環境

CPU:Intel Core i3-6100 (Skylake)
MB:Asus H170-PRO
OS:Ubuntu16.04とWindows10 64bitのデュアルブート 

おおまかな流れ

1. Intelの検査ツールで脆弱性の有無を確認
2. Asusの提供する修正パッチ(ME Update Tool)を使おうとする
3. 修正パッチを適用するためにBiosのバージョンを最新にする
4. 修正パッチを適用するためにチップセットドライバのバージョンを最新にする
5. 修正パッチを実行
6. 検査ツールで脆弱性の有無を確認

最初に全体像を示すのは大事(戒め。
こんな感じで体験を整理して書いていきます。 

Intelの検査ツールを使ってみる

IntelがWindowsとLinux向けにツールを公開しています。

Ubuntuがメインの私はLinux向けのツールの提供に一瞬喜びましたが、これはあくまで検査ツールであり、修正してくれるものではありません。
しかも、Linux向けのツールはCUI(コマンド・ターミナル)のもので、Python2系で書かれています。
(Python2か……うーん)

Windowsは好きではないけど、こういう問題への対処はツールの関係上「楽」なので、Wind10側で対処します。
一応、Linux向けの検査ツールを使っている人もいるようで、リンクを貼っておきます。
【参考】
2015年以降のインテルCPUの脆弱性チェックプログラム – 発声練習 

検査ツールのダウンロード

IntelのサポートページからWindows向けのツールをダウンロードします。
検出ツールのリンクからダウンロードページに移動し、該当するOS向けのツールをダウンロードしましょう。
Windows向けはzip形式です。

【公式】
インテル®マネジメント・エンジンの重要なファームウェアアップデート (インテル sa-00086) 

検査ツールの実行(脆弱性アリ)

zip圧縮を解凍して、DiscoveryTool.GUI」フォルダの中にある「Intel-SA-00086-GUI.exe」を実行します。
実行してみると、見事に「このシステムには脆弱性があります。」と赤字で書かれていました(Fig1)。

Fig1. Intelの検査ツールの結果、脆弱性が認められた
Fig1. Intelの検査ツールの結果、脆弱性が認められた

(ちなみに、この検査画面にはスクロールした先に「無断での引用、転載を禁じます」と書いてあるんですが……引用ってのは引用のルールを満たしていれば許可は必要ないので、そもそも「無断引用は存在しない」んですが、法律的な面で海外と違うのかな?)

重大な脆弱性とあれば、対処せざるを得ません。
メーカーの提供する修正パッチを使うべく、Biosのアップデートに作業を移します。

Asusの提供する修正パッチを適用する(失敗その1)

挿絵:購入した自作PCのパーツ
私が使っているマザーボードはAsusの H170-PROです。
安くて、それなりの機能をもっていたので販売ランキングにも上位に留まっていた印象。
最近のマザーボードは見た目もかっこ良くなりました。
(その姿を見るためにも、やっぱケースは側面が透明なやつですよ)

この脆弱性に対処するためには、マザーボードのメーカーのページに行くことになります。
作業をした時点では、すでにAsusは修正パッチを提供していました。

ドライバのページにあるため、各自、使用しているマザーボードのページからアクセスしてください。

 

こういったタイムリーなトラブルは、ブログ記事よりもTwitterのようなリアルタイムのつぶやきの方が情報があったりします。
ブログ記事は、話が一段落するようにまとめる必要がありますが、つぶやきにはその必要がありませんから。
(ただ、これが後の落とし穴になるとは……)

とりあえず、BIOSの項にある「ME Update Tool」をダウンロードしました。
zipを解凍して起動させます……が、ダメ。
Biosの更新が求められました(Fig2)。

Fig2. ME Update Toolを起動すると、BIOSの更新を求められた
Fig2. ME Update Toolを起動すると、BIOSの更新を求められた

Biosの更新って、必要だとわかっていても、やっぱり怖いんですよ。
今でこそOS上から更新できたりしますけど、Biosって、キーボードしか効かなくて、いつの間にか何かをいじってて、そのまま起動しなくなるような、そんなイメージが強いです。
(UEFIの前の、あの青い画面のことです)

放っておいても悪化するだけで、更新にミスればオダブツ。
まさにAll or Nothing。
こんな対応を該当する多くのユーザに求めるなんて。

まぁ、やるしかないですよね。 

Biosのバージョンを最新にするための準備

Asusの場合はユーティリティの中に「Ai Suite(エーアイ・スーツ)」なるものがあって、その中にある「EZ Flash(イージー・フラッシュ)」なる機能を使えばOS上から更新できるらしい。
といっても、私にはその準備がありませんでした。

最初にインストールしたのはUbuntuだったので、当然Linux向けのGUIユーティリティなんてありません。
確かにマザーボードにはドライバが盛り込まれた付属のCDがありますが、今はPCからは光学ドライブを外しています。
滅多に使わないし、不格好だし、エアフローの関係上、邪魔になるからです。

配布しているドライバ群の中にもちろんユーティリティもありましたが、インストールしようとすると、何かウィンドウが出るだけです。
これもBiosのバージョンが最新でないから、と結論づけました。

というわけで、USBを用いてBiosを最新にすることになります。

現時点で最新のバーションは3402。
配布されている圧縮ファイルの中に拡張子が「cap」のファイルをUSBのルートに保存して、Biosに読み込ませます。

ちなみに、私のPCは0906。
公開された日付を確認すると、2016年春の購入直前のバーションのままでした。
これはひどい。

Biosはスクリーンショットが取れず、カメラの撮影も反射光が邪魔なので、数枚しか撮ってません。
サブのPCやタブレット等もないので、「ツール > EZ Flash3」だということを憶えて、更新に望みました。
【参考】
BIOSアップデート手順|テックウインド株式会社 

百聞は一見に如かずということで、一度動画で見るとやり方がわかると思います。

 

Biosのバージョンを最新にする

Biosの更新をEZ Flash3という機能で行います。
この機能、実はインターネットを経由してBiosの更新もできるらしいのですが、それが最新でないとか、あるとか。
ちょっとわからなかったので、用意していたcapファイルを読みこませる方法にしました。

選択肢のあと、プログレスバーが進み、何事もなく更新は完了(Fig3)(Fig4)。

Fig3. BIOSをcapファイルでアップデートする選択肢
Fig3. BIOSをcapファイルでアップデートする選択肢

 

Fig4. BIOSをcapファイルでアップデートしている様子
Fig4. BIOSをcapファイルでアップデートしている様子

最新のバーションになると、奥行きのあるエフェクトが追加されていました。
(グラフィカルなUEFIのイメージが、さらに動きが追加されたことによって驚きに変わりました)
もちろん、バージョンの表示は3402。最新です(Fig5)。

Fig5. BIOSのアップデート後のバージョン番号
Fig5. BIOSのアップデート後のバージョン番号

Biosはアップデートすると設定が戻るという話もあるので、そこだけ確認します。
私の場合、変更点は二つありました。

SSDでTrimを使うために、SATAのHDDモードをAHCIに。
VirtualBoxで64bitOSを動かすために仮想化支援技術の「Intel Virtualization Technology(インテル・バーチャリゼーション・テクノロジー)」を有効化していました。

確認したところ、AHCIはそのまま。
Virtualization TechnologyはDisableになっていたので、有効化しました。

あとは、UbuntuとWindowsの両方が起動できるかテスト。
これらは問題ありませんでしたが、更新した直後の最初の起動が、ディスプレイに信号が行かなかったのでリセット。
起動しないんじゃないかと心配しました。 

Asusの提供する修正パッチを適用する(失敗その2)

これでME Update Toolが使えるかと思いきや、これまでとは違う「Please check MEI Driver is installed.」というエラーが(Fig6)。

Fig6. ME Update Toolが起動できずに表示されたエラー
Fig6. ME Update Toolが起動できずに表示されたエラー

「MEIドライバーがインストールされているか確認して」と言っているんだろうけど、何をすればいいのかわからない。
どうすれば、そのMEIドライバとやらがインストールされているのかわかるんだ?

検索しても、全然解決につながるものを見つけられませんでした。
タイムリーな問題ということで、違う情報が出ないように1週間という期間で情報を探していましたが、これをやめてみたところ、海外のフォーラムで投稿を見つけることができました。
【参考】
A new update for the ME Drivers. and a bios ME DRIVER???? – Page 3 

チップセットのドライバを更新する

このとき、私はME UpdateToolが使えず、脆弱性に対処できないことに焦っていたので、翻訳して読み解く気力もありませんでした。
投稿に添付された画像を、自分のものと見比べるくらいのことしかできませんでした。

そこで注目したのが、マネジメントエンジンのバージョンです。
バージョンの数字そのものは、使っているCPUに依るせいか異なっていました。
脆弱性に対処できた場合はバージョンが上がっているため、それがヒントになると考えたのです。

検査ツールに表示されたバージョンは、「11.0.0.1168」。
これと似た数字は、Asusのドライバのページですぐに見つけることができました。
それが、チップセットのドライバでした。

Biosも含めて、すべてのドライバが更新されずにそのままだったため、更新を適用することには抵抗はありません。

同時に、このときME UpdateToolにも目を通しました。
もっと早く、注意深ければ、ここまで遠回りする必要もなかったでしょう。

そこには、次のように書かれていました(Fig7)。

“We suggest you update ME Driver to the latest Version 11.7.0.1040 simultaneously.

訳すと、「MEドライバを最新のバージョン(11.7.0.1040)にアップデートすることを提案します」と言っています。
だとしたら、チップセットのドライバを更新して上げれば、ME UpdateToolが動く可能性は高い。

Fig7. Asusが配布する修正パッチの説明文
Fig7. Asusが配布する修正パッチの説明文

 

Asusの提供する修正パッチを適用する(成功)

ドライバをダウンロードして、解凍したり実行したりで、チップセットのドライバはすぐに更新できました。

そのままME Update Toolを実行すると、Twitterやフォーラムで見た画像と同じウィンドウが表示されました(Fig8)。
そのままプログレスバーの進捗を見守って……100%。
更新が終了し、再起動するよう通知されます(Fig9)。

Fig8. 起動に成功したME Update Toolの画面
Fig8. 起動に成功したME Update Toolの画面

 

Fig9. ME Update Toolの適用が完了し、再起動を促される
Fig9. ME Update Toolの適用が完了し、再起動を促される

 

検査ツールの実行(脆弱性ナシ)

再起動後にあらためて検査ツールを実行します。
結果は、「脆弱性はありません」とのこと(Fig10)。

Fig10. 検査ツールで脆弱性がなくなったことを示す画像
Fig10. 検査ツールで脆弱性がなくなったことを示す画像

よく見ると、マネジメントエンジンのバージョンも上がってる。

これで、晴れて脆弱性への対処が完了しました。
うれしみ。

まとめ

1. Intelの重大な脆弱性(SA-00086)に該当するプロセッサを使用しているユーザは、検査ツールで確認し、対処する。
2. 脆弱性が存在していた場合、ノートPCの製造元やマザーボードメーカーの配布するアップデートを適用する。
3. (Asusユーザの場合)ユーティリティをインストールしていない場合、USBなどを用いてBiosを更新する。
4. (Asusユーザの場合)チップセットのドライバを更新する。
5. 検査ツールで脆弱性がなくなればOK

あとがき

SA-00086に、どこまで対処できるだろうか

この脆弱性の話題は、IT関係のサイトやブログでしか扱っていない印象がある。
Core iシリーズの第2世代とか第4世代の影響のないユーザもいるだろうけど、一般ユーザが買い換えることを考えると、該当するプロセッサを所持している人は少なくないハズだ。

例えば、富士通のようなノートPCメーカーでの対応を見てみると、OS上からアップデートしている。
私がやったように、Biosに入る手間はいらないようだ。

この脆弱性を認知して、対応しているユーザはどれくらいになるだろうか。
具体的な被害は出ていないようだが、それがこの先も続くことを望みたい。

もしLinuxしかインストールしていなかったら?

今回は、私がWin10をデュアルブートしていたこともあって、配布されたツールを使うことは簡単でした。

でも、これがもし、Linuxしかインストールしていなかったら?
Linuxの開発者のように、Linuxだけだからという理由で詰むとは考えにくい。
わざわざWindowsをインストールするのは、なおのこと考えられない。
だとしたら、何かあるハズ。

Biosの更新については、大丈夫でしょう。
capファイルのダウンロードも、USBに焼くのもLinuxで出来ます。
あとはBiosに入って適用するだけ。

思い返してみれば、マザーボードに付属したドライバをインストールしなくても、Linuxで解像度が適切に反映されたり、インターネットにつながるのは、Linuxがハードウェアのドライバを含んでいるからです。
ということは、いずれはSA-00086に対応したアップデートが配布されるということだろうか。

うーん。でもこのPCは出荷当時からドライバの更新はされてないんだよなぁ。
ちょっと疑問に思いました。

ていねいな解説、ほしいなぁ〜

修正パッチの説明をよく読まなかった自分も悪いんだけど、検索で情報を集めているうちに「ME Update Tool使わなきゃ」「Biosのアップデートしなきゃ」と引っ張られてしまった。
解決できたからいいけど、これがLinuxのトラブルだったら情報が少なすぎてマジでつらい。

こういうときは、具体的な解説を文章だけでなく画像を添付して行ってほしい。
「ファイルを解凍すると中身はこうです」とか、「こういうエラーが表示されたら、○○な可能性があります」とか。
しつこいくらい補足してほしい。

個別の記事として近々書くつもりだけど、そういったスタンスを実行しているのが、このブログの解説になります。
百聞は一見に如かず。
そうじゃないと、誰の役にも立たないからね。

Win10とUbuntuのデュアルブートについて

Win10がメジャーアップデートを行うと、ユーザの設定がぶっ飛ばされることはあまりに有名です。
このとき、Win10側で「高速スタートアップ」が有効に戻っていると、Linux側でHDDをマウントすることができなくなります。

私は更新を遅らせていて、メジャーアップデート(Fall Creators Update)はインストールされておらず、「高速スタートアップ」もチェックが外れていて無効化されていたのですが、Ubuntuで共有しているHDDをマウントできませんでした(Fig11)。

一度有効化して、また無効化。
これでUbuntuからDドライブが開けました。
念の為書いておきます。

Fig11. Ubuntuで共有しているHDDがマウントできないエラー
Fig11. Ubuntuで共有しているHDDがマウントできないエラー