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

당신은 그것으로 두 가지 일을 할 수 있습니다 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

관련 정보