ASUS製Infineon TPMのファームウェアを更新する
結構前に取り上げた「Infineon製TPMチップの脆弱性 (CVE-2017-15361) が発覚」の続報。ASUSはサポートする気がないのか音沙汰ないが、海外の有志の方がSupermicroから供給されている Infineon TPM Firmware Update Tools でASUSのマザーボード上でもファームウェアをアップデートできると言うので、これを試したら見事に成功した。
UEFI Shellでの更新方法
ファームウェア更新ツールの使用方法は、Windows PE環境で実行する方法とUEFI Shellから実行する方法があるようだが、今回はUEFI Shellを使うことにする。
まず、Supermicro社のFTPサーバー ftp://ftp.supermicro.com/driver/TPM/ から “9665FW update package_1.1.zip” をダウンロードして適当な場所に展開する。後でコマンド入力するので短めなフォルダー名に変えておいて、FAT32フォーマット済みのUSBメモリに移す。
ASUSのマザーボードはUEFI Shellのイメージファイルを別途入手する必要がある。 https://github.com/tianocore/edk2/blob/master/ShellBinPkg/UefiShell/X64/Shell.efi?raw=true から “Shell.efi” を入手し、先ほどのUSBメモリのルートディレクトリに移す。EFI Shellを使うのが久々すぎて、これでいいのやら分からん。
WindowsでBitLocker使用中の場合は念のためキーをバックアップしておいて、作業中は毎度の再起動前に一時無効にする。または、無効にしておく。脆弱性付TPMを使用した環境でBitLockerドライブを作成していた場合は暗号化キーに脆弱性があると思われるので、一度BitLockerを無効にしてファームウェア更新後に再度有効にするのが望ましい(時間が掛かるので面倒だが)。
作業のためUEFI BIOSの各種設定を変えておく。具体的にどう変えるのかというと、どこまで変える必要があるのか検証したわけじゃないのだけど、私はPRIME X370-PROで以下の設定を行った。
- 詳細 → AMD fTPM configuration → TPM Device Selection で「Descrete TPM」を「Firmware TPM」に変更。
- 起動 → セキュアブートメニュー → OSタイプ で「UEFIモード」を「非UEFIモード」に変更。
他にも起動関係でいくつか触ったかもしれないが、影響はないと思う。
UEFI設定保存・再起動後に詳細メニューから「終了」→「EFI Shellを起動」を選択してEFI Shellを立ち上げる。
EFI Shell起動後、Mapping tableにデバイスのドライブ名(マウントポイントという方がしっくり来る?)がずらっと出る。USBの文字が入っているのがUSBメモリのドライブっぽいので、FS0やFS1をあたってみる。
コマンドラインでFS0:
を実行してカレントディレクトリをFS0:に移す。dir
を実行するとカレントディレクトリのファイル一覧が出る。DOSと同じ要領なので難しくも何ともないが、初心者に教えるにはハードルが高そうだ。
cdコマンドを使ってファームウェア更新ツールを置いたディレクトリにカレントディレクトリを設定し、9665.nsh
を実行する。.nshと付いているが、これはバッチファイルみたいなものだろう。
“Updating the TPM firmware …“と表示されていればファームウェアの更新が行われている。
ファームウェア更新が正常に完了すれば”TPM Firmware Update completed successfully.“のメッセージの後に現在のTPMファームウェアのバージョンが表示される。TPM firmware version が「4.43.257.0」(TPM1.2の場合)または「5.62.3126.0」(TPM2.0の場合)になっていればOK。
再起動後、UEFI BIOSの設定を復旧させる。Windows起動後、TPMの管理 (tpm.mmc) を開いて「状態」欄が「TPMは使用する準備ができています。」のメッセージのみ表示されていることと、「TPM製造元のバージョン」が先と同じ「5.62.3126.0」になっていればOK。
参考サイト
- Asus / Infineon TPM firmware update? - Page 5 - ASUS Republic of Gamers Official Forum
https://rog.asus.com/forum/showthread.php?96727-Asus-Infineon-TPM-firmware-update/page5 - how to Boot to UEFI shell - Super User
https://superuser.com/questions/1057446/how-to-boot-to-uefi-shell
P.S. 1月4日の記事の「今年最初で最後のPC記事になりそうな悪寒」とは何だったのか。。。予告は裏切るためのもの。