EFIバイナリの署名の確認

EFIバイナリの署名の確認

UEFIセキュリティブートを閲覧しており、署名されたバイナリの証明書を確認したいと思います。

以下のコードは、いくつかの署名が存在することを示しています。

sbverify --list  $BOOT/EFI/BOOT/BOOTX64.EFI
warning: data remaining[1171248 vs 1334816]: gaps between PE/COFF sections?                   
signature 1
image signature issuers:
 - /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011
image signature certificates:
 - subject: /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Windows UEFI Driver Publisher
   issuer:  /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011
 - subject: /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011
   issuer:  /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation Third Party Marketplace Root

正確に間違った証明書を使用してその署名を確認したいとし、検証に失敗したいと思います。次の手順では、任意の証明書を生成し、それを使用してバイナリ署名を確認します。

openssl genpkey -algorithm RSA -out random-private-key.pem
openssl req -new -x509 -key random-private-key.pem -out random-certificate.pem -days 365 -subj "/C=US/ST=California/L=San Francisco/O=My Organization/OU=My Unit/CN=mydomain.com"
sbverify --cert random-certificate.pem  $BOOT/EFI/BOOT/BOOTX64.EFI

# Output:
# warning: data remaining[1171248 vs 1334816]: gaps between PE/COFF sections?
# Signature verification OK

これは:

  • 偽の肯定 - 先ほど生成された任意の証明書でバイナリに署名することはできません。
  • 私はsbverifyシンボルを間違って理解しました。
  • 侵入するsbverify

EFIバイナリの署名を確認する方法を知っている人はいますか?

答え1

あなたはそれで2つのことをすることができますsbverify

  • * .efi実行可能ファイルおよびその他の署名付きコード(Linuxカーネルなど)のすべての出版社を一覧表示して比較します。
[root@alma8-vm admin]# sbverify --list /boot/efi/EFI/almalinux/grubx64.efi
signature 1
image signature issuers:
 - /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing CA EV R36
image signature certificates:
 - subject: /serialNumber=5561017/jurisdictionC=US/jurisdictionST=Delaware/businessCategory=Private Organization/C=US/ST=Florida/O=AlmaLinux OS Foundation
   issuer:  /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing CA EV R36
 - subject: /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing CA EV R36
   issuer:  /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing Root R46
 - subject: /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing Root R46
   issuer:  /C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=AAA Certificate Services
[root@alma8-vm admin]# sbverify --list /boot/vmlinuz-4.18.0-477.27.2.el8_8.x86_64
signature 1
image signature issuers:
 - /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing CA EV R36
image signature certificates:
 - subject: /serialNumber=5561017/jurisdictionC=US/jurisdictionST=Delaware/businessCategory=Private Organization/C=US/ST=Florida/O=AlmaLinux OS Foundation
   issuer:  /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing CA EV R36
 - subject: /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing CA EV R36
   issuer:  /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing Root R46
 - subject: /C=GB/O=Sectigo Limited/CN=Sectigo Public Code Signing Root R46
   issuer:  /C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=AAA Certificate Services
  • 署名の確認
[root@alma8-vm admin]# sbverify /boot/efi/EFI/almalinux/grubx64.efi
Signature verification OK
[root@alma8-vm admin]# sbverify /boot/vmlinuz-4.18.0-477.27.2.el8_8.x86_64
Signature verification OK

発行者の一般名(公開鍵の指紋なし)を一覧表示することは、信頼の問題を解決するのに役立ちません。議論もありません--cert <certfile>

私が推奨する確認は、以下から署名証明書をダウンロードすることです。ホタテ組み込み証明書と比較してみてください。よく!

[root@alma8-vm admin]# sbverify --cert sectigo-ev.crt /boot/efi/EFI/almalinux/grubx64.efi
Signature verification OK
[root@alma8-vm admin]# sbverify --cert bogus.crt /boot/efi/EFI/almalinux/grubx64.efi
Signature verification OK

このような懸念を抱いている人は私たちだけではなく、開発者は反応しませんでした。https://groups.io/g/sbsigntools/message/57

関連情報