PCR7 change in 15.7+ due to the switch to using MokListRT instead of MokList
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 1.1k
- Forks
- 348
- PR merge metrics
- No merged PRs in 30d
Description
Shim 15.7 switched to checking MokListRT instead of MokList to support cases when the former is extended by someone else, e.g. grub:
commit 092c2b2bbed950727e41cf450b61c794881c33e7
Author: Eric Snowberg <eric.snowberg@oracle.com>
Date: Fri Jun 17 12:37:28 2022 -0400
Reference MokListRT instead of MokList
Unfortunately, this commit also changed what's measured in PCR7 for shim builds using 'vendor_cert' (and not 'vendor_db'). Pre-change:
- EventNum: 28
PCRIndex: 7
EventType: EV_EFI_VARIABLE_AUTHORITY
...
Event:
VariableName: 605dab50-e046-4300-abb6-3dd810dd8b23
UnicodeNameLength: 4
VariableDataLength: 1119
UnicodeName: Shim
VariableData: ...
Post-change:
- EventNum: 28
PCRIndex: 7
EventType: EV_EFI_VARIABLE_AUTHORITY
...
Event:
VariableName: 605dab50-e046-4300-abb6-3dd810dd8b23
UnicodeNameLength: 9
VariableDataLength: 1135
UnicodeName: MokListRT
VariableData: ...
The reason for the change is that MokListRT gets 'vendor_cert'/'vendor_db' mirrored in it, however, shim checks MokListRT before it gets to checking 'vendor_cert' (but after 'vendor_db' so there's no change for these builds, see verify_one_signature()/check_allowlist()).
Now, the question is what can (or should) be done to this. I see the following options:
- We change the order of the checks, namely move SHIM_CERT/VENDOR_CERT check to check_allowlist() before it gets to checking MokListRT. Unfortunately, this will result in PCR7 change again.
- We do nothing and stick to the new behavior. It would probably be nice to have this documented somewhere as the discrepancy between 'vendor_db' and 'vendor_cert' is quite un-obvious.
- We eradicate 'vendor_cert' completely and make everyone use 'vendor_db' even for a single cert.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with verify_one_signature() and check_allowlist(), then compare the PCR7 measurements described for vendor_cert and vendor_db. Determine which Mok variable ordering is intended, assess the documented alternatives, and validate the chosen behavior against the shim 15.7 change. Done means the behavior is decided and the resulting PCR7 impact is documented or covered by appropriate project tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- operating-systems, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100