[FFe] Dual-signed shim
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| shim-signed (Ubuntu) |
Won't Fix
|
Undecided
|
Unassigned | ||
Bug Description
[FFe] Dual-signed shim
shim-signed package currently ships two files
/usr/lib/
/usr/lib/
The two shims are the same, but have different signatures.
.signed is signed with MS UEFI CA 2011 only
.dualsigned is signed with Canonical CA & MS UEFI CA 2011.
$ sbverify --list /usr/lib/
warning: data remaining[1177936 vs 1341560]: gaps between PE/COFF sections?
signature 1
image signature issuers:
- /C=US/ST=
image signature certificates:
- subject: /C=US/ST=
issuer: /C=US/ST=
- subject: /C=US/ST=
issuer: /C=US/ST=
$ sbverify --list /usr/lib/
warning: data remaining[1179856 vs 1343480]: gaps between PE/COFF sections?
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2017)
issuer: /C=GB/ST=Isle of Man/L=Douglas/
signature 2
image signature issuers:
- /C=US/ST=
image signature certificates:
- subject: /C=US/ST=
issuer: /C=US/ST=
- subject: /C=US/ST=
issuer: /C=US/ST=
In light of the current Boothole vulnerabilities, it is desirable to support a more constrained boot chain. Specifically, UEFI 2011 signed Canonical shim can be booted universally on most hardware but also means other shims from other vendors can boot too. But if we provide a shim signed by Canonical CA, one can remove MS UEFI 2011 key from db, add Canonical CA, and thus only boot shims provided by canonical. In such scenario machine will only be able to boot Windows and Ubuntu, and no other Linux. Furthermore Windows production key can be removed from db as well, if one wishes to disable booting Windows too.
Certain hardware manufacturers ship Canonical CA key in db already. Thus out-of-the-box shipping dual-signed shim would improve security there, by reducing attack-vectors / having more constrained TPM measurements.
I am requesting FFe to ship dualsigned shim as /usr/lib/
Regression potential is as follows:
- very old / initial implementations of Secureboot using very old UEFI SB specs from 2008 do not support multiple signatures on .efi binary. Thus this change, may result in certain older firmware unable to boot. It is not clear with hardware doesn't support multiple signatures. And whether or not the order of signatures helps at all (i.e. if MS signature or Canonical one is first)
Mitigation strategy in case of regressions:
- revert back to single-signed shim

Because there is concrete risk of regression that depends on hardware-specific testing, I do not think this is appropriate for an FFe. The dual-signed object is available and particular system configurations can manually opt into it but we should not, during feature freeze, push this out to all users by default.