BootHoleの脆弱性とUbuntuの対応方針
UEFIセキュアブートを回避する「BootHole」の脆弱性とUbuntuの対応方針を紹介します。最新情報を入手するには
「BootHole」の対応と「Ubuntu」の対応方針に関する詳細及び最新情報は、以下を参照してください。- GRUB2 UEFI Secure Boot Bypass (aka There’s a Hole in the Boot/BootHole) (CVE-2020-10713)
- Mitigating BootHole – ‘There’s a hole in the boot’ – CVE-2020-10713 and related vulnerabilities
GRUB2の脆弱性
「BootHole」は「GRUB2」で発見された脆弱性です。「GRUB2」は「Linux」で幅広く利用されているブートローダー及びブートマネージャーです。
「GRUB2」の主な役割はOSを起動することであり、「Ubuntu」などOSが起動する前に起動するソフトウェアです。
署名チェックを回避できるようになる
管理者権限を持つ攻撃者やマシン(PC)に物理的にアクセス可能な攻撃者は、本脆弱性を利用し「GRUB2」モジュールの署名チェックを回避できるようになります。署名チェックを回避することで信頼された署名が施されていない任意の「GRUB2」モジュールを読み込めるようになり、UEFIセキュアブートによるセキュリティーの仕組みを回避することができます。
CVE
「CVE」は脆弱性を識別するための識別子です。本脆弱性は以下の「CVE」で識別及び構成されています。
- CVE-2020-10713
- CVE-2020-14308
- CVE-2020-14309
- CVE-2020-14310
- CVE-2020-14311
- CVE-2020-15705
- CVE-2020-15706
- CVE-2020-15707
GRUB2のアップデート
すでに「GRUB2」のアップデートがリリースされています。「ソフトウェアの更新」を起動して「GRUB2」をアップデートしてください。
対応している各パッケージのバージョンは以下のとおりです。
OS | grub2 | grub2-signed |
---|---|---|
Ubuntu 20.04 LTS | grub2 2.04-1ubuntu26.1 | grub2-signed 1.142.3 |
Ubuntu 18.04 LTS | grub2 2.02-2ubuntu8.16 | grub2-signed 1.93.18 |
Ubuntu 16.04 LTS | grub2 2.02~beta2-36ubuntu3.26 | grub2-signed 1.66.26 |
Ubuntu 14.04 ESM | grub2 2.02~beta2-9ubuntu1.20 | grub2-signed 1.34.22 |
GRUB2のアップデートによりOSが起動しなくなった場合は
「GRUB2」のアップデートによりOSが起動しなくなった場合は、「grub2」と「grub2-signed」パッケージを以前のバージョンにダウングレードする方法があります。以前のバージョンはOSのバージョンにより異なります。
OS | grub2 | grub2-signed |
---|---|---|
Ubuntu 20.04 LTS | grub2 2.04-1ubuntu26 | grub2-signed 1.142.1 |
Ubuntu 18.04 LTS | grub2 2.02-2ubuntu8.15 | grub2-signed 1.93.16 |
Ubuntu 16.04 LTS | grub2 2.02~beta2-36ubuntu3.23 | grub2-signed 1.66.23 |
Ubuntu 14.04 ESM | grub2 2.02~beta2-9ubuntu1.17 | grub2-signed 1.34.20 |
例えばPCを利用している場合、ライブセッション上でダウングレードを実行します。
詳細は以下リンク先の「Recovery」を参照してください。
Cloud及びMAASで起動に失敗する可能性
「Cloud」及び「MAAS」向けイメージで起動に失敗する可能性があります。不具合の内容や回避策は、以下リンク先の「Known issues」を参照してください。
DBXのアップデートが必要
本脆弱性に対応するには「GRUB2」のアップデートだけでなく、「UEFI Revocation List(DBX)」のアップデートも必要です。「DBX」のアップデートにより、本脆弱性を含む「GRUB2」の読み込みを拒否します。
Ubuntuの対応
「Ubuntu」では、本脆弱性を含む「GRUB2」の署名に使用していた2012 Canonical UEFI署名鍵を「DBX」に追加することで、その「GRUB2」の読み込みを拒否します。本脆弱性に対応した「GRUB2」では、新しい2017 Canonical UEFI署名鍵で「GRUB2」バイナリーを署名しており、今後はこちらの鍵で検証が行われます。
DBXのアップデートはこれから実施される
「DBX」のアップデートは「secureboot-db」パッケージのアップデートにより、「DBX」がアップデートされます。現在「secureboot-db」のテストが実施されており、「secureboot-db」のアップデートは後日リリースされる予定です。
自分でアップデートする場合は
「secureboot-db」のアップデートが待てない場合は、「UEFI Revocation List File」を以下から入手し「DBX」を自分でアップデートすることも可能です。OSを複数インストールしている場合は
OSを複数インストールし、デュアルブート/マルチブート環境を構築している場合は、「DBX」のアップデートに注意が必要です。上記で紹介したように以前の署名鍵が無効化されるため、無効化された署名鍵で署名された「GRUB2」及びOSは起動できなくなります。
「UEFI」の設定は全OSで共有される設定であるため、インストールしたOSのアップデート状況及び本件に関する対応状況を事前に把握しておく必要があります。
基本は事前にOSを最新の状態にアップデートしておくことです。
Ubuntu 16.04 LTSについて
「Ubuntu 16.04 LTS」が提供する「grub2」及び「grub2-signed」は、「FIPS」向け「Linux kernel」が署名されていないため、署名の検証を行っていません。今後「FIPS」向け「Linux kernel」でも署名が行われ、「Ubuntu 16.04 LTS」が提供する「grub2」及び「grub2-signed」でも署名による検証が実施されるようになる予定です。
「FIPS」向け「Linux kernel」を利用しセキュアブートを有効にしている環境では、「FIPS」向け「Linux kernel」のアップデートが提供されるまで「grub2」及び「grub2-signed」のアップデートを抑制するため、「FIPS」リポジトリーをピン留めしておく方法が推奨されます。
$ cat <<EOF | sudo tee /etc/apt/preferences.d/ubuntu-fips
Package: *
Pin: release o=LP-PPA-ubuntu-advantage-fips, n=xenial
Pin-Priority: 1001
EOF
$ sudo apt-get update
Package: *
Pin: release o=LP-PPA-ubuntu-advantage-fips, n=xenial
Pin-Priority: 1001
EOF
$ sudo apt-get update