-
Notifications
You must be signed in to change notification settings - Fork 332
Open
Milestone
Description
The gist here is that shim's load_image()/start_image() and verification protocol could be much more straightforward:
- when shim starts, it should replace
BS->LoadImage(),BS->StartImage(),BS->Exit(), andBS->ExitBootServices()with its own, likereplacements.cdoes now - the replacement should transparently enforce the verification protocol
load_image()should install a handle on eachEFI_LOADED_IMAGEit returns to identify that it was created by this particular instance- the handle guid should be generated at runtime using a SHA2 digest of some load address, so that stacked invocations are separate
start_image()should look for the handle, and if it's not there (meaning thisEFI_LOADED_IMAGEwas not created by this instance of shim'sload_image()), defer to thestart_image()implementation it replaced at startup- shim also needs to register a protocol with a well known GUID that has these functions in it, so that a nested shim invocation can defer to using them safely rather than installing its own.
- it may be useful to also implement a
UEFI volatile keysprotocol, so consumers can register their own trust anchors during the boot sequence.
Metadata
Metadata
Assignees
Labels
No labels