Intel ME Manufacturing modeが有効のまま出荷 → どんな問題があるのか?

普通はManufacturing modeを無効にしてから出荷

2018年秋、Apple MacBook製品の一部がIntel ME Manufacturing modeが有効のまま出荷されていることがわかり、修正パッチが配布されました。

Positive Technologies - learn and secure : Intel ME Manufacturing Mode: obscured dangers and their relationship to Apple MacBook vulnerability CVE-2018-4251

http://blog.ptsecurity.com/2018/10/intel-me-manufacturing-mode-macbook.html

上記URLのブログに、Intel ME Manufacturing modeが有効のままであることの危険性についての詳しく書かれています。(英語)

Intel ME Manufacturing mode
Intel製品のテスト用のモード
通常、製品出荷前に無効にされる。

Intel ME Manufacturing mode時に行うこと

  • 動作チェック
  • プラットフォームとIntel MEの動作・セキュリティ・各種機能の設定

Intel ME Manufacturing mode時に設定するもの

Positive Technologiesの記事(冒頭のURL)より。
(簡略化してまとめました。詳細はPositive Technologiesの記事を読んでください)

  • データ: Platform parametersFPFs*(Field Programmable Fuses) 等

    場所: One Time Programmable ROM [FUSEs]

  • データ: CVARs*(Configurable NVARs、Configurable Named Variables)

    場所: SPI Flash memory内のIntel ME internal file system(MFS)

* FPFsにはマシンのセキュリティ関係、CVARsには主にIntel ME関連の動作とセキュリティにかかわるものが含まれています。

One Time Programmable ROMは、文字通り、書き込み可能回数は1回だけ。書き換え・追記・消去ができません。(CVARsが入っているmemoryは、re-flashできます)

  • Manufacturing mode時

    設定可能。設定したものはtemp memory上にあり、ROMにはまだ書き込まれていない。

  • Manufacturing modeをClose(無効化)した直後

    設定のburn(書き込み)が行われる。

  • Manufacturing modeを再度有効化

    one-time-programmable memory (FUSEs)は変更不可

    (CVARsは変更可能?)

Manufacturing modeを有効にしておく危険性について

簡単なことではありませんが、重要なマシン設定の改変が可能な状態です。 改変によってマシンが文鎮化したり、マシンコントロールを奪われることも考えられます。

特に、一度もManufacturing modeをClose(無効化)したことがない場合は、改変後にCloseされてしまうと、改変されたFUSEs設定が恒久的なものになります。直せません。

第三者による攻撃がどの程度可能なのかわかりません。(むしろ製造元の方が……と心配になる今日この頃) しかし、万が一、Manufacturing modeが有効になったままのマシンがあったら、メーカーに直接連絡してみてはいかがでしょうか。一般ユーザー向けではありませんが、自分で無効にする方法もあります。

有効か? 無効か? 確認する方法

次のいずれかのソフトウェアを使います。
  • HWiNFO (for Windows、DOS)
  • Intel (CS)ME System ToolsMEInfo

    モバイルプラットフォーム用はTXEInfo、サーバープラットフォーム用はSPSInfo。

HWiNFO (Windows用)の場合

  1. HWiNFOを起動
  2. RUN
  3. メイン画面の左ペイン
    コンピューター名 → Motherboard → Intel ME
  4. メイン画面の右ペイン
    ME Host Status → Manufacturing Mode
  • Not Active … 無効
  • 有効の場合は、Actvie?
HWiNFO Windows用の画面。Manufacturing Mode: Not Active

MEInfoの場合

Command
MEInfo -FWSTS

※ Windowsの場合は、コマンドプロンプトを管理者として起動する必要があります。

  • ManufacturingMode: Disabled … 有効
  • ManufacturingMode: Enabled … 無効
コマンドプロンプト画面。MEInfo -FWSTS コマンドの結果は、ManufacturingMode: Disabled

Manufacturing modeを無効にする方法

注意
できれば、正しく設定されていることを確かめてから行ってください。一度無効にすると、前の状態には戻せません。

Intel (CS)ME System ToolsFlash Programming Tool (FPT)を使用します。(Windowsの場合は、コマンドプロンプトを管理者として起動する必要があります)

Command
FPT -CLOSEMNF NO

コマンド実行が成功した場合は、Successfulと表示されます。

コマンドに間違いがなくても、特定の条件下では失敗するようです。(この場合、どうすればいいのかわかりません)

コマンドオプション・パラメータの説明
  • -CLOSEMNF
    Manufacturing modeを無効にする。(Close)

    (Manufacturing modeの完了)

  • NO
    Manufacturing modeのclose直後に、global resetをしない。(global reset … Intel MEを実行する小型プロセッサとHost CPUの両方をリセットすること)

オプション「-CLOSEMN」には「NO」以外のパラメータもありますが、一般のマシンユーザーが使う必要はありません。

(Intel MEのSystem Tools for SkyLake User Guideより)

実行されること

  1. Intel ME manufacturing mode done bit (Global Locked bit)をセット → 確認
  2. Master region access permission in the Descriptor regionをIntel-recommended valueにセット → Flash regionsがLockされていることを確認
  3. Global reset
  • その他、unprovisioning processの値がデフォルト値にセットされる。
  • 「NO」を追加すると、global resetをさせない。

重要

Production MCP/ FWでこのオプションを使用する前に、PTTとAnchor Coveの値が正しく設定されていることを確認すること。いったん実行されると、値をFPFs(Field Programmable Fuses)に恒久的にcommitするため、元に戻すことはできない。

MCP = Multi-Chip Package
PTTとAnchor Cove … 両方ともSecurity機能
PTT = Platform Trust Technology。

すでにManufacturing modeがCloseされた状態で、-CLOSEMNFを使用した場合

何も実行されず、PASSと報告される。変更なしのため、global resetもしない。

エラーになるケース (Return value: 1)

Intel ME Regionへのアクセス権がない(すでにIntel-recommended valueになっている)場合。何も変更されず、global resetもされない。Manufacturing modeは有効のまま。

Flash Programming Tool (FPT)を使用します。(Windowsの場合は、コマンドプロンプトを管理者として起動する必要があります)

※ すべてが表示されるわけではありません。搭載されていない機能、搭載されていても無効になっている一部の機能、アクセス権のない項目の値は表示されません。

FPFs

  1. FPFsリストの表示

    FPT -FPFS

  2. 各FPFの値を表示

    FPT -READFPF "(FPF Name)"

CVARs

  1. CVARsリストの表示

    FPT -CVARS

  2. 各CVARの値を表示

    FPT -R "(Variable name)"

関連記事