From: joeyli <jlee@suse.com>
To: Justin Forbes <jmforbes@linuxtx.org>, Andy Lutomirski <luto@kernel.org>
Cc: James Bottomley <James.Bottomley@hansenpartnership.com>,
joeyli.kernel@gmail.com,
ksummit-discuss@lists.linuxfoundation.org,
Peter Jones <pjones@redhat.com>,
Andy Lutomirski <luto@kernel.org>
Subject: Re: [Ksummit-discuss] [TECH TOPIC] Kernel lockdown and secure boot
Date: Thu, 6 Sep 2018 14:53:18 +0800 [thread overview]
Message-ID: <20180906065318.GA20052@linux-l9pv.suse> (raw)
In-Reply-To: <CAFxkdArzzOWwcPQBKpeBNWWAKcKJcDXXXtrk1n-L95SjXN11gQ@mail.gmail.com>
Hi,
On Wed, Sep 05, 2018 at 04:01:12PM -0500, Justin Forbes wrote:
> On Wed, Sep 5, 2018 at 3:53 PM, Andy Lutomirski <luto@kernel.org> wrote:
> > On Wed, Sep 5, 2018 at 1:34 PM, Justin Forbes <jmforbes@linuxtx.org> wrote:
> >> On Wed, Sep 5, 2018 at 3:14 PM, David Howells <dhowells@redhat.com> wrote:
> >>> Justin Forbes <jmforbes@linuxtx.org> wrote:
> >>>
> >>>> Lockdown is a config option on it's own, just also add a separate
> >>>> config option option to enable lockdown on UEFI secure boot.
> >>>
> >>> The patchset has that already (CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT).
> >>>
> >>> One of the issues appears to be that we're making it boot-time conditional at
> >>> all. If I understand him correctly, Linus seems to want us to make everything
> >>> locked down at compile time or not at all.
> >>>
> >>
> >> The last push attempt dropped that patch and did have the compile time
> >> (CONFIG_LOCK_DOWN_MANDATORY) as well as an option for command line
> >> enabling with lockdown=1 (CONFIG_LOCK_DOWN_KERNEL). It just didn't
> >> have an option for triggering off of UEFI Secure Boot. As a distro,
> >> running CONFIG_LOCK_DOWN_MANDATORY isn't much of an option. We ran
> >> the 4.17 development series in rawhide with CONFIG_LOCK_DOWN_KERNEL,
> >> and no one noticed that their secure boot was off. This is why it is
> >> somewhat frightening to change the behavior, users assume it is all
> >> working because things boot, and never notice they are missing some
> >> protection that they assumed was there. Before we rebased stable
> >> distros I reworked the CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT to work
> >> with the current patch set and that is what we are carrying now.
> >> While I would love to see everything pushed as a whole, I would still
> >> be much happier than I am now if everything else pushed and we only
> >> had to carry the patch to trigger off of UEFI status. It is a minor
> >> detail that shouldn't be blocking the entire patch set at this point.
> >> If Linus agrees that it can be pushed with CONFIG_LOCK_DOWN_MANDATORY
> >> as the only option, that is fine. Still much less out of tree for us
> >> to worry about.
> >
> > I'm not really convinced this needs a whole tech topic. I send an
> > email awhile back, but didn't hear back, so here goes roughly again:
> >
> > As far as I can tell, there are two issues blocking lockdown, both of
> > which should be relatively easily resolvable:
> >
> > 1. When exactly is lockdown enabled?
> >
> > 2. What exactly does lockdown do?
> >
> > #1 is clearly resolvable. Worst case, a bare minimum version can get
> > merged where, for example, lockdown is either mandatory or is enabled
> > by boot option. Distros can carry a patch for alternative policies
> > for a little while until the dust settles.
> >
> > #2 is a bigger deal. At least one version that shipped in a Fedora
> > kernel actually broke systemd, and that's not cool. And I really
> > think we need to make lockdown non-binary to get this right. I've
> > proposed LOCKDOWN_PROTECT_INTEGRITY (i.e. try to prevent root from
> > modifying the running kernel) and LOCKDOWN_PROTECT_SECRECY (try to
> > prevent root from reading kernel memory), and no one seems to have
> > actually objected.
> >
> The Fedora issue was the bpf hammer. I am looking to find a better
> solution for that one, but dropped the patch in the meantime. It was
> removed shortly after it was found. This is one of the many reasons I
> don't like all or nothing at compile time, but again, we can carry the
> patch to toggle separately until a better solution is worked out.
>
I have thought a approach to give user a fine-grained switch to unlock
individual locked-down function by a authenticatabled function list
blob. The blob must be verified by the keys in kernel trusted keyring
(e.g. kernel compiled-in key or MOK). Maybe add timestamp to prevent
replay attack. Then kernel unlocked functions base on the list in the
authenticatabled blob from user who hosts private key.
> > So I would propose the following. Someone (me? David?) prepares a
> > very stripped down lockdown patchset. It adds the basic config
> > options for CONFIG_LOCK_DOWN_KERNEL and whatever compile-time
> > mandatory variants we want, and it adds the helpers so various
> > subsystems can ask whether lockdown is on. And it adds one single
> > lockdown user in the kernel. And we merge that. Then we add
> > additional lockdown users one at a time.
> >
> I would be fine with this, I just want some sort of path forward.
>
I also agree this approach. At least we can have a simple start in
kernel mainline.
> > This will resolve what I see as the major issue that has blocked
> > lockdown: the patchset is too big and spans too many subsystems.
> > Every time it's submitted it gets bogged down in important but
> > distracting discussions like "what, exactly, should the following bpf
> > feature do in lockdown mode?". These matter, but there is no
> > legitimate reason for them to block the overall feature -- it's
> > entirely fine if the initial version of lockdown doesn't protect bpf
> > at all.
> >
> > --Andy
> >
> > [There's only a ~30% change I can make LPC this year...]
>
> If you can make it, I will certainly be there and would be happy to
> discuss moving this forward.
Me too.
Thanks a lot!
Joey Lee
next prev parent reply other threads:[~2018-09-06 7:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-05 16:53 David Howells
2018-09-05 19:33 ` Jiri Kosina
2018-09-05 19:51 ` Justin Forbes
2018-09-05 20:14 ` David Howells
2018-09-05 20:34 ` Justin Forbes
2018-09-05 20:53 ` Andy Lutomirski
2018-09-05 21:01 ` Justin Forbes
2018-09-06 6:53 ` joeyli [this message]
2018-09-06 10:00 ` Jani Nikula
2018-09-06 10:05 ` David Howells
2018-09-06 10:21 ` Jani Nikula
2018-09-07 19:53 ` Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180906065318.GA20052@linux-l9pv.suse \
--to=jlee@suse.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=jmforbes@linuxtx.org \
--cc=joeyli.kernel@gmail.com \
--cc=ksummit-discuss@lists.linuxfoundation.org \
--cc=luto@kernel.org \
--cc=pjones@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox