
TPM脆弱性チェックツール(CVE-2018-6622対応)。このツールはBlack Hat Asia 2019およびBlack Hat Europe 2019で公開されます。
,----------------, ,---------,
,-----------------------, ," ,"|
," Napper v1.3 for TPM ," | ," ," |
+-----------------------+ | ," ," |
| .-----------------Z | | +---------+ |
| | Z | | | | -==----'| |
| | ︶ ︶ z | | | | | |
| | - | | |/----| ==== oo | |
| | | | | ,/| (((( | ,"
| `-----------------' |," .;'/ | (((( | ,"
+-----------------------+ ;; | | |,"
/_)______________(_/ //' | +---------+
___________________________/___ `,
/ oooooooooooooooo .o. oooo / \,"---------
/ ==ooooooooooooooo==.o. ooo= / ,`\--{-D) ,"
`-----------------------------' '----------"
Napper v1.3 for checking a TPM vulnerability, CVE-2018-6622 and unknown CVE
Project link: https://github.com/kkamagui/napper-for-tpm
Please contribute your summary report to the Napper project!
"Napper"は、ディスクリートTPMおよびファームウェアTPM(Intel PTT)向けの新しい脆弱性チェックツールです。CVE-2018-6622と未知のCVEは、Advanced Configuration and Power Interface(ACPI)のS3スリープ状態またはサスペンドに関連しています。攻撃者はS3スリープでTPMを無効化でき、Platform Configuration Registers(PCR)を使用するリモートアテステーションやシール/アンシール機能を無効化できます。CVE-2018-6622と未知のCVEの詳細については、USENIXの論文A Bad Dream: Subverting Trusted Platform Module While You Are SleepingおよびBlack Hat Europe 2019のプレゼンテーションBitLeaker: Subverting BitLocker with One Vulnerabilityをお読みください。
NapperとCVE-2018-6622は、以下のセキュリティカンファレンスで紹介されました。
Intel Platform Trust Technology (PTT)に関連する未知のCVEは、以下のセキュリティカンファレンスで紹介されました。
以下のデモビデオをご覧ください。
皆様の貢献を常に歓迎します。あなたが貢献したNapperのサマリーレポートが世界を安全にします。
NapperはGPL v2ライセンスです。
Trusted Platform Module(TPM)は耐タンパーデバイスであり、ハードウェアベースまたはファームウェアベースのセキュリティ機能を提供するように設計されています。TPMチップは、乱数生成器、不揮発性ストレージ、暗号化/復号化モジュール、およびPlatform Configuration Registers(PCR)を備えており、これらはBitLocker、DM-Crypt、Trusted Boot(tboot)、Open Cloud Integrity Technology(Open CIT)などのさまざまなセキュリティアプリケーションに利用できます。
TPMは、信頼できるプラットフォームを構築するための強固な基盤を提供するために、一般販売されているデバイス、特に企業や政府システムで使用されるデバイスに広く展開されています。TPMは信頼できるプラットフォームの重要なポイントであるため、多くの研究者がTPMの脆弱性を見つけようと試み、物理的なアクセスなしでは破るのは難しいと結論付けていました。しかし、これはもはや真実ではありません。
私たちが見つけた脆弱性は、Advanced Configuration and Power Interface(ACPI)を用いてTPMを無効化できます。PC、ラップトップ、サーバーのACPIは、消費電力を削減するために6つのスリープ状態(S0-S5)を提供します。システムがスリープ状態に入ると、CPU、デバイス、RAMの電源がオフになります。セキュリティデバイスを含むコンポーネントの電源がオフになるため、システムは起動時にそれらを再初期化する必要があり、これが攻撃対象となる可能性があります。私たちは物理的なアクセスなしでこの攻撃対象の脆弱性を発見しました。
脆弱性を緩和するために、私たちは対策と、TPMの脆弱性をチェックする新しいツール「Napper」も提示します。NapperはLinuxベースの起動可能なUSBデバイスであり、カーネルモジュールと脆弱性チェックソフトウェアを備えています。Napperでシステムを起動すると、システムを一時的にスリープさせて脆弱性をチェックし、結果を報告します。
Napperは、特別なカーネルモジュールとカスタマイズされたtpm2ツールで構成されています。NapperはUbuntu 18.04をベースにしており、Live CDイメージを作成するためにカスタマイズおよび調整されています。TPMの脆弱性をチェックするだけで、簡単な方法を探している場合は、セクション3.1に進み、USBストレージでNapper Live CDイメージを使用してください。Napper Live CDには、バイナリツールだけでなく、Napperの完全なソースコードも含まれています。現在Ubuntu 18.04を使用していて、Napperをスクラッチからビルドしたい場合は、セクション3.2に進んでビルドしてください。
Napper Live CDイメージは、Napperプロジェクトのリリースページにあります。
Microsoft Windowsオペレーティングシステムを使用している場合は、Win32 Disk Imagerを使用してNapper Live CDイメージをUSBストレージに書き込んでください。
LinuxまたはMac OS Xを使用している場合は、以下のddコマンドを使用してください。```
$> sudo dd if=Napper-LiveCD.iso of=/dev/sdX bs=4096 $> sync
### 3.1.3. USBストレージでシステムを再起動し、Napperを実行する
USBストレージを接続し、ブートシーケンスを変更してそこから起動すると、以下のNapperのブートメニューが表示され、最初のオプションを選択してNapper Live CDを起動できます。
<center> <img src="https://assets.kitploit.com/production/public/readmes/28076/525cb00d8f948ccc1653bd4fd08c8baf293615ad80ec52082b6c04efe7484f57.png" alt="napper_boot_menu"/> </center>
ブートシーケンス後、デスクトップにREADME.txtファイルが表示され、左側のドックバーにNapperツールのアイコンが表示されます。システムを確認するには、ドックバーの一番上のアイコンをクリックし、パスワードとして`napper`と入力してください。Napperツールの`ID`と`password`は`napper`に設定されています。Napperがシステムをテストしている間、システムはスリープ状態になり、その後復帰します。そのため、ACPI S3スリープ状態からシステムを復帰させるには、キーボードを操作する必要があります。
<center> <img src="https://assets.kitploit.com/production/public/readmes/28076/50fdb76d396e32fe811b7f9e23849fd4b66fccee5c4325b5f8c4f167938c51b2.png" alt="napper_run"/> </center>
システムにTPMの脆弱性がある場合、Napperは以下のようにシステムが脆弱であるというサマリーを報告します。その場合は、セクション4に進み、[NapperプロジェクトのIssue Report](https://github.com/kkamagui/napper-for-tpm/issues)または[Webサイト](https://kkamagui.github.io/)を通じて、そのサマリーを私たちのプロジェクトNapperと共有してください。
<center> <img src="https://assets.kitploit.com/production/public/readmes/28076/37d28f91902c745a21bd3be9c8f373394694127db5037cc4fb522e1e660c0e65.png" alt="napper_summary"/> </center>
## 3.2. Ubuntu 18.04を使用してNapperをスクラッチからビルドする(詳細版)
### 3.2.1. Ubuntu 18.04のダウンロードとNapperソースコードのクローン
NapperはUbuntu 18.04をベースとしています。そのため、[公式Ubuntu Webサイト](https://www.ubuntu.com/download/desktop)からダウンロードし、対象システムにインストールしてください。その後、[Napperプロジェクトサイト、https://www.github.com/kkamagui/napper-for-tpm](https://www.github.com/kkamagui/napper-for-tpm)からNapperのソースコードをクローンし、以下のコマンドでビルドします。```
# Clone Napper source code from project site.
$> git clone https://github.com/kkamagui/napper-for-tpm.git
# Build Napper.
$> cd napper-for-tpm
$> ./bootstrap
ソースコードをビルドした後、端末でNapperツールを実行できます。以下のコマンドを端末に入力してください。NapperのフロントエンドはPythonスクリプトで構成されています。```
$> sudo ./napper.py
,----------------, ,---------,
,-----------------------, ," ,"|
," Napper v 1.3 for TPM ,"| ," ," |
+-----------------------+ | ," ," |
| .-----------------Z | | +---------+ |
| | Z | | | | -==----'| |
| | ︶ ︶ z | | | | | |
| | - | | |/----| ==== oo | |
| | | | | ,/| (((( | ,"
| -----------------' |," .;'/ | (((( | ," +-----------------------+ ;; | | |," /_)______________(_/ //' | +---------+ ___________________________/___ ,
/ oooooooooooooooo .o. oooo / ,"---------
/ ==ooooooooooooooo==.o. ooo= / ,\--{-D) ," -----------------------------' '----------"
Napper v1.3 for checking a TPM vulnerability, CVE-2018-6622 and unknown CVE Made by Seunghun Han, https://kkamagui.github.io Project link: https://github.com/kkamagui/napper-for-tpm