11/22/2017

[PC] 現行Intel製チップのファームウェアの大半に脆弱性発覚

また面倒な・・・。ここ数年の間にリリースされたIntel製CPU及びチップセットを採用したPC、サーバの大半に共通する脆弱性が発覚してしまいました。

具体的には、第6,7,8世代のCoreシリーズ、同世代のXeon、AtomのC3000系、Apollo LakeのE3900系とPentium、あとNとJシリーズ。現在流通しているIntel系CPUを積んだPC、サーバの殆どが該当する事になります。これだけ見ると、ちょっと何言ってるかわからないレベルで洒落になりませんね。

本件問題の存在箇所は、Intel Management Engine(ME)、Intel Server Platform Service(SPS)、Intel Trusted Execution Engine(TXE)の各機能の部分(のファームウェア)です。いずれもシステム内での起動等から一連の処理について検証を行い、信頼されたもののみが実行されるよう制御するローレベルのサービスです。一般のユーザは使わない、というか気にもしない部分です。何それ?となった人も多いのではないでしょうか。

脆弱性の内容は、これらの機能がOSの外で行う検証等のプロセス内でオーバーフロー等を起こす事で発生するもので、要するに権限外で任意のコードを実行出来るというありふれた、しかし最悪のものです。ただ、今の所USB等の物理アクセスが条件とされているので、とりあえず物理サイトの管理を厳密にすれば攻撃は回避可能とのこと。本当でしょうか?この種のセキュアな制御機能というのは、特にサーバ等ではネットワーク経由で利用されるものなところ、リモートから乗っ取られる危険はないのか、と正直眉唾な気もしますけれども、一応信用する他ないのでしょう。

(追記:続報によれば、大半は物理アクセスが必要なものの、少なくとも1件のMEに存在する脆弱性はネットワーク経由で悪用可能との事でした。)

本来セキュアな筈の起動時のシーケンスに割り込んで任意のコードを実行させる事が出来る、とかそういう類の脆弱性という事なのでしょうか。そうであれば、元よりその辺の、セキュアブートだとかの類の機能を使用していない大半のユーザにとっては、元から使用してもいない機能が無力化されるに過ぎず、従って取り立てて気にする必要もなく、放置してよい、という結論になるわけですが。そうならそれは喜んでいい話ではあるのでしょう。この点、ネットワーク経由で悪用され得るか否かで真逆の結論になるだろうところ、やはりそこは気にかかりますけれども。

(追記:上記追記の通り、真逆でした。一般ユーザも放置してはいけません。)

とは言え、その辺の詳細は考えても仕方ないとして。何にせよ、本機能を使用している企業等のユーザについては、この機に同機能の使用を取りやめる、というのでもない限り、対応しないという選択肢はないでしょう。

しかるに、本件脆弱性の問題は、これがハードウェア、それもローレベルに存在し、その修正にはファームを変更しなければならない、という点にあるように思われます。というのも、当然ながら、ファームはマザーボード毎、メーカー毎に異なるものですから、原則として各メーカーが個々に対処する必要があります。しかし、このレベルの修正はそう簡単に出来るものではありません。修正ファームの作成にも相当の手間がかかり、適用するに際しても小さくないリスクが存在する上に、適用時にはシステムを停止させて、相応の検証も行わなければなりません。しかも、この種のファームウェアはその適用方法もまちまちで、場合によっては一台ずつ手作業が発生する事もあります。SEにかかる負担は小さいものでは有り得ないでしょう。なんという面倒な事をしでかしてくれたのか、というSE達の怨嗟の声が聞こえてきそうです。

本件は専らIntelの過失によるものであり、全ての責任はIntelにあります。そうである以上、Intelはユーザからその対処に要したコストに応じた損害賠償を要求されても文句を言えないでしょう。特に、本件機能を用いるサービスは主に大規模なビジネスユーザ向けに、それなり以上に高額のオプション料金を支払って提供されているものだろうわけで、よりによってそれがこういう事になって、生じるコストは小さいものではありえないし、遺憾に思わないユーザはいないでしょう。さてどう始末をつけるんでしょうね。

なお、本件脆弱性の有無は基本的にCPUの型番で判別出来ますが、より確実に確認するための専用のツールがIntelから提供されています。Windows版とLinux版がそれぞれあり、Windows版は7,8,10対応でGUI版もあり、Linux版は16.04LTSもしくはRedhat7.2に対応でCUIのみです。

というわけで、私の所でも一通りツールを動かして確認してみました。 結果としては、上記リストに該当していた1台のみが脆弱性ありと判定され、後は問題なしと出力されました。該当した1台は、先日新調したApollo Lake(J3455)のサーバです。当該機のOSはUbuntu17.10のServer版で、その他のPC、サーバ類も大半が17.10でしたが、ツールは問題なく動作しました。Windows機は10と7の機種で実行してみましたが、これも問題なし。その手順と出力内容は以下の通りです。

<確認ツール>

[配布ファイル名]

 ・Linux版 SA00086_Linux.tar.gz
 ・Windows版 SA00086_Windows.zip

