Re: [PATCH 9/9] MODSIGN: Allow the "db" UEFI variable to be suppressed

From: Ard Biesheuvel
Date: Mon Nov 21 2016 - 14:06:51 EST


On 21 November 2016 at 20:05, Peter Jones <pjones@xxxxxxxxxx> wrote:
> On Mon, Nov 21, 2016 at 04:42:45PM +0000, Ard Biesheuvel wrote:
>> On 21 November 2016 at 16:26, Josh Boyer <jwboyer@xxxxxxxxxxxxxxxxx> wrote:
>> > On Mon, Nov 21, 2016 at 11:18 AM, Ard Biesheuvel
>> > <ard.biesheuvel@xxxxxxxxxx> wrote:
>> >> On 16 November 2016 at 18:11, David Howells <dhowells@xxxxxxxxxx> wrote:
>> >>> From: Josh Boyer <jwboyer@xxxxxxxxxxxxxxxxx>
>> >>>
>> >>> If a user tells shim to not use the certs/hashes in the UEFI db variable
>> >>> for verification purposes, shim will set a UEFI variable called
>> >>> MokIgnoreDB. Have the uefi import code look for this and ignore the db
>> >>> variable if it is found.
>> >>>
>> >>
>> >> Similar concern as in the previous patch: it appears to me that you
>> >> can DoS a machine by setting MokIgnoreDB if, e.g., its modules are
>> >> signed against a cert that resides in db, and shim/mokmanager are not
>> >> being used.
>> >
>> > If shim/mokmanager aren't used, then you can't actually modify
>> > MokIgnoreDB. Again, it requires physical access and a reboot into
>> > mokmanager to actually take effect.
>> >
>>
>> This does the trick as well
>>
>> printf "\x07\x00\x00\x00\x01" >
>> /sys/firmware/efi/efivars/MokIgnoreDB-605dab50-e046-4300-abb6-3dd810dd8b23
>
> So that really means two things. First, kernel should only honor any of
> the Mok* variables if they're Boot Services-only variables. Second, to
> avoid the DoS, shim should create them all as Boot Services-only the
> first time it boots. That'll prevent them from being created post-boot.
>

All of that assumes you are using shim and mokmanager in the first place.