microsoft / MSRSec

Security and Privacy Research at Microsoft
MIT License
37 stars 28 forks source link

Default variables #22

Open dmcilvaney opened 5 years ago

dmcilvaney commented 5 years ago

Allow the Authvar TA to enforce a set of default variables when it is first initialized.

These variables are defined in a JSON file, and encoded into a generated C file at compile time via a python script.

The behaviour can be turned on via CFG_AUTHVARS_DEFAULT_VARS=y. A pair of example JSON files are included, one sets a simple NV variable, while the other provisions a set of secure boot variables.

TODO: Handle partial initialization. Either set an initialization complete flag, or don't persist these writes until we ar done, or check each default variable? We don't want to get halfway through writing the variables then die. But also want these variables to be treated like normal variables once they are written.

dmcilvaney commented 5 years ago

As for complexity, this is completely opt-in and hooked into an existing OP-TEE build system flow (gensrcs which generates source files on demand), so hopefully it won't affect any other components. I also made a point to only use the external APIs so this shouldn't be affected by changes to the internal functioning of the TA.

This is definatly a critical step in a Windows secure boot path (verifying signatures from ROM all the way to Windows), and enforcing this with the TA itself seems like the most secure method.