シングルポイントオブフェイルアを避け、ルートインフラストラクチャをセキュアにする:TCG TPM 2.0 March 7, 2023 | 8 最小読み取り

シングルポイントオブフェイルアを避け、ルートインフラストラクチャをセキュアにする:TCG TPM 2.0

「TCG TPM 2.0」とは何ですか?

Trusted Computing Group (TCG) Trusted Platform Module (TPM) 2.0は、コンピューティングデバイスの安全な基盤を提供するハードウェアベースのセキュリティソリューションです。TPM 2.0は、ノートパソコン、デスクトップ、ワークステーション、サーバーなどのデバイスのマザーボードにインストールまたエンベデッドられて、デバイスが信頼状態で作動することを保証するよう設計されています。セキュアブート、デバイス認証、キー管理、暗号操作などのセキュリティサービスを提供します。TPM 2.0は、異なるプラットフォームやOSの間で相互運用可能に設計され、幅広いハードウェアおよびソフトウェアベンダーからのサポートを受けています。TPM 2.0は、マルウェア、フィッシング攻撃、不正アクセスなどのさまざまな脅威からデバイスが保護されることが保証されます。

TTCG TPM 2.0のリファレンス実装における脆弱性

最近、CVE-2023-1017およびCVE-2023-1018という2つの脆弱性が完全に公開され、広くTPMデバイスを配置しているシステムのセキュリティに重大な影響を与えました。これら2つの脆弱性が広く影響を及ぼす理由は、それらがリファレンス実装の脆弱性である。(更新:Quarkslabは、2022年3月14日にTPM2.0リファレンス実装コードの脆弱性に関するテクニカル分析をリリースしました。)

alter-text

TCG規格は既に修正され、一部のOEMベンダーも実装の修正に対応しています。TPM2標準では、パラメータ暗号化を処理する際に、ホスト側がコマンドバッファの最後の2バイトに対して範囲外の読み書きを実装できますという不正な境界チェックが実行られます。この不正な境界チェックは、ホスト側プロトコルスタックとTPM2実装の両方(TPM2チップのファームウェアやswtpmなどのソフトウェア実装を含む)に存在します。そのため、ホスト側ソフトウェアだけを更新しても、この脆弱性を完全に排除できません。TPM2実装も更新する必要があります。そうでないと、攻撃者は脆弱なホスト側ソフトウェアを使用して脆弱なTPM2と通信し、この脆弱性を引き起こすことができます。

このタイプの範囲外の読み書きにより、攻撃者は特別なTPM2コマンドを構築して、コマンドバッファの最後の2バイトを読み取ることができます。これらのバイトには、前回の計算から残っている機密データが含まれる場合があります(特に、ハードウェアTPM2の内部リソースが非常に限られているため、メモリ領域の許可制御が通常は実装されていません)。攻撃者はまた、コマンドバッファの最後の2バイトを変更して、TPM2の内部計算プロセスに影響を与えることもできます。ただし、この脆弱性だけを使用しても、攻撃者はTPM2実装のアドレス空間内のコマンドバッファの特定の場所を簡単に指定または予測することはできません。

TPM2の設計原則は、TPM2はキーを生成し、データをシールすることができますが、デフォルトでは生成されたキーとシールされたデータを内部で保存しません。代わりに、それらは対応するハンドルファイルで参照できる一時的なストレージ領域に保存されます。TPM2内のデータオブジェクトは階層的に組織化され、lower-levelオブジェクトはupper-levelオブジェクトのシードとポリシー(PCRステータスなど)を使用して暗号化されます。これらのlower-levelオブジェクトは、upper-levelオブジェクトが使用可能であり、作成時に定義されたポリシー(PCRステータスなど)が一致している場合にのみ使用できます。各階層のトップはプライマリキーであり、関連するポリシーによってのみ制限されます。

  • 任意の有効なハンドルファイルは、参照するオブジェクトを TPM2 内の永続ストレージ領域に転送することができます。永続化されていないオブジェクトのハンドルファイルは、再起動後に無効になります。

  • プライマリキーの特異性は、リセット時に TPM2 内に保存されたシードと、プライマリキーを生成するときに提供されるパラメータ(ポリシーを含む)が変更されない限り、生成されたプライマリキーが完全に同じになることです。したがって、プライマリキーは永続化されずに使用されるたびに再作成できます。

  • lower-levelのキーの生成にはランダム性がありますが、それらのプライベートキー(upper-levelのオブジェクトとポリシーによって暗号化されたもの)と公開鍵は、必要に応じてファイルシステムに保存され、ハンドルファイルで参照されます。

