ACPI Secure Boot の脆弱性 - GRUB 2 - (CVE-2020-14372)

Public Date: March 1, 2021, 10:36
更新 May 10, 2022, 18:21 - Chinese, Simplified 英語 French Korean
Resolved 状態
Moderate Impact

Insights vulnerability analysis

View exposed systems

Red Hat は、Red Hat Enterprise Linux (RHEL) を含む Red Hat 製品に影響を与える GRUB 2 ブートローダーの不具合について認識しています。この不具合によって、すでにシステムに存在する攻撃者は Secure Boot のセキュリティーを回避して未署名のカーネルモジュールをロードすることが可能になります。この脆弱性は、コンピューターの起動に使用されるソフトウェアを検証してシステムを保護する UEFI Secure Boot を使用しているシステムにのみ影響します。この問題には、セキュリティー上の影響度が「中程度の影響 」の CVE-2020-14372 が割り当てられました。影響を受けるバージョンをお使いのお客様は、更新を適用することが推奨されます。 

以下の Red Hat 製品のバージョンおよびコンテナーは、直接的または潜在的な影響を受けます。

  • Red Hat Enterprise Linux 7

  • Red Hat Enterprise Linux 8

  • Red Hat Enterprise Atomic Host

  • Red Hat OpenShift Container Platform 4 [1]

[1] これらの製品には、Red Hat Enterprise Linux (RHEL) のコンテンツが含まれ、RHEL のアドバイザリーがリリースされた直後に更新されたコンテンツのアドバイザリーがリリースされる予定です。

  • Red Hat Enterprise Linux のベースイメージを使用する製品コンテナー。この不具合の修正を追加するために、ベースイメージが更新されます。コンテナーが最新の状態であるようにしてください。Red Hat Container Catalog の一部である Container Health Index を使用すると、Red Hat コンテナーのセキュリティー状態を確認できます。

  • RHEL チャンネルからパッケージを取得する製品。これらの製品環境で、基礎となる Red Hat Enterprise Linux パッケージが最新の状態であるようにしてください。

現在ご使用のシステムにこの不具合による脆弱性が存在するかどうかを判断するには、以下の「診断」セクションを参照してください。さらに、自動修正の Ansible Playbook もご利用いただけます。

CVE-2020-14372 では、攻撃者は GRUB 2 の脆弱性を悪用して、Linux カーネルのロード後に Secure Boot の仕組みを回避する可能性があります。攻撃者は、再起動後にカスタムの ACPI (Advanced Configuration an Power Interface) テーブルをロードするように grub を指示し (設定ファイルから)、この不具合を悪用します。この ACPI テーブルでカーネルのロックダウンを無効にし、さらに非署名のコードをカーネルスペースにロードできると、システムのデータの整合性、機密性、および可用性が侵害される可能性があります。

この脆弱性は Secure Boot を使用する環境のみに影響し、権限の昇格が必要なことに注意してください。攻撃者がこの脆弱性を悪用するには、物理的に制御を行える状況または root レベルの権限が事前に必要になります。 

注記: 準備が整い次第、shim の更新がリリースされます。これには、SBAT 技術が導入されています (SBAT の詳細は「背景情報」を参照してください)。これにより、shim の更新がリリース前に適切にテストされるようになり、起動システムにバグが取り込まれないようにします。

この脆弱性に対する軽減策はありません。

GRUB 2 ブートローダーは、ブートローダーの動作変更や、機能性の拡張に使用するモジュールおよびコマンドを複数サポートしています。Secure Boot を使用してシステムを起動すると、すべてのロードモジュールは Secure Boot に準拠し、ユーザーによる非署名コードのロードを拒否します。この脆弱性によって、GRUB 2 の ACPI コマンドオプションで Secure Boot の制限を無視することが可能になります。悪意のあるエージェントは、環境の変更を可能にする改ざんされた ACPI テーブルをロードすることで、Secure Boot を回避できるようにすることができます。

ローカルの root 権限を持つ攻撃者は、SSDT (Secondary System Description Table) をシステムに配置し、grub 設定ファイルを変更して、悪意のある SSDT がロードされるようにすることができます。その後、改ざんされた ACPI テーブルはカーネルによって実行され、カーネルロックダウン変数が上書きされます。よって、攻撃者は非署名のカーネルモジュールをロードし、非署名コードに対して kexec を実行することができます。 