[ツールのダウンロードサイト]

  https://downloadcenter.intel.com/download/27150

<確認ツールの動作コマンドと実行結果>

[Linux版の場合]

配布ファイルを解凍すると出力される下記スクリプトをコンソールから実行。なお実行ファイルはpythonのスクリプトにつき、実行にはpythonのインストールが必要です。出力中、[Risk Assessment]の項目が判定結果。問題なしの場合は、[not vulnerable]とだけ表示され、問題ありの場合は[vulnerable]となって、製造元にコンタクトを取るよう促す説明文が追加で表示されます。

$ sudo ./intel_sa00086.py

・Linux版出力結果(問題なしの場合)-----

INTEL-SA-00086 Detection Tool
Copyright(C) 2017, Intel Corporation, All rights reserved

Application Version: 1.0.0.128
Scan date: (実行日時) GMT

*** Host Computer Information ***
Name: (ホスト名)
Manufacturer: (マザーボードメーカー名)
Model: (マザーボード型番)
Processor Name: Intel(R) Core(TM) i3-2100T CPU @ 2.50GHz
OS Version: Ubuntu 17.10 artful (4.13.0-16-generic)

*** Intel(R) ME Information ***
Engine: Intel(R) Management Engine
Version: 7.0.4.1197
SVN: 0

*** Risk Assessment ***
Based on the analysis performed by this tool: This system is not vulnerable.

For more information refer to the SA-00086 Detection Tool Guide or the Intel security advisory Intel-SA-00086 at the following link:
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00086&languageid=en-fr

-----ここまで

・Linux版出力結果(問題ありの場合)-----

INTEL-SA-00086 Detection Tool
Copyright(C) 2017, Intel Corporation, All rights reserved

Application Version: 1.0.0.128
Scan date: (実行日時) GMT

*** Host Computer Information ***
Name: (ホスト名)
Manufacturer: System manufacturer
Model: System Product Name
Processor Name: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz
OS Version: Ubuntu 17.10 artful (4.13.0-16-generic)

*** Intel(R) ME Information ***
Engine: Intel(R) Trusted Execution Engine
Version: 3.0.1.1105
SVN: 0

*** Risk Assessment ***
Based on the analysis performed by this tool: This system is vulnerable.
Explanation:
The detected version of the Intel(R) Trusted Execution Engine firmware is considered vulnerable for INTEL-SA-00086.
Contact your system manufacturer for support and remediation of this system.


For more information refer to the SA-00086 Detection Tool Guide or the Intel security advisory Intel-SA-00086 at the following link:
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00086&languageid=en-fr

-----ここまで

[Windows版の場合]

配布ファイルを解凍し、出力されるファイル中、[DiscoveryTool.GUI]中の[Intel-SA-00086-GUI.exe]を実行。すると、チェックが実行され、数秒後に下図のようにダイアログに結果が表示されます。判定結果は一番上です。この例では脆弱性なし。


というわけで、脆弱性ありの判定が1台出たわけですが、現時点ではどうする事も出来ません。というのも、2017/11/22時点で対応済のファームウェアを提供しているところは無い模様だからです。今回の対象はASUS製のJ3455M-Eですが、当然のように公式サポートには本件に関する説明すらない始末。当のIntelからして自社製NUC等について未対応で、2017/12にリリース予定というのだから酷い話です。判定ツールの指示に従ったユーザからコンタクトを受けた製造元も対応に困るでしょうに。アウトの判定だけして放置、というのは幾ら何でもあんまりです。ユーザ側としては、悶々としつつ、あるいは悪意に脅えつつ待つ他ないし、ベンダも顧客を宥めながらこれまた待つしかないだろうわけなのですけれども。

しかし、じっと待って、ようやく修正ファームが提供されたとしても、それで解決にはならないのがまた。だって、適用対象は下手しなくてもここ数年で入れた端末全部ですよ?顧客のシステムを止めるわけにもいかないし、代替機を出そうにも数が半端ないしで、頭を抱えているSEも多そうです。 シンクライアントやそれに近いレベルでクラウド化しているところは何とでもなるんでしょうけど、クライアント側で色々入れてる所は大変そうです。ご愁傷さま、と言うしかないのでしょうけれども。

(追記)

遠隔で利用可能な脆弱性が含まれている事が発覚したからか、DELL、HP、Lenovo等の大手は11/23時点でパッチを用意したようです。流石迅速ですね。ただ、モデル毎にリリース予定日が1か月後だったり二ヶ月後だったり未定だったりまちまちなところもあり、その辺は今いちな感じではあるのですけれども。一方我らがASUSは未だ音沙汰すらなし。まあ多分にPCメーカーのOEM周りへの対応を優先して、比較的ユーザの少ない自作ユーザ側は後回しにしてるとかそういう話なのかもしれませんけど、この放置っぷりは残念です。

Intel® Management Engine Critical Firmware Update (Intel SA-00086)
Intel Q3’17 ME 11.x, SPS 4.0, and TXE 3.0 Security Review Cumulative Update

[関連記事 [PC note] 今更ながらのApollo lakeが意外といい感じ]