ホワイトリストを使用してファームウェアのセキュリティを改善する

ファームウェアは、コンピュータセキュリティ研究の世界でより一般的にな ファームウェアレベルで動作する攻撃は発見が困難であり、ベアメタル回復シナリオでも持続する可能性があります。 このタイプのハックは、HackingTeamとVault7の悪用の調査によって十分に文書化されています。

幸いなことに、そのような攻撃を検出して防御する方法があります。 ファームウェアベースの攻撃は、通常、NVRAMに格納されたシステムファームウェアモジュールを追加または変更しようとします。 オープンソースのCHIPSECプロジェクトによって提供されるツールは、ユーザーが不正な変更を検出できるように、これらのモジュールのハッシュを生成し、検証す

CHIPSECCHISPECは、2014年に導入された、ハードウェア、デバイス、システムファームウェア、低レベルの保護メカニズム、および様々なプラットフォームコンポーネントの構 これには、ハードウェア保護と正しい構成のための簡単なテスト、ファームウェアとプラットフォームコンポーネントの脆弱性のテスト、さまざまなプラット

ホワイトリストモジュール(tools.uefi。whitelist)はchipsecを使用してバイナリファームウェアイメージからEFI実行可能ファイルのリストを抽出し、”期待される”実行可能ファイルと対応するハッシュ(。JSONファイル)は、後で比較のために使用されます。 ドキュメントは、githubのモジュールのソースコードの一部として、およびCHIPSECマニュアルで入手できます。

このプロセスでは、”known good firmware image”、好ましくは製造元が提供するファームウェアの本番バージョンから開始しており、CHIPSECを使用して既知の問題をスキャンしてから、誤って厄介なものをホワイトリストに登録していることを前提としています。 この例では、プロセスの可視性を高めるために、MinnowBoard Turbot(リリース0.97)用のオープンソースUEFIファームウェアを使用しています。

次のCHIPSECコマンドラインは、efilistという名前のホワイトリストを作成します。”既知の良好な画像”に基づくjson(platform_fw.ビン):

python chipsec_main.py -i -n -m tools.uefi.whitelist -a generate,efilist.json,platform_fw.bin

Ubuntu LinuxのCHIPSEC

このプロセスをMinnowBoard Turbot0.97ファームウェアのx64″release”および”debug”イメージに適用すると、次のホワイトリストが生成されます:

  • MNW2MAX1.64.0097D01.1709211100.bin(UEFI x64ファームウェア,デバッグモード)-X64D97_Whitelist.json
  • MNW2MAX1.64.009701.1709211052.bin(UEFI x64ファームウェア,リリースモード)-X64R97_Whitelist.json

(読者のための運動: ファームウェアイメージをダウンロードし、CHIPSECを実行し、ホワイトリストが一致するかどうかを確認してください)

結果のJSONホワイトリストファイルはバイナリファ CHIPSECは、特定の実行可能ファイルをホワイトリストまたはブラックリストに登録するために使用することができ、個々のファームウェアコンポーネ

ホワイトリストの投稿

あなたがシステムメーカーだったら、顧客検証のためにこれらのホワイトリストを公開することができます。 ただし、検証のためにファイルに署名することをお勧めします。 エンドユーザーが取得したホワイトリストが公式のホワイトリストであることを保証するために、分離された署名を使用してGPGで署名することがで:

gpg –detach-sign <file>

さらに、HTTPS経由で配信される場合は、システム製造元の既知のドメイン名の証明書を認証する必要があります。 また、不正なリストが監査で使用されるのを防ぐために、IT組織は内部的に生成されたホワイトリストに署名することをお勧めします。

ホワイトリストの確認

デタッチされた署名が利用可能な場合は、GPGを使用してホワイトリストファイルを確認できます:

gpg –verify <file>

ホワイトリストの信頼性が確認されたら、ユーザーはCHIPSECを使用してプラットフォームファームウェアのイメージを撮影する必要があります。 このコマンドラインでは、user_fwを生成するために’dump’コマンドを使用しました。ビン:

python chipsec_util.py spi dump user_fw.bin

これで、CHIPSECを使用して、プラットフォームのファームウェアイメージを関連するホワイトリストと照合することができます。 この例では、Minnowboard Turbotのx64″release”イメージに対して検証します0.97:

python chipsec_main.py -i -n -m tools.uefi.whitelist -a check,X64REL_whitelist.json,user_fw.bin

この時点で、CHIPSECは「合格」または「警告」ステータスを返します。 テストが”PASSED”を返した場合、すべてのハッシュがホワイトリストで見つかり、期待値と一致しました。 テストが”警告”を返した場合、何かが異なっていました。 “警告”は、セキュリティ上の脅威をすぐに示すものではありません(例:ユーザーが製造元の最新のファームウェアに更新した可能性があります)が、変更されたフ

制限

CHIPSECのようなツールを使用すると、セキュリティを向上させることができますが、システムを絶対に安全にすることはできず、これらの手順はすべての可能性のある攻撃から防御することはできません。 ホワイトリストの結果を解釈する際に考慮すべきいくつかの制限があります:

  • CHIPSECが理解していないカスタマイズされたまたは独自の画像包装方法があるかもしれません。 これにより、一部のモジュールが除外される可能性があるため、ホワイトリストの比較中に対応する変更が見逃される可能性があります。
  • 既に侵害されたシステム上で実行されているソフトウェアはだまされる可能性があります。 システムがすでに侵害されている場合、CHIPSECおよび類似のソフトウェアは信頼できる指標を生成しない可能性があります。

概要

chipsecがホワイトリストを生成する機能は、ファームウェアサプライチェーンを検証するための方法を提供します。 メーカーはこれらのツールを活用して、ユーザーが公式のファームウェアリリースを確認できるようにしたり、IT管理者は信頼できるイメージに基づいて内部監査

コメントを残す

メールアドレスが公開されることはありません。