これには、shim のハッシュを無効にする必要があります。本脆弱性の公開にあたり、SBAT (Secure Boot Advanced Targeting) と呼ばれる新技術が数週間以内に shim パッケージの一部としてリリースされる予定です。SBAT は、このプロセスでこれまで dbxtool パッケージによって処理された機能の代わりに使用されます。詳細は、「背景情報」を参照してください。 

ACPI および SSDT に関する情報は、本記事の「参考資料」を参照してください。 

GRUB 2 で、Secure Boot が有効な場合に ACPI コマンドの使用が誤って有効になる不具合が見つかりました。この不具合により、アクセス権限を持つ攻撃者は、Linux カーネルロックダウン変数の内容を直接メモリーに上書きするコードが含まれる SSDT (Secondary System Description Table) を作成できるようになります。さらに、このテーブルはカーネルによってロードおよび実行され、Secure Boot のロックダウンが無効になるため、攻撃者は非署名コードをロードできるようになります。この脆弱性では、データの機密性および整合性、システムの可用性への影響が最も懸念されます。 

2021 年 3 月 2 日に、GRUB 2 に関連する他の問題が 6 件公開されました。セキュリティー上の影響度はすべて「中程度の影響」と評価されています。詳細は、関連する CVE のページを参照してください。

  • CVE-2020-25632 grub2: use-after-free in rmmod command

  • CVE-2020-25647 grub2: out-of-bound write in grub_usb_device_initialize()

  • CVE-2020-27749 grub2: Stack buffer overflow in grub_parser_split_cmdline

  • CVE-2020-27779 grub2: cutmem command allows privileged user to remove memory regions when Secure Boot is enabled

  • CVE-2021-20225 grub2: heap out-of-bounds write in short form option parser

  • CVE-2021-20233 grub2: heap out-of-bound write due to mis-calculation of space required for quoting

Secure Boot とその仕組みに関する詳細は、記事「What is UEFI Secure Boot and how it works?」を参照してください。

ブートホール の問題が 2020 年半ばに公開され、既存の署名付きのバイナリーや証明書のローテーションが大量に取り消しされたため、shim および grub の更新が中断され、DBX スペースの消費が大幅に増加しました。 

その結果、ブートパスに関係するコンポーネントは UEFI ファームウェアよりも迅速かつ容易に高性能化できるため、UEFI を取り消すメカニズムが必要になりました。本脆弱性の公開にあたり、UEFI の SBAT (Secure Boot Advanced Targeting) モデルと呼ばれる新しい世代ベースの取り消しメカニズムが shim パッケージ内に導入され、数週間以内にリリースされる予定です。このメカニズムは、セキュリティーの侵害を受けたブートチェーンコンポーネントの取り消しを容易にします。 

SBAT は、Linux コミュニティーと Microsoft が共同して開発されました。ベンダー、製品ファミリー、製品、コンポーネント、バージョン、および世代に関する情報を提供するため、UEFI バイナリーすべてで新しいメタデータが採用されました。このメタデータはデジタル署名され、UEFI Secure Boot メカニズムからさらに許可リストおよび拒否リストに組み込むことができます。 

ブートチェーンツールにはグローバルな世代番号が含まれるため、今後の取り消しイベントも考慮します。そのため、取り消しリストに単一のメタデータエントリーを指定するだけで、複数のハッシュまたは署名エントリーを置き換えることが可能です。 

SBAT に関する技術的な詳細は、「UEFI shim bootloader secure boot life-cycle improvements」を参照してください。

SBAT メカニズムの変更により、現在のキーはアクティブな状態を維持し、ブートが可能であるため、Red Hat は Secure Boot キーをローテーションし、信頼できるすべてのコンポーネント (パッケージ: kernel、shim、grub2、および fwupd) を再署名する必要はありません。

Red Hat Enterprise Linux (RHEL) 7 および 8、Red Hat Enterprise Atomic Host、および RHEL CoreOS (Openshift Container Platform 4 の一部) には脆弱なバージョンの GRUB 2 が含まれています。 

影響のあるバージョンの Red Hat 製品をご使用のお客様は、エラータが入手可能になり次第、該当製品を更新することが強く推奨されます。

製品

コンポーネント

アドバイザリー/更新

Red Hat Enterprise Linux 8 

grub2

RHSA-2021:0696

Red Hat Enterprise Linux 8 

shim

保留中 [1]

