From: James Morris <jmorris@namei.org>
To: Matthew Garrett <mjg59@google.com>
Cc: LSM List <linux-security-module@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
David Howells <dhowells@redhat.com>,
Linux API <linux-api@vger.kernel.org>,
Andy Lutomirski <luto@kernel.org>
Subject: Re: [PATCH V32 01/27] Add the ability to lock down access to the running kernel image
Date: Fri, 3 May 2019 09:19:49 +1000 (AEST) [thread overview]
Message-ID: <alpine.LRH.2.21.1905030901180.7491@namei.org> (raw)
In-Reply-To: <CACdnJuusGU2DMXaPAjH3+QOcSj-9q6njbxxG-9s2PweDKognvw@mail.gmail.com>
On Thu, 2 May 2019, Matthew Garrett wrote:
> On Thu, May 2, 2019 at 2:07 PM James Morris <jmorris@namei.org> wrote:
> > One possible direction is to (as previously mentioned) assign IDs to each
> > callsite and be able to check this ID against a simple policy array
> > (allow/deny). The default policy choices could be reduced to 'all' or
> > 'none' during kconfig, and allow a custom policy to be loaded later if
> > desired.
>
> Ok. My primary concern around this is that it's very difficult to use
> correctly in anything other than the "all" or "none" modes. If a new
> kernel feature is added with integrated lockdown support, if an admin
> is simply setting the flags of things they wish to block then this
> will be left enabled - and may violate the admin's expectations around
> integrity. On the other hand, if an admin is simply setting the flags
> of things they wish to permit, then adding lockdown support to an
> existing kernel feature may result in that feature suddenly being
> disabled, which may also violate the admin's expectations around the
> flags providing a stable set of behaviour.
Understood. Most uses will likely be either a distro or an embedded
system, who I'm assuming would provide a useful policy by default, and
perhaps a high-level abstraction for modification.
> Given that, would you prefer such a policy expression to look like?
Perhaps a write-once policy, injected from userspace during early boot?
The policy could be simply a list of:
lockdown_feature true|false
>
> > Within the policy check hook, we could add a new LSM hook, which would
> > allow an LSM to restrictively override the lockdown policy with its own
>
> Ok, that makes sense. If we take this approach, does there need to be
> a separate policy mechanism at all? Users who want fine-grained
> control would be able to set the behaviour to "None" and then use
> their choice of LSM to express more fine-grained control.
Right, and there could be a stackable LSM which just does fine-grained
policy (per above).
>
> > This doesn't really address the completeness / maintenance issue (i.e. "do
> > we have everything covered and how do we ensure this on an ongoing
> > basis?", and "what will this new lockdown feature break?"), although it
> > should make it easier to add new lockdown callsites as they don't have to
> > be enabled by the user.
>
> I can start on this.
Cool!
--
James Morris
<jmorris@namei.org>
next prev parent reply other threads:[~2019-05-02 23:19 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-04 0:32 [PATCH V32 0/27] Lockdown patches for 5.2 Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 01/27] Add the ability to lock down access to the running kernel image Matthew Garrett
2019-04-16 8:40 ` Andrew Donnellan
2019-04-18 6:38 ` Daniel Axtens
2019-04-18 19:35 ` Matthew Garrett
2019-04-29 0:06 ` Daniel Axtens
2019-04-29 4:54 ` Daniel Axtens
2019-04-30 5:15 ` Andrew Donnellan
2019-04-29 22:56 ` Matthew Garrett
2019-05-02 21:07 ` James Morris
2019-05-02 21:15 ` Matthew Garrett
2019-05-02 23:19 ` James Morris [this message]
2019-05-03 0:34 ` Andy Lutomirski
2019-04-04 0:32 ` [PATCH V32 02/27] Enforce module signatures if the kernel is locked down Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 03/27] Restrict /dev/{mem,kmem,port} when " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 04/27] kexec_load: Disable at runtime if " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 05/27] Copy secure_boot flag in boot params across kexec reboot Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 06/27] kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and KEXEC_SIG_FORCE Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 07/27] kexec_file: Restrict at runtime if the kernel is locked down Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 08/27] hibernate: Disable when " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 09/27] uswsusp: " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 10/27] PCI: Lock down BAR access " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 11/27] x86: Lock down IO port " Matthew Garrett
2019-04-04 7:49 ` Thomas Gleixner
2019-04-04 0:32 ` [PATCH V32 12/27] x86/msr: Restrict MSR " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 13/27] ACPI: Limit access to custom_method " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 14/27] acpi: Ignore acpi_rsdp kernel param when the kernel has been " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 15/27] acpi: Disable ACPI table override if the kernel is " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 16/27] Prohibit PCMCIA CIS storage when " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 17/27] Lock down TIOCSSERIAL Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 18/27] Lock down module params that specify hardware parameters (eg. ioport) Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 19/27] x86/mmiotrace: Lock down the testmmiotrace module Matthew Garrett
2019-04-04 1:33 ` Steven Rostedt
2019-04-04 7:47 ` Thomas Gleixner
2019-04-04 0:32 ` [PATCH V32 20/27] Lock down /proc/kcore Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 21/27] Lock down tracing and perf kprobes when in confidentiality mode Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 22/27] bpf: Restrict bpf when kernel lockdown is " Matthew Garrett
2019-04-30 19:19 ` Jann Horn
2019-04-04 0:32 ` [PATCH V32 23/27] Lock down perf when " Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 24/27] kexec: Allow kexec_file() with appropriate IMA policy when locked down Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 25/27] lockdown: Print current->comm in restriction messages Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 26/27] debugfs: Restrict debugfs when the kernel is locked down Matthew Garrett
2019-04-04 0:32 ` [PATCH V32 27/27] tracefs: Restrict tracefs " Matthew Garrett
2019-04-04 13:39 ` Steven Rostedt
2019-04-04 20:09 ` Matthew Garrett
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=alpine.LRH.2.21.1905030901180.7491@namei.org \
--to=jmorris@namei.org \
--cc=dhowells@redhat.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mjg59@google.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
all inboxes | Powered by JetHome®