3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

LinuxマシンでIntel SA-00086に対処する

概要

  • IntelのCPUに重大な脆弱性(Intel SA-00086)が見つかった (北米時間2017/11/20公開情報)
  • 各ベンダからwindows用のセキュリティパッチツールが公開されている
  • Linux(debian)しか入っていない自作PCで,このパッチを適用したので,参考情報としてここに共有する
  • あくまで参考情報なので,自己責任で実行していただきたい

追記

DamashiGamiさんのコメントによれば,インストールメディアで代用出来るようだ.
Windows8のDVDを持っていたので,実際に試してみた.
起動して,DVDで起動して言語選択画面が表示された後「Shift+F10」を押すとコマンドプロンプトが出た.
その後は,C:コマンドでUSBメディアに移動し,記事の中にあるように,
drvload heci.infFWUpdLcl.exe -F ME.binをすればアップデートできた.

背景

2017/11/20にIntelのCPUに重大な脆弱性(Intel SA-00086)が見つかった.
詳細はIntelによる公式情報を読んていただくとして,手っ取り早く自分のマシンで対応が必要か調べるには
Intel-SA-00086 Detection Toolを実行すれば良い.

SA00086_Linux.tar.gzをダウンロードし,sudo ./intel_sa00086.pyとし,
Detection Error: This system may be vulnerable.が表示されたならば対応が必要だ.

私のマシンでは表示されたので,対応が必要となった.

Windows PEを利用したパッチ

私が使っているマシンのマザーボードはASUSのH170-PROだ.
ASUSから対応ツール(MEUpdateTool)が公開されており,Windowsマシンならば,zipマシンを解凍し出てくるexeファイルを実行するだけでよいみたいだ.

しかし,私はOSにDebianを使っている.そう一筋縄ではいかない.
わざわざWindows OSを入れて実行するのは面倒なので,なんとか簡便に済まないかを調べた所,Windows PEを使う方法があるらしい.

ここに書かれている方法をアレンジして実行すれば良い.

H170-PROでのパッチ

必要となるものは

  • USBメモリ
  • 公式からダウンロードしたisoファイルかWindows 7 以降のインストールメディア (32bit用)
  • Asus公式サイトからダウンロードしたMEUpdateTool (zipファイル)
  • Intel公式サイトからダウンロードしたIntel Management Engine Driver (zipファイル)
  • aptで入るwimtools (mkwinpeimgコマンド用)
  • コマンドラインの操作技術
  • USBにイメージを焼くためのRufusを実行できるwindowsマシン
    • UNetbootinを使えばLinux上でもUSBにイメージを焼け,windowsマシンは不要かもしれない(未検証)

となる.
これらを使って,パッチファイルを実行するためのミニWindows環境をUSBメモリ内に構築する.
事前にWindows PEについて知っておくとスムーズに事が進む.
手順は次のとおりだ.

  1. isoファイルかCDを用意し,マウントする
    • 以下では/path/to/mounted/windowsにマウントしたと仮定する
  2. MEUpdateToolのzipファイルをunzipする
    • 以下では~/me_update_toolに解凍したと仮定する
  3. Intel Management Engine Driverのzipファイルをunzipし,WINDOWSDriverPackages/MEI~/me_update_toolにコピーする
  4. mkwinpeimgコマンドでimgファイルを作成する
    • mkwinpeimg -W /path/to/mounted/windows -O ~/me_update_tool intel-patch.img
  5. できたimgファイルをUSBメモリに焼く
    • 元記事ではddコマンドで良いと書いてあるが,それで焼くと,ファイルシステムがISO 9660になってしまい,USBブートに失敗した
    • イメージをwindowsマシンにコピーし,Rufusを使ってUSBメモリに焼いた
  6. マシンにUSBメモリを刺し,再起動する
  7. F2キーを押し,BIOS設定画面に入り,USBメモリから起動する
  8. コマンドプロンプトが表示されるので,以下のコマンドを実行する
cd \
cd MEI
drvload heci.inf
cd \
cd FW
FWUpdLcl.exe -F ME.bin

これで,最後まで処理が進めば,対処完了だ.
exitコマンドで再起動がかかるので,その後USBを抜き,あとは普通にLinuxを起動すれば良い.

Linux起動後,sudo ./intel_sa00086.pyとし,This system is not vulnerable.と表示されれば,無事終わっていることが確認できる.

なお,この記事は一部記憶を頼りに書いているので,適宜補足してもらえると助かります

余談

あまりネット上に情報がなかったので,色々とハマってしまった.

  • 最初64bit用OSを使ってしまい,exeが必要なサブシステムがありませんというエラーで動かなかった
  • ddでUSBメモリに焼いたものでは,Windows PEが起動しなかった.ファイルシステムがISO 9660ではなくNTFSでないとダメみたいだ
  • drvload heci.infをしないと,FWUpdLcl.exeがうまく動かない
  • heci.infファイルだけコピーするとうまくいかない.他のファイルも必要.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?