Red Hat Enterprise Linux 8.2.0 Extended Update Support [2]

grub2

RHSA-2021:0697

Red Hat Enterprise Linux 8.2.0 Extended Update Support [2]

shim

保留中 [1]

Red Hat Enterprise Linux 8.1.0 Extended Update Support [2]

grub2

RHSA-2021:0698

Red Hat Enterprise Linux 8.1.0 Extended Update Support [2]

shim

保留中 [1]

Red Hat Enterprise Linux 7

grub2

RHSA-2021:0699

Red Hat Enterprise Linux 7

shim

保留中 [1]

Red Hat Enterprise Linux 7.7 Extended Update Support [2]

grub2

RHSA-2021:0700

Red Hat Enterprise Linux 7.7 Extended Update Support [2]

shim

保留中 [1]

Red Hat Enterprise Linux 7.6 Extended Update Support [2]

grub2

RHSA-2021:0701

Red Hat Enterprise Linux 7.6 Extended Update Support [2]

shim

保留中 [1]

Red Hat Enterprise Linux 7.4 Update Services for SAP Solutions, Advanced Update Support [3],[4]

grub2

RHSA-2021:0702

Red Hat Enterprise Linux 7.4 Update Services for SAP Solutions, Advanced Update Support [3],[4]

shim

保留中 [1]

Red Hat Enterprise Linux 7.3 Advanced Update Support [4]

grub2

RHSA-2021:0703

Red Hat Enterprise Linux 7.3 Advanced Update Support [4]

shim

保留中 [1]

Red Hat Enterprise Linux 7.2 Advanced Update Support [4]

grub2

RHSA-2021:0704

Red Hat Enterprise Linux 7.2 Advanced Update Support [4]

shim

保留中 [1]

RHEL Atomic Host

Image

保留中 [1]

Red Hat OpenShift Container Platform 4.6 [7]

Red Hat CoreOS

保留中 [1]


[1] 更新の公開後にアドバイザリー/更新のリンクが追加されます。

[2] Red Hat Enterprise Linux Extended Update Support サブスクリプションとは何ですか?

[3] Advanced mission critical Update Support (AUS) とは何ですか?

[4] Red Hat Enterprise Linux for SAP Solutions サブスクリプションとは何ですか?

[5] このパッチを取得するには、有効な 延長ライフサイクルサポート (ELS) サブスクリプションが必要です。お持ちのアカウントに有効な ELS サブスクリプションがない場合は、Red Hat の営業部門または営業担当者に お問い合わせ ください。

[6] Red Hat Enterprise Linux のベースイメージを使用する製品コンテナー。この不具合の修正を追加するために、ベースイメージが更新されます。コンテナーが最新の状態であるようにしてください。Red Hat Container Catalog の一部である Container Health Index を使用すると、Red Hat コンテナーのセキュリティー状態を確認できます。

[7] 影響を受ける Red Hat CoreOS コンポーネントは、RHEL のコンテンツを使用し、Red Hat OpenShift Container Platform のアドバイザリーとして再ビルドおよびリリースされる予定です。

以下の脆弱性検出スクリプトを使用すると、現在ご使用のシステムにこの不具合による脆弱性が存在するかどうかを判断できます。正規のスクリプトであることを確認する場合は、OpenPGP 分離署名 もダウンロードします。検証にGPG 署名を使用する方法 と手順は、カスタマーポータルで確認できます。

バージョン 1.0

Ansible Playbook は以下で使用できます。この Playbook は関連するパッケージをすべて更新します。この Playbook を使用するには、更新するホストを HOSTS エクストラ変数 (extra var) で指定します。

ansible-playbook -e HOSTS=<myhosts> CVE-2020-14372-update_fixit.yml

正規の Playbook であることを確認するには、OpenPGP 分離署名 もダウンロードします。検証にGPG 署名を使用する方法 と手順は、カスタマーポータルで確認できます。

バージョン 1.0

Red Hat は、この脆弱性を発見し、報告していただいた Máté Kukri 氏に感謝いたします。また、Red Hat は本問題の対応に協力していただいた業界のパートナーならびに GNU GRUB コミュニティーに感謝いたします。

GPG を使用して Product Security の署名済みコンテンツを検証する方法

ブートホールの脆弱性 - GRUB 2 ブートローダー - CVE-2020-10713

GRUB の ACPI コマンドラインの使用方法

ACPI 内での SSDT オーバーレイの使用




Comments