rhboot / shim-review

Reviews of shim
67 stars 131 forks source link

Shim 15.4 + extra patch for EgoSecure #199

Closed EgoSecure closed 2 years ago

EgoSecure commented 3 years ago

Make sure you have provided the following information:

What organization or people are asking to have this signed:

EgoSecure is European software vendor developing Data Security products
https://egosecure.com

What product or service is this for:

EgoSecure Full Disk Encryption

Please create your shim binaries starting with the 15.4 shim release tar file:
https://github.com/rhboot/shim/releases/download/15.4/shim-15.4.tar.bz2
This matches https://github.com/rhboot/shim/releases/tag/15.4 and contains
the appropriate gnu-efi source.
Please confirm this as the origin your shim.

Yes, we use 15.4 shim release https://github.com/rhboot/shim/releases/download/15.4/shim-15.4.tar.bz2

What's the justification that this really does need to be signed for the whole world to be able to boot it:

EgoSecure Full Disk Encryption secures data on laptops by applying sector level encryption with Pre-boot authentication. We need to be signed because we want to distribute our product to our end users across the world. Our Pre-boot authentication has to support Secure Boot. We have used a Microsoft SecureBoot signed Shim since 2018

How do you manage and protect the keys used in your SHIM?

The private key is stored on hardware token with restricted access

Do you use EV certificates as embedded certificates in the SHIM?

No

If you use new vendor_db functionality, are any hashes allow-listed, and if yes: for what binaries ?

Not used

Is kernel upstream commit 75b0cea7bf307f362057cc778efe89af4c615354 present in your kernel, if you boot chain includes a Linux kernel ?

Yes, this patch is included and applied

if SHIM is loading GRUB2 bootloader, are CVEs CVE-2020-14372,
CVE-2020-25632, CVE-2020-25647, CVE-2020-27749, CVE-2020-27779,
CVE-2021-20225, CVE-2021-20233, CVE-2020-10713, CVE-2020-14308,
CVE-2020-14309, CVE-2020-14310, CVE-2020-14311, CVE-2020-15705,
( July 2020 grub2 CVE list + March 2021 grub2 CVE list )
and if you are shipping the shim_lock module CVE-2021-3418
fixed ?

GRUB bootloader is not used

"Please specifically confirm that you add a vendor specific SBAT entry for SBAT header in each binary that supports SBAT metadata
( grub2, fwupd, fwupdate, shim + all child shim binaries )" to shim review doc ?
Please provide exact SBAT entries for all SBAT binaries you are booting or planning to boot directly through shim

shim:
shim.egosecure,1,EgoSecure GmbH a Matrix42 Company,shim,15.4,https://egosecure.com

Were your old SHIM hashes provided to Microsoft ?

Yes

Did you change your certificate strategy, so that affected by CVE-2020-14372, CVE-2020-25632, CVE-2020-25647, CVE-2020-27749,
CVE-2020-27779, CVE-2021-20225, CVE-2021-20233, CVE-2020-10713,
CVE-2020-14308, CVE-2020-14309, CVE-2020-14310, CVE-2020-14311, CVE-2020-15705 ( July 2020 grub2 CVE list + March 2021 grub2 CVE list )
grub2 bootloaders can not be verified ?

GRUB bootloader is not used

What exact implementation of Secureboot in grub2 ( if this is your bootloader ) you have ?
Upstream grub2 shim_lock verifier or Downstream RHEL/Fedora/Debian/Canonical like implementation ?

GRUB bootloader is not used

What is the origin and full version number of your bootloader (GRUB or other)?

GRUB bootloader is not used

If your SHIM launches any other components, please provide further details on what is launched

The SHIM launches our pre-boot authentication component (custom second-state loader) that can perform user verification, system decryption actions, and boot a Windows OS or Linux kernel.

If your GRUB2 launches any other binaries that are not Linux kernel in SecureBoot mode,
please provide further details on what is launched and how it enforces Secureboot lockdown

GRUB bootloader is not used

If you are re-using a previously used (CA) certificate, you
will need to add the hashes of the previous GRUB2 binaries
exposed to the CVEs to vendor_dbx in shim in order to prevent
GRUB2 from being able to chainload those older GRUB2 binaries. If
you are changing to a new (CA) certificate, this does not
apply. Please describe your strategy.

GRUB bootloader is not used

How do the launched components prevent execution of unauthenticated code?

The integrity of each file in our boot chain is verified by checking the validity of the digital signature using shim's protocol. All our componets have digital signature

Does your SHIM load any loaders that support loading unsigned kernels (e.g. GRUB)?

No

What kernel are you using? Which patches does it includes to enforce Secure Boot?

Linux kernel 5.5.7, which has the all the required patches to enforce the secure boot

What changes were made since your SHIM was last signed?

We have added only one patch to fix boot on some systems
Added a patch to bypass the boot option parsing. This code failed on some systems and produced a non-bootable name for the second stage loader. Because we are using custom filename for the second stage loader, we just bypass this code with this patch.

What is the SHA256 hash of your final SHIM binary?

677a9a828a1f20db92d4e6d1d75ad17321db1dc5c3ce4504d75715c828275ed1

EgoSecure commented 3 years ago

Our previous shim review issue - Shim 15.4 for EgoSecure #169

EgoSecure commented 3 years ago

@steve-mcintyre @julian-klode Can the submission be reviewed? We need new fixes to solve the problem of our customers.

pnardini commented 3 years ago

Review Notes This submission seems to be pretty similar to the previous one, with the only obvious delta being this patch

Action Items / Questions

EgoSecure commented 3 years ago

@pnardini

* Line 695 of the build.log file contains a baseline shim hash that I cannot tie to this or a prior submission - is this from a transient binary?  I ask because the prior submission had matching hashes for the submitted shim and the locally docker-built shim in the same position of the build.log file.

It was the transient wrong file to compare with (shim.efi with sha256 1fc917c7ad66487470e466c0ad40ddd45b9f7730a4b43e1b2542627f0596bbdc) from old internal build. The file shim.efi (sha256 677a9a828a1f20db92d4e6d1d75ad17321db1dc5c3ce4504d75715c828275ed1) from our submission is the right one for reviewing. Reproducible build produces right file (sha256 677a9a828a1f20db92d4e6d1d75ad17321db1dc5c3ce4504d75715c828275ed1) Should we update the log file to the right one?

* Has the custom second stage meaningfully changed since the last submission?

No

pnardini commented 3 years ago

It was the transient wrong file to compare with (shim.efi with sha256 1fc917c7ad66487470e466c0ad40ddd45b9f7730a4b43e1b2542627f0596bbdc) from old internal build. The file shim.efi (sha256 677a9a828a1f20db92d4e6d1d75ad17321db1dc5c3ce4504d75715c828275ed1) from our submission is the right one for reviewing. Reproducible build produces right file (sha256 677a9a828a1f20db92d4e6d1d75ad17321db1dc5c3ce4504d75715c828275ed1) Should we update the log file to the right one?

That's what I figured, as I was able to reproduce the build that was submitted. It was something that gave me a brief pause in my review as I worked to understand it, so worthwhile to update the log file.

* Has the custom second stage meaningfully changed since the last submission?

No

Great. With an updated build log I think this is complete and ready for acceptance, but need to defer to one of @steve-mcintyre @julian-klode @frozencemetery (or someone else w/appropriate permissions) to officially do so.

EgoSecure commented 3 years ago

@pnardini we updated the build log file thank you a lot sorry for this error

julian-klode commented 2 years ago

I concur with @pnardini, this is accepted. Please close the issue once you received a signed binary back from MS.