LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Mimi Zohar <zohar@linux.vnet.ibm.com>
Cc: Casey Schaufler <casey@schaufler-ca.com>,
David Howells <dhowells@redhat.com>,
Matthew Garrett <mjg59@google.com>,
linux-integrity@vger.kernel.org,
linux-security-module@vger.kernel.org, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] kexec: call LSM hook for kexec_load syscall
Date: Thu, 03 May 2018 16:36:40 -0500 [thread overview]
Message-ID: <87lgd0o1zr.fsf@xmission.com> (raw)
In-Reply-To: <1525381619.3539.45.camel@linux.vnet.ibm.com> (Mimi Zohar's message of "Thu, 03 May 2018 17:06:59 -0400")
Mimi Zohar <zohar@linux.vnet.ibm.com> writes:
> On Thu, 2018-05-03 at 11:42 -0500, Eric W. Biederman wrote:
>> Casey Schaufler <casey@schaufler-ca.com> writes:
>>
>> > On 5/3/2018 8:51 AM, Eric W. Biederman wrote:
>> >> Mimi Zohar <zohar@linux.vnet.ibm.com> writes:
>> >>
>> >>> On Wed, 2018-05-02 at 09:45 -0500, Eric W. Biederman wrote:
>> >>>> Mimi Zohar <zohar@linux.vnet.ibm.com> writes:
>> >>>>
>> >>>>> Allow LSMs and IMA to differentiate between the kexec_load and
>> >>>>> kexec_file_load syscalls by adding an "unnecessary" call to
>> >>>>> security_kernel_read_file() in kexec_load. This would be similar to the
>> >>>>> existing init_module syscall calling security_kernel_read_file().
>> >>>> Given the reasonable desire to load a policy that ensures everything
>> >>>> has a signature I don't have fundamental objections.
>> >>>>
>> >>>> security_kernel_read_file as a hook seems an odd choice. At the very
>> >>>> least it has a bad name because there is no file reading going on here.
>> >>>>
>> >>>> I am concerned that I don't see CONFIG_KEXEC_VERIFY_SIG being tested
>> >>>> anywhere. Which means I could have a kernel compiled without that and I
>> >>>> would be allowed to use kexec_file_load without signature checking.
>> >>>> While kexec_load would be denied.
>> >>>>
>> >>>> Am I missing something here?
>> >>> The kexec_file_load() calls kernel_read_file_from_fd(), which in turn
>> >>> calls security_kernel_read_file(). So kexec_file_load and kexec_load
>> >>> syscall would be using the same method for enforcing signature
>> >>> verification.
>> >> Having looked at your patches and the kernel a little more I think
>> >> this should be a separate security hook that does not take a file
>> >> parameter.
>> >>
>> >> Right now every other security module assumes !file is init_module.
>> >> So I think this change has the potential to confuse other security
>> >> modules, with the result of unintended policy being applied.
>> >>
>> >> So just for good security module hygeine I think this needs a dedicated
>> >> kexec_load security hook.
>> >
>> > I would rather see the existing modules updated than a new
>> > hook added. Too many hooks spoil the broth. Two hooks with
>> > trivial differences just add to the clutter and make it harder
>> > for non-lsm developers to figure out what to use in their
>> > code.
>>
>> These are not non-trivial differences. There is absolutely nothing
>> file related about kexec_load. Nor for init_module for that matter.
>>
>> If something is called security_kernel_read_file I think it is wholly
>> appropriate for code that processes such a hook to assume file is
>> non-NULL.
>>
>> When you have to dance a jig (which is what I see the security modules
>> doing) to figure out who is calling a lsm hook for what purpose I think
>> it is a maintenance problem waiting to happen and that the hook is badly
>> designed.
>>
>> At this point I don't care what the lsm's do with the hooks but the
>> hooks need to make sense for people outside of the lsm's and something
>> about reading a file in a syscall that doesn't read files is complete
>> and utter nonsense.
>
> Sure, we can define a wrapper around the security_kernel_read_file()
> hook, calling it security_non-fd_syscall() or even
> security_old_syscall().
I really don't see why you want to use the same hook.
I just read through the code of all three users. None of them.
Especially IMA shares any significant code between the !file case and
the file case.
Eric
next prev parent reply other threads:[~2018-05-03 21:36 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-12 22:41 [PATCH 0/3] kexec: limit " Mimi Zohar
2018-04-12 22:41 ` [PATCH 1/3] ima: based on the "secure_boot" policy limit syscalls Mimi Zohar
2018-04-12 22:41 ` [PATCH 2/3] kexec: call LSM hook for kexec_load syscall Mimi Zohar
2018-05-02 14:45 ` Eric W. Biederman
2018-05-02 15:45 ` Mimi Zohar
2018-05-03 15:51 ` Eric W. Biederman
2018-05-03 16:05 ` Casey Schaufler
2018-05-03 16:42 ` Eric W. Biederman
2018-05-03 21:06 ` Mimi Zohar
2018-05-03 21:36 ` Eric W. Biederman [this message]
2018-04-12 22:41 ` [PATCH 3/3] ima: based on policy require signed kexec kernel images Mimi Zohar
2018-05-03 20:13 ` [PATCH 0/3] kexec: limit kexec_load syscall Eric W. Biederman
2018-05-03 20:39 ` Matthew Garrett
2018-05-03 21:58 ` Eric W. Biederman
2018-05-03 22:51 ` Matthew Garrett
2018-05-03 21:31 ` Mimi Zohar
2018-05-03 21:38 ` Eric W. Biederman
2018-05-03 21:57 ` Mimi Zohar
2018-05-03 23:03 ` Eric W. Biederman
2018-05-04 2:29 ` Mimi Zohar
2018-05-11 1:36 Mimi Zohar
2018-05-11 1:36 ` [PATCH 2/3] kexec: call LSM hook for " Mimi Zohar
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=87lgd0o1zr.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=casey@schaufler-ca.com \
--cc=dhowells@redhat.com \
--cc=kexec@lists.infradead.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=mjg59@google.com \
--cc=zohar@linux.vnet.ibm.com \
--subject='Re: [PATCH 2/3] kexec: call LSM hook for kexec_load syscall' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).