2020/07/31

セキュアブートを妨げる GRUB2 の脆弱性「BootHole」

OS 起動 プロンプト シーケンス Linux boot

2020 年 7 月 31 日 Trevor Collins 著

Eclypsium 社は今週水曜日、数百万台のデバイスほぼすべてが影響を受ける GRUB2 の脆弱性に関するレポートを公開しました。GRUB2 は通常 Linux で使用されており、UEFI セキュアブートプロセスの制御を受け付けてから、ブートアッププログラムと、コンピュータの OS(インストールされている場合)を起動します。OS を起動する前のこのような段階でシステムを管理できるということは、GRUB2 とそれにアクセスするユーザは OS を自在に管理できるということを意味します。システムに GRUB2 がない場合でも、マルウェアが GRUB2 をインストールしてシステムを脆弱にする場合があります。通常 Microsoft の認証局による署名がない限り、GRUB に対して変更を加えることは不可能です。しかし今回の脆弱性を悪用すると、その署名プロセスを省くことができます。

この脆弱性の自体は、設定ファイル grub.cfg を解析する際のバッファオーバーフローです。このファイルには通常、セーフモードや初期化など異なるブートアッププロセスが含まれています。しかしエラーによって grub.cfg ファイルの解析プログラムが正しく終了されないと、そのままファイルの解析が継続され、バッファオーバーフローが起きます。

マルウェアがこの脆弱性を悪用するには、grub.cfg ファイルへのアクセスが必要です。つまりブートアッププロセスへのアクセスは不可能であるものの、ルートアクセス、または管理者レベルのアクセス権限を持っていることが想定されます。マルウェアは OS をクリーンインストールしても残存する場合があります。さらにたとえば、コンピュータが Linux と Windows でデュアルブートを行なっていた場合、マルウェアはユーザの操作なしで、起動プロセス中に Linux OS から Windows OS へ移動できると筆者は考えています。ウォッチガードのデバイスは、署名のないコードを一切許可しないため、この脆弱性の影響を受けません。

Microsoft は、解決策として脆弱性のある GRUB2 プログラムの証明書を失効させることもできるのかもしれませんが、プログラムアップデートのために起動する方法がなくなり、アップデートができなくなるため、結果的にそのバージョンを使用しているすべてのコンピュータが修復できなくなります。メーカーがシステムに対してアップデートをプッシュしている場合もありますが、これにも問題がある可能性があります。ご想像の通り、ブートアッププロセスというシステムの根幹に関わるアップデートは、デバイスを修復不可能にする恐れもあるからです。

マルウェアにルート権限や管理者権限がなければ、この脆弱性は悪用できないため、コンピュータをマルウェアに感染させないことが対策となります。このような脆弱性では、不審なアクティビティに注意すること以外に、一般のユーザができることはほとんどありません。Microsoft は、GRUB2 のアップデートがリリースされた後に更新された失効リストをプッシュする予定です。技術的な知識があれば、インストールされた GRUB2 をアップデートすることも可能です。Microsoft の新しい失効リストを手動でインストールすることもできます。このプロセスは大変難しくコンピュータを破損する恐れもあるため方法は掲載しませんが、技術的な知識のある管理者であれば、検索で簡単にインストラクションを見つけられるでしょう。