web-dev-qa-db-ja.com

UEFIセキュアブートは「悪魔の双子」のなりすまし攻撃をどのように防止しますか?

EFIセキュアブート について学習してきました。マルウェアがブートプロセスに感染してブートローダーを上書きするのを防ぐように設計されています。署名済みの信頼できるブートローダーとOSカーネルのみが起動時に読み込まれ、実行されるようにするハードウェアレベルの保護機能があります。

今日、マルウェアは、マスターブートレコード(MBR)を悪意のあるバージョンで上書きし、それ以降のすべてのオペレーティングシステムの悪意のあるバージョンで起動する可能性があります。 UEFIセキュアブートは、マシンがブートローダーを実行するのは、署名されている場合のみであり、攻撃者が変更したブートローダーには有効な署名がないためです。つまり、UEFIセキュアブートでは、再起動すると、有効で信頼できるブートローダーとOSカーネルが実行されていることを確信できます。 UEFIセキュアブートが「ブートキット」を防ぐと言うことで、これを要約することがあります。はい、基本的なコンセプトは理にかなっています。

次のような攻撃を阻止するものを理解したい。たとえば、Windowsを実行しているとします。マシンにマルウェアが侵入し、再起動後も常駐し続けることを望んでいる攻撃者が、Windowsスタートアップ構成を変更して仮想マシン(VM)を起動するとします。 VMの内部は、変更されたWindowsイメージです-標準のWindowsカーネルとOSおよびイメージと同じように、基本的に、カーネルがプラントに変更されていることを除いて、マシンにあるものの完全なコピー起動すると、このVMが自動的に起動し、フルスクリーンモードで自動的に起動するとします)。

この攻撃は、UEFIセキュアブートの目的を覆すようです。ユーザーの観点からは、完全なデスクトップ環境でWindowsを実行しているように感じます。彼らが気づいていないのは、環境全体がマルウェアに感染しているということです。確かに、ホストオペレーティングシステムは信頼できますが(UEFIセキュアブートのおかげで)、ゲストオペレーティングシステム(VM内)は悪意のあるものであり、ユーザーは、悪意のあるゲストと対話しているのではなく、悪意のあるゲストと対話していることを明確に示す方法がありませんホスト。したがって、ユーザーは実際にホース接続されている場合、すべてが正常であると考えます。セキュリティ概念の専門家はこれを「信頼できるパス」への攻撃として認識します。コンピューターは信頼できるカーネルを起動しましたが、ユーザーは完全に信頼できない「悪魔の双子」ではなく信頼できるカーネルと対話していることを確認する方法がありません。

この攻撃を防ぐものはありますか?または、この攻撃は技術的に実行可能ですか?可能であれば、UEFIセキュアブートの背後にあるセキュリティ目標または脅威モデルに違反していますか? (より一般的には、UEFIセキュアブートの根底にあるセキュリティ目標と脅威モデルの正確な声明、およびそれが何を保証するものではないのですか?)

5
D.W.

あなたが説明する攻撃は、一種の「ダイヤモンド強盗」攻撃のように聞こえます(日常の犯罪者には少し複雑です)。 UEFIについて説明する前に、それが可能かどうかお答えしたいと思います。いいえ、そうではありません。 VMを実行しているサーバーについて話している場合、エンドユーザーはパフォーマンスの問題に気付かない可能性があります(十分な物理リソースがある場合)が、実行中の監視ソフトウェアが実行中の新しいプロセスを検出し、システム管理者が応答する可能性が高いです。優れたシステム管理者は、彼が調査すれば、うまくいけばわかるでしょう。

デスクトップユーザーの場合、マシンを再起動するとすぐに気付く可能性が高く、少し違って見えます。 VMが古いデスクトップ、インストールされているハードウェアを偽装し、VM実行中の情報を表示しない可能性があります。

しかし、問題は個人よりもテクノロジーに関するものだったと思うので、私はそう思います。この種の攻撃は、あなたが述べた理由で機能するようです:ホストOSが信頼され、セキュアブートがそのOSをロードしました。 VMプロセスは、別のプロセス(svchostなど)の内部に隠れている可能性があり、ユーザーツールと監視ツールの両方が(しばらくの間)騙される可能性があります。

あなたの最後の質問(それが何をして何を保証しないか)私はホームページ http://www.uefi.org/home/ でいくつかの情報をUEFIに見つけました。 「UEFIとは」という質問への答えは次のとおりです。

UEFI(Unified Extensible Firmware Interface)は、プリブート環境のシステムの制御(つまり、システムの電源がオンになった後、オペレーティングシステムが起動する前)をオペレーティングシステムにハンドオフするのに役立つインターフェイスの詳細な仕様になります。 Windows *やLinux *など。 UEFIは、起動時にオペレーティングシステムとプラットフォームファームウェア間のクリーンなインターフェイスを提供し、アドインカードを初期化するためのアーキテクチャに依存しないメカニズムをサポートします。

この答えから、あなたは何も約束されないと信じています。 UEFIは、ベンダーやコーダーが実装できるフレームワークです。保証をするのはベンダーとコーダー次第だと私は信じています。

4
Jeff