GRUB2 ブートローダーに、UEFI セキュア ブートのバイパスを可能にする重大な脆弱性

GRUB2 ブートローダー内 特定された 8つの脆弱性。 最も危険な 問題 (CVE-2020-10713)、コード名は BootHole です。 可能にする UEFI セキュア ブート メカニズムをバイパスし、未検証のマルウェアをインストールします。 この脆弱性の特徴は、攻撃者がデジタル署名によって証明された古い脆弱なバージョンのブータブル メディアを使用できるため、この脆弱性を排除するには GRUB2 を更新するだけでは十分ではないことです。 攻撃者は、Linux だけでなく、他のオペレーティング システムの検証プロセスも侵害する可能性があります。 Windows.

この問題はシステムを更新することによってのみ解決できます 証明書失効リスト (dbx、UEFI 失効リスト) ただし、この場合、Linux で古いインストール メディアを使用する機能は失われます。 一部の機器メーカーは、すでに失効証明書の更新リストをファームウェアに組み込んでおり、そのようなシステムでは、UEFI セキュア ブート モードでロードできるのは、Linux ディストリビューションの更新ビルドのみです。

ディストリビューションの脆弱性を排除するには、インストーラー、ブートローダー、カーネル パッケージ、fwupd ファームウェア、および shim レイヤーを更新し、新しいデジタル署名を生成する必要もあります。 ユーザーは、インストール イメージやその他のブータブル メディアを更新し、証明書失効リスト (dbx) を UEFI ファームウェアにロードする必要があります。 dbx を UEFI に更新する前は、OS に更新プログラムがインストールされているかどうかに関係なく、システムは脆弱なままです。

脆弱性 引き起こされた ブート プロセス中に任意のコードを実行するために悪用される可能性があるバッファ オーバーフロー。
この脆弱性は、grub.cfg 構成ファイルの内容を解析するときに発生します。このファイルは通常 ESP (EFI システム パーティション) にあり、管理者権限を持つ攻撃者が署名付き shim および GRUB2 実行可能ファイルの整合性を侵害することなく編集できます。 のため エラー 構成パーサー コードでは、致命的な解析エラー YY_FATAL_ERROR のハンドラーは警告を表示するだけで、プログラムを終了しませんでした。 システムへの特権アクセスが必要なため、脆弱性のリスクは軽減されますが、機器に物理的にアクセスできる場合 (独自のメディアから起動できる場合)、隠しルートキットを導入する必要がある場合があります。

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

GRUB2 ブートローダーに、UEFI セキュア ブートのバイパスを可能にする重大な脆弱性

GRUB2 のその他の脆弱性:

  • CVE-2020-14308 — grub_malloc で割り当てられたメモリ領域のサイズをチェックしないことによるバッファ オーバーフロー。
  • CVE-2020-14309 - grub_squash_read_symlink の整数オーバーフロー。割り当てられたバッファを超えてデータが書き込まれる可能性があります。
  • CVE-2020-14310 - read_section_from_string での整数オーバーフロー。割り当てられたバッファを超えてデータが書き込まれる可能性があります。
  • CVE-2020-14311 - grub_ext2_read_link の整数オーバーフロー。割り当てられたバッファを超えてデータが書き込まれる可能性があります。
  • CVE-2020-15705 — シム層を使用せずにセキュア ブート モードでダイレクト ブート中に署名されていないカーネルをロードできます。
  • CVE-2020-15706 — 実行時に関数を再定義するときに、すでに解放されたメモリ領域へのアクセス (解放後使用)。
  • CVE-2020-15707 — initrd サイズ ハンドラーでの整数オーバーフロー。

Hotfix Pack アップデートがリリースされました Debianの, Ubuntu, RHEL и SUSE。 GRUB2の場合 提案された パッチのセット。

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

コメントを追加します