web-dev-qa-db-ja.com

UEFIセキュアブートおよびルートキット

UEFIセキュアブートを有効にすると、署名されていないカスタムカーネルモジュールが実行されないため、ルートキットのインストールが困難になる可能性があると聞きました。

セキュアブートは本当にルートキットモジュールのインストールをブロックできますか、それともシステムの起動中にルートキットのロードをブロックするだけですか?

セキュアブート: http://www.webopedia.com/TERM/M/Microsoft_secure_boot.html

3
Kevin Parker

EFIセキュアブート UEFIファームウェアは、署名されたUEFIアプリケーション(ブートローダーを含む)とドライバーのみを確実にロードして実行します。したがって、マルウェアを導入することによってそれらを変更する試みは検出され、拒否されます。脆弱性またはマルウェア(ルートキットを含む)は、ロードされたコードまたは次にロードされたコンポーネントにも署名されている可能性があります。

セキュアブートは本当にルートキットモジュールのインストールをブロックできますか、それともシステムの起動中にルートキットのロードをブロックするだけですか?

セキュアブートは、ブートプロセスの完了後にシステムがマルウェアを導入することからシステムを保護しません。その後、システムはセキュアブートがない場合と同じように動作します。ブートプロセスを安全に保つには、ブートの複数の段階が存在する可能性があるため、ロードされたコードの署名チェーンを保証する必要があります。下記参照。

ソフトウェアコンポーネントのチェーン

全体的なセキュリティは、個々のコンポーネントのチェーンによって異なります。

  1. hardware-すべてのソフトウェアのセキュリティは、それが実行されているハードウェアに依存します。
  2. [〜#〜] uefi [〜#〜]-ファームウェアは、コード署名の検証に使用される暗号化キーの管理と保存を含むセキュアブートを処理します。 UEFI変数に格納されている証明書は、UEFIセキュアブートによって信頼されます。
  3. bootloader-これ(可能なUEFIドライバーとアプリケーションを含む)は、セキュアブート署名によって直接検証されるブートチェーン内の唯一のソフトウェア(UEFI自体を除く)です。以下にリストされているすべての次のコンポーネントは、UEFIセキュアブート仕様によって保護されていません。ブート手順全体を安全に保つために、ブートローダーと可能な次のブートコンポーネントは、セキュアブートと同様のコード署名チェックメカニズムを実装する必要があります。
  4. 第2段階のブートローダー-オプションのコンポーネント
  5. OSカーネル-ほとんどの場合実行される最も複雑なコンポーネントは、脆弱性の最大のプレイフィールドを提供します。

署名証明書の信頼性

署名されたブートローダーの信頼性は、信頼された署名証明書を使用してUEFI変数に読み込まれる署名キーに依存します。たとえば、Linuxの一部のディストリビューションでは、セキュアブートを克服してunsigned秒をロードするために shim と呼ばれる小さなブートローダーが使用されていますステージブートローダーまたはカーネル。したがって、ブートローダーまたはカーネルイメージを使用してメディアに書き込むことができる人なら誰でも、それに脆弱性やマルウェアを導入することができます。

現在の多くのディストリビューションでは、shimは別のキーで署名されたコードをロードするために使用されているため、shimだけを使用しても、ブートチェーン全体が署名によって保護されているわけではありません。

参考文献

6
pabouk

セキュアブートは1つのセキュリティ技術であり、完全ではありません。セキュアブートの前に攻撃が発生する可能性があります。インテルはそのためのブートガードを作成しました。さまざまなIntelシリコンおよびファームウェアテクノロジーの理解を深めるには、このApressの本をお読みください: http://firmwaresecurity.com/tag/isbn-978-1-4302-6572-6/ また、セキュアブートの強度はOSによって異なります。次を参照してください: http://firmwaresecurity.com/2015/07/17/secure-boot-strength-varies-by -linux-implementation / ありがとう、リー http://firmwaresecurity.com/feed

3
Lee Fisher