From: Mimi Zohar <zohar@linux.vnet.ibm.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
James Morris <jmorris@namei.org>,
Casey Schaufler <casey@schaufler-ca.com>
Cc: Kees Cook <keescook@chromium.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
kexec@lists.infradead.org, linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
"Luis R . Rodriguez" <mcgrof@kernel.org>,
Andres Rodriguez <andresx7@gmail.com>,
Casey Schaufler <casey@schaufler-ca.com>,
linux-integrity@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH v3 1/7] security: rename security_kernel_read_file() hook
Date: Thu, 24 May 2018 19:29:52 -0400 [thread overview]
Message-ID: <1527204592.3424.132.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <87po1k2304.fsf@xmission.com>
On Thu, 2018-05-24 at 15:49 -0500, Eric W. Biederman wrote:
> I already nacked this approach because the two cases don't
> share a bit of code. When I looked closer it was even crazier.
It hasn't been clear what you meant by "the two cases don't share a
bit of code". The first attempt called
security_kernel_read_file(). As per your comments, kexec_load doesn't
load a file. Thinking it was a naming issue the second attempt
defined a wrapper named security_kernel_read_blob() for
security_kernel_read_file(). Still thinking it was a naming issue,
this attempt renamed the security_kernel_read_file() to
security_kernel_read_data().
>
> The way ima uses this hook and the post_load hook today is a travesty.
Instead of having multiple functions, each a bit different, for
reading a file from the kernel, kernel_read_file() is a generic
implementation with both pre and post security calls.
I think the pre and post security kernel_read_file() LSM hooks are
quite well thought out. The security_kernel_read_file is called
before the kernel reads the file. The security_kernel_post_read_file
is called after the kernel reads the file.
> The way the security_kernel_file_read and security_kernel_file_post_read
> are called today and are used by ima don't make the least little bit of
> sense.
>
> Abusing security_kernel_file_read in the module loader and then abusing
> security_kernel_file_post_read in the firmware loader is insane. The
> loadpin lsm could not even figure this out and so it failed to work
> because of these shenanighans.
>
> Only implementing kernel_file_read to handle the !file case is pretty
> much insane. There is no way this should be expanded to cover kexec
> until the code actually makes sense. We need a maintainable kernel.
It wasn't implemented *only* for the IMA !file case, but as a generic
mechanism. True, IMA is only using the security_kernel_read_file hook
for detecting !file, but the security_kernel_post_read_file hook is
used for verifying the file's integrity.
> Below is where I suggest you start on sorting out these security hooks.
> - Adding a security_kernel_arg to catch when you want to allow/deny the
> use of an argument to a syscall. What security_kernel_file_read and
> security_kernel_file_post_read have been abused for.
Assuming we define a new LSM hook named "security_kernel_arg", would
we also define a new enumeration or could we still use the existing
kernel_read_file_id?
>
> - Removing ima_file_read because it is completely subsumed by the new
> call.
The existing IMA function wouldn't be removed, but renamed to whatever
the new LSM hook is named.
>
> - Please note with adding this new hook there is no code shared between
> the cases, and the lsm code becomes simpler shorter when it can assume
> security_kernel_file_post_read always takes a struct file. (Even with
> the addition of a new security hook).
We would be defining a new LSM hook, not removing the existing
security_kernel_read_file hook, and only renaming the IMA usage of the
hook.
If defining a new LSM hook named security_kernel_arg makes you happy,
I don't have a problem with implementing it.
James, Casey, are you Ok with this?
Mimi
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Mimi Zohar <zohar@linux.vnet.ibm.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
James Morris <jmorris@namei.org>,
Casey Schaufler <casey@schaufler-ca.com>
Cc: linux-integrity@vger.kernel.org,
linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
"Luis R . Rodriguez" <mcgrof@kernel.org>,
kexec@lists.infradead.org, Andres Rodriguez <andresx7@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Kees Cook <keescook@chromium.org>,
Casey Schaufler <casey@schaufler-ca.com>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH v3 1/7] security: rename security_kernel_read_file() hook
Date: Thu, 24 May 2018 19:29:52 -0400 [thread overview]
Message-ID: <1527204592.3424.132.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <87po1k2304.fsf@xmission.com>
On Thu, 2018-05-24 at 15:49 -0500, Eric W. Biederman wrote:
> I already nacked this approach because the two cases don't
> share a bit of code. When I looked closer it was even crazier.
It hasn't been clear what you meant by "the two cases don't share a
bit of code". The first attempt called
security_kernel_read_file(). As per your comments, kexec_load doesn't
load a file. Thinking it was a naming issue the second attempt
defined a wrapper named security_kernel_read_blob() for
security_kernel_read_file(). Still thinking it was a naming issue,
this attempt renamed the security_kernel_read_file() to
security_kernel_read_data().
>
> The way ima uses this hook and the post_load hook today is a travesty.
Instead of having multiple functions, each a bit different, for
reading a file from the kernel, kernel_read_file() is a generic
implementation with both pre and post security calls.
I think the pre and post security kernel_read_file() LSM hooks are
quite well thought out. The security_kernel_read_file is called
before the kernel reads the file. The security_kernel_post_read_file
is called after the kernel reads the file.
> The way the security_kernel_file_read and security_kernel_file_post_read
> are called today and are used by ima don't make the least little bit of
> sense.
>
> Abusing security_kernel_file_read in the module loader and then abusing
> security_kernel_file_post_read in the firmware loader is insane. The
> loadpin lsm could not even figure this out and so it failed to work
> because of these shenanighans.
>
> Only implementing kernel_file_read to handle the !file case is pretty
> much insane. There is no way this should be expanded to cover kexec
> until the code actually makes sense. We need a maintainable kernel.
It wasn't implemented *only* for the IMA !file case, but as a generic
mechanism. True, IMA is only using the security_kernel_read_file hook
for detecting !file, but the security_kernel_post_read_file hook is
used for verifying the file's integrity.
> Below is where I suggest you start on sorting out these security hooks.
> - Adding a security_kernel_arg to catch when you want to allow/deny the
> use of an argument to a syscall. What security_kernel_file_read and
> security_kernel_file_post_read have been abused for.
Assuming we define a new LSM hook named "security_kernel_arg", would
we also define a new enumeration or could we still use the existing
kernel_read_file_id?
>
> - Removing ima_file_read because it is completely subsumed by the new
> call.
The existing IMA function wouldn't be removed, but renamed to whatever
the new LSM hook is named.
>
> - Please note with adding this new hook there is no code shared between
> the cases, and the lsm code becomes simpler shorter when it can assume
> security_kernel_file_post_read always takes a struct file. (Even with
> the addition of a new security hook).
We would be defining a new LSM hook, not removing the existing
security_kernel_read_file hook, and only renaming the IMA usage of the
hook.
If defining a new LSM hook named security_kernel_arg makes you happy,
I don't have a problem with implementing it.
James, Casey, are you Ok with this?
Mimi
WARNING: multiple messages have this Message-ID (diff)
From: zohar@linux.vnet.ibm.com (Mimi Zohar)
To: linux-security-module@vger.kernel.org
Subject: [PATCH v3 1/7] security: rename security_kernel_read_file() hook
Date: Thu, 24 May 2018 19:29:52 -0400 [thread overview]
Message-ID: <1527204592.3424.132.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <87po1k2304.fsf@xmission.com>
On Thu, 2018-05-24 at 15:49 -0500, Eric W. Biederman wrote:
> I already nacked this approach because the two cases don't
> share a bit of code. When I looked closer it was even crazier.
It hasn't been clear what you meant by "the two cases don't share a
bit of code".??The first attempt called
security_kernel_read_file().??As per your comments, kexec_load doesn't
load a file.??Thinking it was a naming issue the second attempt
defined a wrapper named security_kernel_read_blob() for
security_kernel_read_file().??Still thinking it was a naming issue,
this attempt renamed the security_kernel_read_file() to
security_kernel_read_data().
>
> The way ima uses this hook and the post_load hook today is a travesty.
Instead of having multiple functions, each a bit different, for
reading a file from the kernel, kernel_read_file() is a generic
implementation with both pre and post security calls.
I think the pre and post security kernel_read_file() LSM hooks are
quite well thought out. ?The security_kernel_read_file is called
before the kernel reads the file. ?The security_kernel_post_read_file
is called after the kernel reads the file.
> The way the security_kernel_file_read and security_kernel_file_post_read
> are called today and are used by ima don't make the least little bit of
> sense.
>
> Abusing security_kernel_file_read in the module loader and then abusing
> security_kernel_file_post_read in the firmware loader is insane. The
> loadpin lsm could not even figure this out and so it failed to work
> because of these shenanighans.
>
> Only implementing kernel_file_read to handle the !file case is pretty
> much insane. There is no way this should be expanded to cover kexec
> until the code actually makes sense. We need a maintainable kernel.
It wasn't implemented *only* for the IMA !file case, but as a generic
mechanism.??True, IMA is only using the security_kernel_read_file hook
for detecting !file, but the security_kernel_post_read_file hook is
used for verifying the file's integrity.
> Below is where I suggest you start on sorting out these security hooks.
> - Adding a security_kernel_arg to catch when you want to allow/deny the
> use of an argument to a syscall. What security_kernel_file_read and
> security_kernel_file_post_read have been abused for.
Assuming we define a new LSM hook named "security_kernel_arg", would
we also define a new enumeration or could we still use the existing
kernel_read_file_id?
>
> - Removing ima_file_read because it is completely subsumed by the new
> call.
The existing IMA function wouldn't be removed, but renamed to whatever
the new LSM hook is named.
>
> - Please note with adding this new hook there is no code shared between
> the cases, and the lsm code becomes simpler shorter when it can assume
> security_kernel_file_post_read always takes a struct file. (Even with
> the addition of a new security hook).
We would be defining a new LSM hook, not removing the existing
security_kernel_read_file hook, and only renaming the IMA usage of the
hook.
If defining a new LSM hook named security_kernel_arg makes you happy,
I don't have a problem with implementing it.
James, Casey, are you Ok with this?
Mimi
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Mimi Zohar <zohar@linux.vnet.ibm.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
James Morris <jmorris@namei.org>,
Casey Schaufler <casey@schaufler-ca.com>
Cc: linux-integrity@vger.kernel.org,
linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
"Luis R . Rodriguez" <mcgrof@kernel.org>,
kexec@lists.infradead.org, Andres Rodriguez <andresx7@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Kees Cook <keescook@chromium.org>,
Casey Schaufler <casey@schaufler-ca.com>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH v3 1/7] security: rename security_kernel_read_file() hook
Date: Thu, 24 May 2018 19:29:52 -0400 [thread overview]
Message-ID: <1527204592.3424.132.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <87po1k2304.fsf@xmission.com>
On Thu, 2018-05-24 at 15:49 -0500, Eric W. Biederman wrote:
> I already nacked this approach because the two cases don't
> share a bit of code. When I looked closer it was even crazier.
It hasn't been clear what you meant by "the two cases don't share a
bit of code". The first attempt called
security_kernel_read_file(). As per your comments, kexec_load doesn't
load a file. Thinking it was a naming issue the second attempt
defined a wrapper named security_kernel_read_blob() for
security_kernel_read_file(). Still thinking it was a naming issue,
this attempt renamed the security_kernel_read_file() to
security_kernel_read_data().
>
> The way ima uses this hook and the post_load hook today is a travesty.
Instead of having multiple functions, each a bit different, for
reading a file from the kernel, kernel_read_file() is a generic
implementation with both pre and post security calls.
I think the pre and post security kernel_read_file() LSM hooks are
quite well thought out. The security_kernel_read_file is called
before the kernel reads the file. The security_kernel_post_read_file
is called after the kernel reads the file.
> The way the security_kernel_file_read and security_kernel_file_post_read
> are called today and are used by ima don't make the least little bit of
> sense.
>
> Abusing security_kernel_file_read in the module loader and then abusing
> security_kernel_file_post_read in the firmware loader is insane. The
> loadpin lsm could not even figure this out and so it failed to work
> because of these shenanighans.
>
> Only implementing kernel_file_read to handle the !file case is pretty
> much insane. There is no way this should be expanded to cover kexec
> until the code actually makes sense. We need a maintainable kernel.
It wasn't implemented *only* for the IMA !file case, but as a generic
mechanism. True, IMA is only using the security_kernel_read_file hook
for detecting !file, but the security_kernel_post_read_file hook is
used for verifying the file's integrity.
> Below is where I suggest you start on sorting out these security hooks.
> - Adding a security_kernel_arg to catch when you want to allow/deny the
> use of an argument to a syscall. What security_kernel_file_read and
> security_kernel_file_post_read have been abused for.
Assuming we define a new LSM hook named "security_kernel_arg", would
we also define a new enumeration or could we still use the existing
kernel_read_file_id?
>
> - Removing ima_file_read because it is completely subsumed by the new
> call.
The existing IMA function wouldn't be removed, but renamed to whatever
the new LSM hook is named.
>
> - Please note with adding this new hook there is no code shared between
> the cases, and the lsm code becomes simpler shorter when it can assume
> security_kernel_file_post_read always takes a struct file. (Even with
> the addition of a new security hook).
We would be defining a new LSM hook, not removing the existing
security_kernel_read_file hook, and only renaming the IMA usage of the
hook.
If defining a new LSM hook named security_kernel_arg makes you happy,
I don't have a problem with implementing it.
James, Casey, are you Ok with this?
Mimi
next prev parent reply other threads:[~2018-05-24 23:30 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-24 11:09 [PATCH v3 0/7] kexec/firmware: support system wide policy requiring signatures Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` [PATCH v3 1/7] security: rename security_kernel_read_file() hook Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 20:49 ` Eric W. Biederman
2018-05-24 20:49 ` Eric W. Biederman
2018-05-24 20:49 ` Eric W. Biederman
2018-05-24 23:29 ` Mimi Zohar [this message]
2018-05-24 23:29 ` Mimi Zohar
2018-05-24 23:29 ` Mimi Zohar
2018-05-24 23:29 ` Mimi Zohar
2018-05-25 12:22 ` Mimi Zohar
2018-05-25 12:22 ` Mimi Zohar
2018-05-25 12:22 ` Mimi Zohar
2018-05-25 12:22 ` Mimi Zohar
2018-05-25 15:41 ` James Morris
2018-05-25 15:41 ` James Morris
2018-05-25 15:41 ` James Morris
2018-05-25 19:51 ` Eric W. Biederman
2018-05-25 19:51 ` Eric W. Biederman
2018-05-25 19:51 ` Eric W. Biederman
2018-05-29 20:32 ` James Morris
2018-05-29 20:32 ` James Morris
2018-05-29 20:32 ` James Morris
2018-05-29 21:10 ` Eric W. Biederman
2018-05-29 21:10 ` Eric W. Biederman
2018-05-29 21:10 ` Eric W. Biederman
2018-05-24 11:09 ` [PATCH v3 2/7] kexec: add call to LSM hook in original kexec_load syscall Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 20:50 ` Eric W. Biederman
2018-05-24 20:50 ` Eric W. Biederman
2018-05-24 20:50 ` Eric W. Biederman
2018-05-24 11:09 ` [PATCH v3 3/7] ima: based on policy require signed kexec kernel images Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` [PATCH v3 4/7] firmware: add call to LSM hook before firmware sysfs fallback Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` [PATCH v3 5/7] ima: based on policy require signed firmware (sysfs fallback) Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` [PATCH v3 6/7] ima: add build time policy Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` [RFC PATCH v3 7/7] ima: based on policy prevent loading firmware (pre-allocated buffer) Mimi Zohar
2018-05-24 11:09 ` Mimi Zohar
2018-05-24 11:09 ` 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=1527204592.3424.132.camel@linux.vnet.ibm.com \
--to=zohar@linux.vnet.ibm.com \
--cc=andresx7@gmail.com \
--cc=ard.biesheuvel@linaro.org \
--cc=casey@schaufler-ca.com \
--cc=dhowells@redhat.com \
--cc=ebiederm@xmission.com \
--cc=gregkh@linuxfoundation.org \
--cc=jmorris@namei.org \
--cc=keescook@chromium.org \
--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=mcgrof@kernel.org \
--cc=torvalds@linux-foundation.org \
/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.