シール処理に関して、TPM1はSRKを使用してすべてのシールデータを暗号化し、データを復号化できるPCRステータスのセットは様々な場合があります。TPM1の所有権が取得されると、SRKが再生成されて内部に保存されます。TPM2のシール処理はポリシーに基づいて暗号化する特別なlower-levelのキーとして扱いで、すべてのupper-levelオブジェクトに使用される。復号化する際にも、lower-levelキーのように、ハンドルファイルを使用してロードおよび参照する必要があります(また、永続化することもできます)。同じupper-levelオブジェクトが存在し、ポリシーが一貫している場合、データを復号化できます。

理論的には、コードインジェクションやリターンオリエンテッドプログラミング(ROP)などの攻撃は、TPM2にロードされたオブジェクトから機密データを取得することができます。ただし、TPM2内でこのような攻撃を実行することには、ある程度の困難があります。したがって、攻撃者がホストとTPM2デバイスに物理的にアクセスできる場合、攻撃者がすべてのオブジェクトを正常にロードし、これらのデータを漏洩するリスクがあります。攻撃者が正常に利用できないオブジェクトのリスクは、ポリシーの一貫性がない場合でよりupper-levelオブジェクトが漏洩しても、ポリシーによってlower-levelオブジェクトが復号化できないことを、TPM2の実装が保証できるかどうかに依存します。つまり、ポリシーがlower-levelオブジェクトの暗号化プロセスに深く関わっているか、単に認証として機能しているかどうかによって異なります。ただし、TPM2に存在しないオブジェクト、つまり永続化されず、TPM2にロードされていないオブジェクトに対しては、このタイプの攻撃は明らかに効果がありません。

最初の野生のUEFIブートキットが、UEFIセキュアブートをバイパスする

ESETは、「BlackLotus」と呼ばれるBootkit攻撃を発見しました。この攻撃は広く使用されていました。これは初めてのUEFI Secure Bootバイパスの脆弱性(PoC/CVE-2022-21894)を利用し、大規模に悪用されたBootkit攻撃です。Bootkit攻撃が検出されたのはこれが初めてではありませんが、UEFI Secure Bootをバイパスするための脆弱性を利用したものとしては初めてです。

alter-text

UEFI Secure Bootは、OSがロードする前に未承認のソフトウェアを読み込むことを防止するためのファームウェア機能です。この脆弱性を悪用することで、Bootkit攻撃はこのセキュリティ機能をバイパスして、非常に早い段階でシステムに感染させることができます。そのため、検出や削除が非常に困難になります。この攻撃が特に懸念されるのは、上記で議論したTPM2の脆弱性など他の脆弱性と組み合わせる可能性があることです。RaaS(ランサムウェアサービス)フレームワークがTPM2のような脆弱性と組み合わされると、個人や企業にとって壊滅的な結果になります。攻撃者はシステムを完全に制御し、機密データを盗み出したり、システムまたはネットワーク全体を破壊する攻撃を行うことができます。そのため、このような攻撃を防止するために、組織や個人は防御深度戦略を採用することがますます重要になっています。

対策

こうした脆弱性に対するリスクを軽減するためには、以下の対策が必要です。

  • TPMへのアクセスを制限し、特定のGID / UIDとrootのみがアクセスできるようにします。
  • VED(Vault Exploit Defense)、PaX / GRsecurityなどのOSランタイム保護。
  • AppArmorやSeccompを介したアプリケーションの強制アクセス制御。
  • TPMは、測定、リモートアテステーション、およびファイルシステムに保存されている他のキーのアンシールにのみ使用するべきです。
  • TPMのプロセス制御ロジックを監査し、ポリシーが下位レベルのオブジェクトの暗号化プロセスに深く関与するものを優先的に使用する必要があります。単に認証を行うだけのものではなく、暗号化プロセスに深く関与するポリシーが必要です。

ここで重要な脅威モデルのポイントは、TPM内にすでに存在し、使用可能な(動作またはアンシールの準備ができた)キーが最も危険であり、TPMにロードされていないキーが最も安全であることです。ただし、物理的な対策に依存しない分散ノードでは、OSランタイム保護とTCG TPM 2.0によるアテステーションの組み合わせの導入を検討することが推奨されます。 EVIL MAIDシナリオについての詳細情報や、対処方法については、お気軽にお問い合わせください。