web-dev-qa-db-ja.com

セキュアブートは実際にどのように機能しますか?

GRUB2、SecureBoot、およびカーネル署名で遊んでいます。セキュアブートでバグの可能性を見つけたと思いますが、最初にこれらのプロセスの理解を確認したいと思います。

セキュアブートが有効になっている場合、ファームウェアにロードされたキーで署名されたバイナリのみを起動できるため、すべてのブートローダーに署名する必要があります。典型的な例は、シムとGRUBです。

ブートが失敗した場合、またはインポートまたは削除するキーがある場合、ShimはMoakManagerを昼食し、それでよければ、実際のブートローダーであるGRUBを起動する必要があります。

問題は、OpenSSlで作成した新しいキーで署名したGRUBのカスタムバージョンをgrub-mkstandaloneで生成したところです。まだファームウェアにインポートしていないキーで、shimはセキュアブートからのレポートなしで起動できました。

mokutil --list-enrolledでキーをチェックしましたが、正規の証明書のみを報告しました。


したがって、要約すると:

EFIパーティションには次のものがあります。

  • canonicalによって署名され、grub-installで生成されたshimx64.efi
  • grub-mkstandaloneで生成され、独自のキーで署名されたカスタムGRUB(まだインポートされていない)grubx64.efiという名前.

起動時にSHIMはGRUBおよびGRUBをランチしてUbuntuを正常に起動できました。

一部のセキュアブートが最初のブートローダーのサインのみをチェックし、他のローダーが自分自身とプリロードしたモジュールを検証し、ユーザーが最終的にロードする責任がある場合、ここでのセキュリティの懸念は非常に高くなります。

さらにテストを行いますが、バグチケットを開く必要があるかもしれません。


何か案は?

6
JumpAlways

私はあなたの理解が正しいと信じています、exceptshimx64.efiはパッケージを介してバイナリ形式で配信されること、 notgrub-installを介してローカルに生成されます。 (grub-installは、ESPにinstallshimx64.efiである可能性があります。)ああ、MoakManagerではなくMokManagerです。

バグレポートを提出する前に、手順を再トレースし、ローカルでコンパイルされたGRUBを介して起動していることを100%確認する必要があります。たとえば、誤ってバイナリを間違った場所に置いたり、efibootmgrを実行してブート順序を調整し忘れたりするのは簡単です。 (カスタムgrubx64.efiのインストール方法については説明していません。標準のUbuntuバイナリを上書きするのですか、それとも新しいバイナリを別の場所に置いてefibootmgr経由で[およびShimのコピー]を登録しますか? )Sudo efibootmgr -vを実行して、ブートの詳細を確認できます。 BootOrderおよびBootCurrentの行に注意してください。前者は起動オプションの試行順序を示し、後者はコンピューターの起動に使用されたオプションを示します。各ブートオプションを説明するさまざまなBoot####行と番号を相互参照する必要があります。独自のGRUBをUbuntuのGRUBとは別にインストールした場合、セキュアブートエラーのためにファームウェアがサイレントにバイパスし、その後、Ubuntu Shim/GRUBに戻ったことが考えられます。見て。

別の可能性は、コンピューターでセキュアブートが実際に有効になっていないことです。この可能性は次のように確認できます。

$ hexdump /sys/firmware/efi/efivars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c 
0000000 0016 0000 0001              
0000005

この例では、出力の最初の行(0000000 0016 0000 0001)は1で終わります。これは、セキュアブートがアクティブであることを示しています。 0で終わる場合、コンピューターでセキュアブートが無効になっています。

他の可能性の1つは、ローカルキーをファームウェアのdbリストに何らかの形でインストールした可能性があることです。ただし、これは難しい作業なので、偶然に気づかずにそれを行ったことはほとんどありません。 (これを設定する方法の詳細については、 主題の私のページ を参照してください。)この可能性については、主に完全性のために言及しています。この方法でセキュアブートをマスターしようとする以前の試みの言及を省略していない限り、それは私にはほとんどありません。

バグが発生している場合は、Shimまたはファームウェアにある可能性があります。

もう1つ注意すべき点は、grub-mkstandaloneなどのGRUB固有のツールにしかなじみがないことです。私はrEFIndを管理しているので、それを使用することを好みます。そのため、GRUBツールに関する私の知識は、それほど深いものではありません。したがって、GRUB固有であるため、重要な詳細が欠落している可能性があります。

3
Rod Smith