From: Greg KH <greg@kroah.com>
To: Casey Schaufler <casey@schaufler-ca.com>
Cc: casey.schaufler@intel.com, paul@paul-moore.com,
linux-security-module@vger.kernel.org, jmorris@namei.org,
keescook@chromium.org, john.johansen@canonical.com,
penguin-kernel@i-love.sakura.ne.jp,
stephen.smalley.work@gmail.com, linux-kernel@vger.kernel.org,
linux-api@vger.kernel.org, mic@digikod.net
Subject: Re: [PATCH v1 6/8] LSM: lsm_self_attr syscall for LSM self attributes
Date: Wed, 26 Oct 2022 08:03:29 +0200 [thread overview]
Message-ID: <Y1jNsT0F7NKBi17h@kroah.com> (raw)
In-Reply-To: <20221025184519.13231-7-casey@schaufler-ca.com>
On Tue, Oct 25, 2022 at 11:45:17AM -0700, Casey Schaufler wrote:
> Create a system call lsm_self_attr() to provide the security
> module maintained attributes of the current process. Historically
> these attributes have been exposed to user space via entries in
> procfs under /proc/self/attr.
>
> Attributes are provided as a collection of lsm_ctx structures
> which are placed into a user supplied buffer. Each structure
> identifys the security module providing the attribute, which
> of the possible attributes is provided, the size of the
> attribute, and finally the attribute value. The format of the
> attribute value is defined by the security module, but will
> always be \0 terminated. The ctx_len value will be larger than
> strlen(ctx).
>
> ------------------------------
> | unsigned int id |
> ------------------------------
> | unsigned int flags |
> ------------------------------
> | __kernel_size_t ctx_len |
> ------------------------------
> | unsigned char ctx[ctx_len] |
> ------------------------------
> | unsigned int id |
> ------------------------------
> | unsigned int flags |
> ------------------------------
> | __kernel_size_t ctx_len |
> ------------------------------
> | unsigned char ctx[ctx_len] |
> ------------------------------
>
> Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
> ---
> include/linux/syscalls.h | 2 +
> include/uapi/linux/lsm.h | 21 ++++++
> kernel/sys_ni.c | 3 +
> security/Makefile | 1 +
> security/lsm_syscalls.c | 156 +++++++++++++++++++++++++++++++++++++++
> 5 files changed, 183 insertions(+)
> create mode 100644 security/lsm_syscalls.c
>
> diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
> index a34b0f9a9972..2d9033e9e5a0 100644
> --- a/include/linux/syscalls.h
> +++ b/include/linux/syscalls.h
> @@ -71,6 +71,7 @@ struct clone_args;
> struct open_how;
> struct mount_attr;
> struct landlock_ruleset_attr;
> +struct lsm_cxt;
> enum landlock_rule_type;
>
> #include <linux/types.h>
> @@ -1056,6 +1057,7 @@ asmlinkage long sys_memfd_secret(unsigned int flags);
> asmlinkage long sys_set_mempolicy_home_node(unsigned long start, unsigned long len,
> unsigned long home_node,
> unsigned long flags);
> +asmlinkage long sys_lsm_self_attr(struct lsm_ctx *ctx, size_t *size, int flags);
>
> /*
> * Architecture-specific system calls
> diff --git a/include/uapi/linux/lsm.h b/include/uapi/linux/lsm.h
> index 61e13b1b9ece..1d27fb5b7746 100644
> --- a/include/uapi/linux/lsm.h
> +++ b/include/uapi/linux/lsm.h
> @@ -9,6 +9,27 @@
> #ifndef _UAPI_LINUX_LSM_H
> #define _UAPI_LINUX_LSM_H
>
> +#include <linux/types.h>
> +#include <linux/unistd.h>
> +
> +/**
> + * struct lsm_ctx - LSM context
> + * @id: the LSM id number, see LSM_ID_XXX
> + * @flags: context specifier and LSM specific flags
> + * @ctx_len: the size of @ctx
> + * @ctx: the LSM context, a nul terminated string
> + *
> + * @ctx in a nul terminated string.
> + * (strlen(@ctx) < @ctx_len) is always true.
> + * (strlen(@ctx) == @ctx_len + 1) is not guaranteed.
> + */
> +struct lsm_ctx {
> + unsigned int id;
> + unsigned int flags;
> + __kernel_size_t ctx_len;
> + unsigned char ctx[];
Please use data types that are allowed to cross the user/kernel boundry
in a safe way. That would mean this would use __u64 instead of unsigned
int, and __u8 instead of unsigned char.
thanks,
greg k-h
next prev parent reply other threads:[~2022-10-26 6:02 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20221025184519.13231-1-casey.ref@schaufler-ca.com>
2022-10-25 18:45 ` [PATCH v1 0/8] LSM: Two basic syscalls Casey Schaufler
2022-10-25 18:45 ` [PATCH v1 1/8] LSM: Identify modules by more than name Casey Schaufler
2022-10-26 5:56 ` Greg KH
2022-10-25 18:45 ` [PATCH v1 2/8] LSM: Add an LSM identifier for external use Casey Schaufler
2022-10-26 5:58 ` Greg KH
2022-10-26 19:36 ` Casey Schaufler
2022-10-27 0:11 ` Tetsuo Handa
2022-10-27 6:31 ` Greg KH
2022-10-28 16:54 ` Casey Schaufler
2022-11-09 23:33 ` Paul Moore
2022-11-10 0:57 ` Casey Schaufler
2022-11-10 2:37 ` Paul Moore
2022-11-09 23:33 ` Paul Moore
2022-11-10 0:46 ` Casey Schaufler
2022-10-25 18:45 ` [PATCH v1 3/8] LSM: Identify the process attributes for each module Casey Schaufler
2022-10-26 5:59 ` Greg KH
2022-11-09 23:34 ` Paul Moore
2022-11-10 1:03 ` Casey Schaufler
2022-11-10 2:39 ` Paul Moore
2022-10-25 18:45 ` [PATCH v1 4/8] LSM: Maintain a table of LSM attribute data Casey Schaufler
2022-10-26 6:00 ` Greg KH
2022-10-27 0:38 ` Casey Schaufler
2022-10-27 6:29 ` Greg KH
2022-10-27 17:08 ` Casey Schaufler
2022-10-27 17:13 ` Greg KH
2022-11-09 23:34 ` Paul Moore
2022-10-25 18:45 ` [PATCH v1 5/8] proc: Use lsmids instead of lsm names for attrs Casey Schaufler
2022-10-25 18:45 ` [PATCH v1 6/8] LSM: lsm_self_attr syscall for LSM self attributes Casey Schaufler
2022-10-26 6:03 ` Greg KH [this message]
2022-10-26 7:01 ` kernel test robot
2022-10-26 8:14 ` kernel test robot
2022-10-26 9:33 ` kernel test robot
2022-11-09 23:34 ` Paul Moore
2022-11-10 1:32 ` Casey Schaufler
2022-11-10 3:02 ` Paul Moore
2022-11-10 23:36 ` Paul Moore
2022-11-11 0:36 ` Casey Schaufler
2022-11-11 3:16 ` Paul Moore
2022-10-25 18:45 ` [PATCH v1 7/8] LSM: Create lsm_module_list system call Casey Schaufler
2022-10-26 6:02 ` Greg KH
2022-10-26 12:07 ` kernel test robot
2022-11-09 23:35 ` Paul Moore
2022-11-10 1:37 ` Casey Schaufler
2022-11-10 3:17 ` Paul Moore
2022-10-25 18:45 ` [PATCH v1 8/8] lsm: wireup syscalls lsm_self_attr and lsm_module_list Casey Schaufler
2022-10-26 8:07 ` Geert Uytterhoeven
2022-11-23 19:57 [PATCH v1 0/8] LSM: Two basic syscalls Casey Schaufler
2022-11-23 19:57 ` [PATCH v1 6/8] LSM: lsm_self_attr syscall for LSM self attributes Casey Schaufler
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=Y1jNsT0F7NKBi17h@kroah.com \
--to=greg@kroah.com \
--cc=casey.schaufler@intel.com \
--cc=casey@schaufler-ca.com \
--cc=jmorris@namei.org \
--cc=john.johansen@canonical.com \
--cc=keescook@chromium.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=mic@digikod.net \
--cc=paul@paul-moore.com \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=stephen.smalley.work@gmail.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;
as well as URLs for NNTP newsgroup(s).