The Equation Group が発見されてからの啓示を考えると。それだけでなく、保証できない可能性もあります 高軌道からの核兵器でもルートキットの削除 。
どのようなプロパティ ハードドライブ これらのルートキットがファームウェアを制御/交換するのを防ぐためにハードウェアを追加できますか?
1つの解決策は、すべてのファームウェアに署名することを要求し、そのファームウェアイメージをメモリに書き込む前にデバイスに署名をチェックさせることです。私の現在のラップトップには、BIOSでこれを有効にするオプションがあります(オプションは永続的です-今有効にすると、もう無効にできなくなります。そのため、有効にしませんでした)。
ただし、多くの欠点があります。
製造元が署名に使用する秘密鍵をどのように保護しているかわからないため、誤った安心感を引き起こします。また、製造元が失敗を認めて、各顧客に「ファームウェアキーが漏洩しました」という素敵なメールを送信することはないと思います。また、鍵が漏洩しなかったとしても、NSAや他の邪悪な機関が鍵を盗んだ可能性があり、誰も知りません。
カスタムファームウェアを作成することは不可能です-彼らは営利企業であり、彼らのファームウェアはクローズドソースであるという事実には問題ありませんが、私がお金を払った自分のデバイスに必要なものをインストールできないことは間違いありませんなぜなら、NSAはすでにキーを盗んだにもかかわらず、いわゆる「セキュリティ」のためです(元のThinkpadにはワイヤレスカードPCI IDがあったため、古いThinkpadにカスタムBIOSをインストールしたことを覚えています)ホワイトリストにより、古い802.11gを11nモデルに変更できません。これは、ファームウェアの署名チェックが行われていると不可能です)。
もう1つのより良い解決策は、ファームウェアをインストールできるようにするために物理的な介入(デバイス自体のハードウェアボタンを押す)を要求することです。これには上記の欠点はありません。ファームウェアの信頼性チェックはユーザーが行う必要があり、ユーザーは自由にインストールできます。ユーザーがファームウェアをインストールするかどうかに関係なく、ボタンを押すと、デバイスは1つのファームウェアのインストールを許可してから、再度ロックします(または、何もインストールされていない場合は1分後にタイムアウトします)。
このオプションの唯一の欠点は、各デバイスに独自のハードウェアボタンがあることです。通常のデスクトップコンピューターには、BIOS/EFI(NIC、「偽の」RAIDコントローラーなど、ボードに埋め込まれている他のすべてのものを更新することがよくあります)があります。サードパーティのビデオカードのオプションROM(ビデオBIOSとも呼ばれます)、サードパーティのRAIDコントローラまたはNIC、ストレージドライブなど。
ボード上のすべてのものを1つのボタンに配線することもできますが、サードパーティのハードウェアにはすべて独自のボタンがあり、ハードウェアがコンピューターのケース内にあるために押すのが難しい場合があります。コンピュータケースを開けられないユーザーは通常、「リスク」(最小限ですが、起動可能なDOSディスクの作成は怖い)と複雑さのためにファームウェアを更新しないため、これはそれほど問題にはなりません。
理論的な解決策は、一般的に使用されるすべてのポート(SATA、PCIeなど)に、ボードのメインファームウェアフラッシュボタンに配線される専用の「ファームウェアフラッシュ」ラインを含めることを要求することです。
それを完全に防ぐことができる唯一の方法は、デバイス上に書き込み可能な不揮発性メモリを持たないことです。これに伴う問題は、ファームウェアが変更されるのを防ぎ、事態を複雑にする可能性があることです。
最近の問題は、私の理解では、ファームウェアを保持するメモリ内のスペースにアクセスするために、低レベルの読み取り/書き込みコマンドが必要なことです。これらのコマンドは公開されていない場合でも、必要に応じてブルートフォースを介して見つけることができます(アップグレード中にインターフェイスをスニッフィングしない場合)。したがって、「ファームウェアが配置されている場所への読み取り/書き込みを完全に防止することは可能ですか?」という質問がより適切に提示されると思います。これで最初の文に戻ります。
1つのオプションは、署名された証明書を実装し、製造元からの証明書をROMに保持することです。ファームウェアは、電源投入時に証明書を介して署名および確認できます。これにより、今日は存在せず、独自の問題がないわけではない多くのオーバーヘッドが追加されます。証明書が危険にさらされた場合、このような状況でどのように証明書を取り消すのですか。期限切れになった場合はどうなりますか?期限切れになりますか?また、デバイスに搭載されており、通常のI/Oではアクセスできない暗号化機能を使用するには、機能(処理とメモリ)を追加する必要があります。これらすべてが、(設計と製造の両方で)大幅なコスト増加をもたらす可能性があります。
最後のコメントとして、それをはるかに難しくすることは可能であると思いますが、エンドユーザーにとってコストを増やす価値はないでしょう。私の意見では、対抗策を講じるには非常に費用がかかり、悪用するには非常に特別に細工されたマルウェア(モデルおよびファームウェアバージョンの可能性が高い)が必要であるため、ほぼすべてのアプリケーションで実行不可能であると言えます。これは、非常に深いポケット(または納税者にまで及ぶポケット)を持っている人を除外する可能性があります。
ファームウェアをプログラムするためのスイッチまたはボタンがあるというAndréの答えが好きです。一部のデバイスにはすでにこれがあります。たとえば、多くのマザーボードには、BIOSを書き込みから保護するためのジャンパーがあります。
ファームウェアプログラムモードでデバイスが正しく機能しないように強制すると、ユーザーは何かが問題であるかどうかを確認できます。音声を出力しないオーディオデバイスや、基本的なビデオモードのみを許可するビデオカードのように。書き込み保護ジャンパーとプログラムボタンを組み合わせるのは過剰かもしれませんが、より安全です。
別のオプションは、回路基板またはICの外側に書き込みコードを刻印し、同じコードをICの内臓に永久的にエッチングすることです。ファームウェアフラッシュは、プログラミング中にこのコードを入力した場合にのみ成功します。コードをデバイス自体で読み取ることはできず、正しいかどうかを確認するだけです。これには、コードを取得するために回路基板へのアクセスが必要であり、標的型攻撃の障害にはなりません。デバイスメーカーは、デバイスのシリアル番号とそのコードのリストを共謀して提供することもできます。ただし、署名付きファームウェアおよび書き込みロックジャンパーと組み合わせると、悪意のあるファームウェアプログラミングがはるかに困難になります。
ハードウェアデバイスのCoCの標準を作成するための長期的な取り組みも役立つ場合があります。これには、接続されているコントローラーで許可されている場合にのみ、ファームウェアをPCI(e)またはUSBデバイスに送信できるようにすることが含まれます。チェーンはメインシステムのファームウェアまで続きます。 BIOSパスワードは、バイパスを許可する脆弱性がない限り、ファームウェアの変更からすべてのデバイスを保護します。
ファームウェアが危険にさらされていないことを確認する方法も同様に重要だと思います。つまり、デバイスが悪意のあるファームウェアによって操作できない方法で、ファームウェアの暗号化チェックサムを制御デバイスに報告する方法があります。これを標準化することは、ハードウェアがデリケートな状況で使用されるときに自信を植え付けるための優れた方法です。