On 2015/11/9 21:57, Cohen, Eugene wrote:
Star,

The authentication status and its inheritance support in FvInfo2 and FvPpi were 
covered by the mantis we submitted to support PEI security and to be equivalent 
with DXE.
You raised another issue here to inherit authentication status from PEI to DXE.

Correct.

Currently, only verified pass FV in PEI will be processed and reported with FV 
HOB to DXE.

The FV HOB doesn't explicitly say whether the FV was verified or not.  We have 
a use case where we have one FV that contains code and is verified and another 
FV that contains some data and is not verified.  With the current FV HOB 
definitions there's no way to differentiate these two.

Curious about the FV you said is root or child FV?


The DXE core just assumes that all FVs passed through FV hobs are unsigned 
(AuthenticationStatus = 0).  So in DXE-phase security policy callbacks (part of 
EFI_SECURITY_ARCH_PROTOCOL) we are not getting accurate AuthenticationStatus 
values with which to make a decision.

So in a way this just seems wrong since the security callbacks are saying that 
FVs are unsigned when in reality there are signed and verified.

I'm thinking this could be as simple as an updated FV HOB definition that adds 
an AuthenticationStatus field.

I agree it is a gap. I have seen the mantis you filed to add FV3 HOB to include AuthenticationStatus. Then there will be FV/FV2/FV3 HOB for one FV. Seemingly, we could not to just extend FV HOB to include AuthenticationStatus, right?

Thanks,
Star


Eugene

-----Original Message-----
From: Zeng, Star [mailto:[email protected]]
Sent: Monday, November 09, 2015 6:43 AM
To: Cohen, Eugene <[email protected]>; [email protected]
Cc: Zeng, Star <[email protected]>
Subject: RE: Authentication status for signed FVs extracted in PEI

The authentication status and its inheritance support in FvInfo2 and FvPpi were 
covered by the mantis we submitted to support PEI security and to be equivalent 
with DXE.
You raised another issue here to inherit authentication status from PEI to DXE.

Currently, only verified pass FV in PEI will be processed and reported with FV 
HOB to DXE.
Your real case will have different policy to verify FV in PEI and DXE phase?

Thanks,
Star
-----Original Message-----
From: edk2-devel [mailto:[email protected]] On Behalf Of Cohen, 
Eugene
Sent: Monday, November 9, 2015 9:03 PM
To: [email protected]
Subject: Re: [edk2] Authentication status for signed FVs extracted in PEI

I raised this as an issue with PIWG.  In the meantime feel free to provide some 
historical context for why this hasn't been an issue in other implementations.

Thanks,

Eugene

-----Original Message-----
From: edk2-devel [mailto:[email protected]] On Behalf Of Cohen, 
Eugene
Sent: Friday, November 06, 2015 5:49 PM
To: [email protected]
Cc: Thompson, Mark L. (Boise IPG) <[email protected]>
Subject: Re: [edk2] Authentication status for signed FVs extracted in PEI

[Corrected the typos with a new version - proofreading is a good thing]


I'm confused about something and hope I can get some help understanding this.

If we have a signed FV that is extracted in PEI it doesn't look like the 
AuthenticationStatus gets propagated to DXE.

The hob doesn't store authentication status and the core produces FVB with 
AuthenticationStatus forced to zero, even though the FV was signed and verified.

This seems to mess up policy code in DXE because it is the AuthenticationStatus 
is not accurate.

MdeModulePkg\Core\Dxe\FwVolBlock\FwVolBlock.c, FwVolBlockDriverInit:

   while ((FvHob.Raw = GetNextHob (EFI_HOB_TYPE_FV, FvHob.Raw)) != NULL) {
     //
     // Produce an FVB protocol for it
     //
     ProduceFVBProtocolOnBuffer (FvHob.FirmwareVolume->BaseAddress, 
FvHob.FirmwareVolume->Length, NULL, 0, NULL);
     FvHob.Raw = GET_NEXT_HOB (FvHob);
   }

Note the hardcoded zero in the second-to-last argument.

Is this expected?  How would DXE policy code know if the FV was verified in 
PEI?  It looks like the HOB definitions do not propagate PEI-phase 
Authentication status forward.

Thanks,

Eugene

-----Original Message-----
From: edk2-devel [mailto:[email protected]] On Behalf Of Cohen, 
Eugene
Sent: Friday, November 06, 2015 11:12 AM
To: [email protected]
Cc: Thompson, Mark L. (Boise IPG) <[email protected]>
Subject: [edk2] Authentication status for signed FVs extracted in PEI

I'm confused about something and hope I can help some help understanding this.

If we have a signed FV that is extracted in PEI it doesn't look like the 
AuthenticationStatus gets propagated to DXE.

The hob doesn't store authentication status and the core products FVB with 
AuthenticationStatus forced to zero, even though the FV was signed and verified.

This seems to mess up policy code we want to have in DXE because it is not 
accurate.

MdeModulePkg\Core\Dxe\FwVolBlock\FwVolBlock.c, FwVolBlockDriverInit:

   while ((FvHob.Raw = GetNextHob (EFI_HOB_TYPE_FV, FvHob.Raw)) != NULL) {
     //
     // Produce an FVB protocol for it
     //
     ProduceFVBProtocolOnBuffer (FvHob.FirmwareVolume->BaseAddress, 
FvHob.FirmwareVolume->Length, NULL, 0, NULL);
     FvHob.Raw = GET_NEXT_HOB (FvHob);
   }

Is this expected?  How would DXE policy code know if the FV was verified in PEI?

Thanks,

Eugene

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel


_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to