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

From: Peter Jones
Date: Mon Nov 21 2016 - 14:05:46 EST


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.

--
Peter