All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@kernel.org>
To: Justin Forbes <jmforbes@linuxtx.org>
Cc: James Bottomley <James.Bottomley@hansenpartnership.com>,
	Peter Jones <pjones@redhat.com>,
	joeyli.kernel@gmail.com,
	ksummit-discuss@lists.linuxfoundation.org
Subject: Re: [Ksummit-discuss] [TECH TOPIC] Kernel lockdown and secure boot
Date: Wed, 5 Sep 2018 13:53:27 -0700	[thread overview]
Message-ID: <CALCETrVFSk=8eMyzsjkOPKne2kVuZzjyn5tLNDnB3ZaBGh1qrQ@mail.gmail.com> (raw)
In-Reply-To: <CAFxkdAoiQMuzEq1Dv0=fO6uB2fLcc+0Wb+zuVvSFsAweROfhQQ@mail.gmail.com>

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.

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.

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...]

  reply	other threads:[~2018-09-05 20:53 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-05 16:53 [Ksummit-discuss] [TECH TOPIC] Kernel lockdown and secure boot 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 [this message]
2018-09-05 21:01         ` Justin Forbes
2018-09-06  6:53           ` joeyli
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='CALCETrVFSk=8eMyzsjkOPKne2kVuZzjyn5tLNDnB3ZaBGh1qrQ@mail.gmail.com' \
    --to=luto@kernel.org \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=jmforbes@linuxtx.org \
    --cc=joeyli.kernel@gmail.com \
    --cc=ksummit-discuss@lists.linuxfoundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.