[Skiboot] [PATCH] libstb/secureboot: Disable secureboot in OPAL by nvram

hellerda hellerda at linux.vnet.ibm.com
Sat May 12 02:40:02 AEST 2018


On 5/11/2018 12:20 PM, Claudio Carvalho wrote:
> 
> 
> On 11/05/2018 12:46, hellerda wrote:
>>
>> On 5/11/2018 10:29 AM, ppaidipe wrote:
>>> On 2018-05-11 18:49, hellerda wrote:
>>>> On 5/11/2018 9:09 AM, ppaidipe wrote:
>>>>> On 2018-05-11 18:24, Claudio Carvalho wrote:
>>>>>> On 11/05/2018 09:33, ppaidipe wrote:
>>>>>>> On 2018-05-11 17:47, Claudio Carvalho wrote:
>>>>>>>> ---
>>>>>>>> Claudio Carvalho
>>>>>>>> Linux Security Development - IBM LTC
>>>>>>>>
>>>>>>>>> ----- Original message -----
>>>>>>>>> From: ppaidipe <ppaidipe at linux.vnet.ibm.com>
>>>>>>>>> To: Nayna Jain <nayna at linux.vnet.ibm.com>
>>>>>>>>> Cc: skiboot at lists.ozlabs.org, George Wilson <gcwilson at us.ibm.com>,
>>>>>>>>> Claudio Carvalho/Brazil/IBM at IBMBR, hellerda at us.ibm.com,
>>>>>>>>> erichte at us.ibm.com, sarahw at us.ibm.com
>>>>>>>>> Subject: Re: [Skiboot] [PATCH] libstb/secureboot: Disable 
>>>>>>>>> secureboot
>>>>>>>>> in OPAL by nvram
>>>>>>>>> Date: Fri, May 11, 2018 9:04 AM
>>>>>>>>>
>>>>>>>>> On 2018-05-11 16:52, Nayna Jain wrote:
>>>>>>>>>> On 05/09/2018 02:40 PM, Pridhiviraj Paidipeddi wrote:
>>>>>>>>>>> Currently custom debug petitboot kernels failed to boot on
>>>>>>>>> secureboot
>>>>>>>>>>> enabled systems as the key verification fails results in
>>>>>>>>> enforcing the
>>>>>>>>>>> boot. Due to which debugging any problems in petitboot kernel in
>>>>>>>>>>> secure
>>>>>>>>>>> boot enabled systems become hard.
>>>>>>>>>>> This patch provides a way to disable secureboot in OPAL by using
>>>>>>>>> below
>>>>>>>>>>> nvram command.
>>>>>>>>>>
>>>>>>>>>> Petitboot verification should not be disabled if firmware secure
>>>>>>>>> boot
>>>>>>>>>> is on. Its only Host OS kernel
>>>>>>>>>> for which we can have the switch.
>>>>>>>>>>
>>>>>>>>>> This patch can result in a loophole where someone as application
>>>>>>>>> user
>>>>>>>>>> can disable
>>>>>>>>>> verification of petitboot kernel using nvram utility.
>>>>>>>>>
>>>>>>>>> Yeah, agree, but this is really a debug hack, without that 
>>>>>>>>> there are
>>>>>>>>> bugs related to keys
>>>>>>>>> in upstream vs vendor released firmware, due to which verification
>>>>>>>>> fails
>>>>>>>>> and boot enforce
>>>>>>>>> happening on secureboot enabled systems,
>>>>>>>>
>>>>>>>> I'm not sure if I know what bug you are talking about here. Can you
>>>>>>>> elaborate more on that?
>>>>>>>
>>>>>>> Yes, Lets say p9dsu system is having latest supermicro released 
>>>>>>> firmware(having imprint keys)
>>>>>>> and secureboot mode is enabled in the system. If we compile 
>>>>>>> custom kernel in upstream op-build
>>>>>>> using development mode in signed mode and flash that on that 
>>>>>>> failed secureboot system. so when
>>>>>>> we boot with that kernel, keys verification is failing, i am not 
>>>>>>> sure why it is failing now, earlier
>>>>>>> it works when doing testing. The kernel tried from both the 
>>>>>>> places one is zImage.epapr and another
>>>>>>> one is extracted BOOTKERNEL partition from full PNOR built in 
>>>>>>> signed imprint mode. Using both the images
>>>>>>> verification is failing now.
>>>>>>
>>>>>> Hmm ... as long as the system trusts the imprinting keys (not any
>>>>>> production key), you should still be able to build and boot custom
>>>>>> zImage.epapr signed with imprinting keys. Do you remember how you
>>>>>> built (and signed) the zImage.epapr?
>>>>>>
>>>>>
>>>>> Yeah, on current upstream op-build, add this patch 
>>>>> https://github.com/open-power/op-build/pull/1988 to enable
>>>>> secureboot and build signed imprint PNOR, before build we will add 
>>>>> some custom patches to linux in openpower/linux folder
>>>>> and then do full op-build. Then try to flash the BOOTKERNEL which 
>>>>> is extracted from full PNOR image built, then we
>>>>> will hit it.
>>>>> Does this happen if you flash the full PNOR image or only if try to 
>>>>> flash the partition individually?  If just the latter, maybe the 
>>>>> partition reflash does not work exactly as we expect.
>>>>
>>>> Claudio, correct me if I'm wrong but I think flashing the zImage.epapr
>>>> will not work here because that is not a complete, signed container;
>>>> it is only the payload.
>>>>
>>>
>>> I have tried both payload image(zImage.epapr), BOOTKERNEL 
>>> partition(signed container) extracted
>>> from full PNOR. Both are failed. And regarding full PNOR image, which 
>>> is long ago bug system won't
>>> boot due to SBE's are messed up.
>>>
>> The zImage.epapr in the output/images directory is just the payload, 
>> not the full container.  There is a file by the same name in the 
>> openpower_pnor_scratch/ directory that is a full container.  You can 
>> check the files using the 'file' command, or examine them with 
>> print-container.
>>
>> Here is where I'm a little unsure: If you run print-container with the 
>> --validate option you will see that it fails validation. There is 
>> another file in openpower_pnor_scratch, the 
>> "rand-xxxxxxxxxx.BOOTKERNEL.temp.hdr.bin" file, that *does* validate. 
>> The difference is, the "hdr.bin" file has no padding applied, and the 
>> zImage.epapr has the padding.
>>
>> I'm not sure which is the correct file to flash.  Probably it is the 
>> zImage.epapr with padding.  Perhaps it does not matter.  It would 
>> matter only if the secure boot code reads beyond the payload size, 
>> when loading the file.  The padding ensures the remainder of the PNOR 
>> partition, after the end of payload, is all nulls.  (At least, I 
>> *think* that's right).
> 
> Does the payload size stored in the container consider the padding? The 
> secure rom code will use that to validate the container.
> 
 >
The payload size in the header does not include the padding.  (which is 
why the padded file fails validation with print-container, while the 
unpadded file passes.  I should add an option to print-container to make 
it consider only payload_size bytes when doing the payload hash 
calculation, so it could be used to check the padded as well as unpadded 
files).  -Dave


> Claudio
> 
> 
>>
>>>>
>>>>> Thanks
>>>>> Pridhiviraj
>>>>>
>>>>>> Claudio
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Claudio
>>>>>>>>
>>>>>>>>> so we need a way to force
>>>>>>>>> disable it, like the way
>>>>>>>>> we have for enabling it via nvram. Otherwise debugging petitboot
>>>>>>>>> kernels
>>>>>>>>> on such systems
>>>>>>>>> became really hard.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> Pridhiviraj
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks & Regards,
>>>>>>>>>> - Nayna
>>>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Skiboot mailing list
>>>>>>> Skiboot at lists.ozlabs.org
>>>>>>> https://lists.ozlabs.org/listinfo/skiboot
>>
> 



More information about the Skiboot mailing list