UEFI セキュア ブートをバイパスできる GRUB2 の脆弱性

GRUB2 ブートローダーの 7 件の脆弱性が修正されました。これにより、UEFI セキュア ブート メカニズムをバイパスして未検証のコードを実行できるようになります。たとえば、ブートローダーまたはカーネル レベルでマルウェアが実行される可能性があります。 さらに、シム層には 3 つの脆弱性があり、これにより UEFI セキュア ブートもバイパスできます。 この脆弱性グループは、ブートローダーで以前に特定された同様の問題と同様に、「Boothole XNUMX」というコードネームで呼ばれていました。

GRUB2 および shim の問題をトラブルシューティングするために、ディストリビューションは、GRUB2、shim、および fwupd でサポートされている SBAT (UEFI Secure Boot Advanced Targeting) メカニズムを使用できるようになります。 SBAT は Microsoft と共同開発され、メーカー、製品、コンポーネント、バージョンに関する情報を含む追加のメタデータを UEFI コンポーネントの実行可能ファイルに追加することが含まれます。 指定されたメタデータはデジタル署名で証明されており、UEFI セキュア ブートの許可または禁止コンポーネントのリストに個別に含めることができます。

ほとんどの Linux ディストリビューションは、UEFI セキュア ブート モードでの検証済みブートのために、Microsoft によってデジタル署名された小さな shim レイヤーを使用します。 この層は、独自の証明書を使用して GRUB2 を検証します。これにより、ディストリビューション開発者は、すべてのカーネルと GRUB アップデートを Microsoft によって認定される必要がなくなります。 GRUB2 の脆弱性により、シム検証が成功した後、オペレーティング システムをロードする前の段階でコードが実行され、セキュア ブート モードがアクティブなときに信頼チェーンに割り込み、以降のブート プロセスを完全に制御できるようになります。別の OS をロードし、オペレーティング システム コンポーネント システムを変更し、ロックダウン保護をバイパスします。

ブートローダーの問題を修正するには、ディストリビューションで新しい内部デジタル署名を作成し、インストーラー、ブートローダー、カーネル パッケージ、fwupd ファームウェア、および shim レイヤーを更新する必要があります。 SBAT が導入される前は、証明書失効リスト (dbx、UEFI 失効リスト) を更新することが、脆弱性を完全にブロックするための前提条件でした。攻撃者は、使用されているオペレーティング システムに関係なく、古い脆弱なバージョンの GRUB2 が含まれるブータブル メディアを使用する可能性があったからです。デジタル署名によって認証され、UEFI セキュア ブートを侵害します。

SBAT を使用すると、署名を取り消す代わりに、セキュア ブートのキーを取り消すことなく、個々のコンポーネントのバージョン番号に対する署名の使用をブロックできます。 SBAT による脆弱性のブロックには、UEFI 証明書失効リスト (dbx) の使用は必要ありませんが、内部キーを置き換えて署名を生成し、GRUB2、shim、およびディストリビューションによって提供されるその他のブート アーティファクトを更新するレベルで実行されます。 現在、SBAT サポートは、最も一般的な Linux ディストリビューションにすでに追加されています。

特定された脆弱性:

  • CVE-2021-3696、CVE-2021-3695 は、特別に設計された PNG 画像を処理する際のヒープベースのバッファ オーバーフローであり、理論的には、攻撃者のコードを実行し、UEFI セキュア ブートをバイパスするために使用される可能性があります。 機能するエクスプロイトを作成するには、多数の要素とメモリ レイアウトに関する情報の利用可能性を考慮する必要があるため、この問題を悪用するのは困難であることに注意してください。
  • CVE-2021-3697 - JPEG 画像処理コードのバッファ アンダーフロー。 この問題を悪用するにはメモリ レイアウトに関する知識が必要で、その複雑さは PNG の問題 (CVSS 7.5) とほぼ同じレベルです。
  • CVE-2022-28733 - grub_net_recv_ip4_packets() 関数の整数オーバーフローにより、特別に作成された IP パケットの送信によって rsm->total_len パラメータが影響を受ける可能性があります。 この問題は、提示された脆弱性の中で最も危険なものとしてマークされています (CVSS 8.1)。 この脆弱性が悪用されると、意図的に小さいメモリ サイズを割り当てることで、バッファ境界を越えてデータを書き込むことが可能になります。
  • CVE-2022-28734 - ストリップされた HTTP ヘッダーを処理するときのシングルバイト バッファ オーバーフロー。 問題により、特別に作成された HTTP リクエストを解析するときに、GRUB2 メタデータの破損 (バッファの終わりの直後に null バイトが書き込まれる) が発生する可能性があります。
  • CVE-2022-28735 shim_lock ベリファイアの問題により、カーネル以外のファイルのロードが可能になります。 この脆弱性を利用して、署名されていないカーネル モジュールや未検証のコードを UEFI セキュア ブート モードでロードすることができます。
  • CVE-2022-28736 チェーンローダー コマンドの再実行により、grub_cmd_chainloader() 関数で既に解放されたメモリ アクセスが、GRUB2 でサポートされていないオペレーティング システムの起動に使用されます。 攻撃者が GRUB2 のメモリ割り当てを決定できる場合、悪用によりコードが実行される可能性があります。
  • CVE-2022-28737 - 細工された EFI イメージをロードして実行するときに、handle_image() 関数で shim レイヤーのバッファ オーバーフローが発生します。

出所: オープンネット.ru

コメントを追加します