[systemd-devel] sd-boot setup and PCRs
Felix Rubio
felix at kngnt.org
Mon Jun 19 14:12:28 UTC 2023
Hi Andrei,
In that case, could happen that a malicious actor that has had in the
past access to the systemd-boot, shim, and the UKI, comes back with
those 3 on a USB stick and boots the machine? Then it would indeed make
sense to bind the LUKS key to PCR 4, this making it 4+7+14, so that the
use of outdated UKI is not possible.
Thank you!
Felix
On 2023-06-19 14:04, Andrei Borzenkov wrote:
> On 19.06.2023 10:19, Felix Rubio wrote:
>> "Signed by whom?" - Signed by an actor trusted by Secure Boot, either
>> at
>> the platform level, or by any of the Shim contributors (I have not
>> checked yet if it comes with a list of certificates, or only contains
>> the one I enrolled)
>>
>> "What is \"your certificate\"?" - The one I generated and enrolled
>> into
>> MOK.
>>
>
> In this case PCR 14 will not change. PCR 4 will include measurement of
> the binary loaded by shim. So if you place the same version of
> systemd-boot binary on USB it is up to the systemd-boot. The shim
> readme states that PCR 4 will be extended with "the hash of any binary
> for which Verify is called through the shim_lock protocol". So as long
> as systemd-boot calls shim to verify UKI you need the same UKI binary
> to unlock encrypted device. Which is not much different from simply
> booting from hard disk.
>
> I am not familiar with details of UKI implementation, but if it is
> possible to override kernel command line, you can trivially boot into
> /bin/sh unless you also bind LUKS key to the PCR 12 (or whatever is
> used to measure kernel parameters).
>
>> Regards!
>>
>> Felix
>>
>> On 2023-06-19 06:26, Andrei Borzenkov wrote:
>>> On 18.06.2023 21:56, Felix Rubio wrote:
>>>> Hi everybody,
>>>>
>>>> After some days offline, today I have gone through the emails
>>>> exchanged
>>>> a couple of weeks ago and agreed: UKI is the way to go. Last time I
>>>> checked about it I read about possible problems related to when some
>>>> modules would be loaded and so, but I see that my knowledge was
>>>> outdated.
>>>>
>>>> This said, right now my setup looks like: SecureBoot is enabled, I
>>>> am
>>>> using Shim, Systemd-Boot as shim's second stage, and a UKI. As the
>>>> disk
>>>> is encrypted, for now I am making the decryption predicated to PCRs
>>>> 7
>>>> and 14, so that the decryption will only fail when either SB state
>>>> changes, or when shim certificates/hashes change. So far so good.
>>>>
>>>> Out of curiosity now, I am wondering: what would happen in case
>>>> somebody
>>>> boots the system from, e.g., a USB drive that contains a signed
>>>> image?
>>>
>>> Signed by whom?
>>>
>>>> Even if the shim is the same version, I assume it will fail to
>>>> unlock
>>>> because the MOK will not contain my certificate?
>>>
>>>
>>> What is "your certificate"?
>>>
>>>> Should that certificate
>>>> had been stolen and present, be enough to then unlock the disk?
>>>>
>>>> I am trying to assess if I should put in the mix PCR 4, so that I
>>>> can
>>>> keep track of the UKI image that gets loaded. Do you guys think this
>>>> would be needed, or is overkill?
>>>>
>>>> Regards,
>>>>
>>>> Felix
More information about the systemd-devel
mailing list