From: Casey Schaufler <casey@schaufler-ca.com> To: casey.schaufler@intel.com, jmorris@namei.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org Cc: john.johansen@canonical.com, linux-doc@vger.kernel.org, linux-api@vger.kernel.org, linux-kernel@vger.kernel.org, linux-audit@redhat.com Subject: [PATCH v35 28/29] LSM: Add /proc attr entry for full LSM context Date: Mon, 18 Apr 2022 07:59:44 -0700 [thread overview] Message-ID: <20220418145945.38797-29-casey@schaufler-ca.com> (raw) In-Reply-To: <20220418145945.38797-1-casey@schaufler-ca.com> Add an entry /proc/.../attr/context which displays the full process security "context" in compound format: lsm1\0value\0lsm2\0value\0... This entry is not writable. A security module may decide that its policy does not allow this information to be displayed. In this case none of the information will be displayed. Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Casey Schaufler <casey@schaufler-ca.com> Cc: linux-api@vger.kernel.org Cc: linux-doc@vger.kernel.org --- Documentation/security/lsm.rst | 14 +++++ fs/proc/base.c | 1 + include/linux/lsm_hooks.h | 6 +++ security/apparmor/include/procattr.h | 2 +- security/apparmor/lsm.c | 8 ++- security/apparmor/procattr.c | 22 ++++---- security/security.c | 79 ++++++++++++++++++++++++++++ security/selinux/hooks.c | 2 +- security/smack/smack_lsm.c | 2 +- 9 files changed, 121 insertions(+), 15 deletions(-) diff --git a/Documentation/security/lsm.rst b/Documentation/security/lsm.rst index b77b4a540391..070225ae6ceb 100644 --- a/Documentation/security/lsm.rst +++ b/Documentation/security/lsm.rst @@ -143,3 +143,17 @@ separated list of the active security modules. The file ``/proc/pid/attr/interface_lsm`` contains the name of the security module for which the ``/proc/pid/attr/current`` interface will apply. This interface can be written to. + +The infrastructure does provide an interface for the special +case where multiple security modules provide a process context. +This is provided in compound context format. + +- `lsm\0value\0lsm\0value\0` + +The `lsm` and `value` fields are NUL-terminated bytestrings. +Each field may contain whitespace or non-printable characters. +The NUL bytes are included in the size of a compound context. +The context ``Bell\0Secret\0Biba\0Loose\0`` has a size of 23. + +The file ``/proc/pid/attr/context`` provides the security +context of the identified process. diff --git a/fs/proc/base.c b/fs/proc/base.c index f2d15348bdff..f8aed4404e7e 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -2828,6 +2828,7 @@ static const struct pid_entry attr_dir_stuff[] = { ATTR(NULL, "keycreate", 0666), ATTR(NULL, "sockcreate", 0666), ATTR(NULL, "interface_lsm", 0666), + ATTR(NULL, "context", 0444), #ifdef CONFIG_SECURITY_SMACK DIR("smack", 0555, proc_smack_attr_dir_inode_ops, proc_smack_attr_dir_ops), diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h index fd63ae215104..425538ebc606 100644 --- a/include/linux/lsm_hooks.h +++ b/include/linux/lsm_hooks.h @@ -1401,6 +1401,12 @@ * @pages contains the number of pages. * Return 0 if permission is granted. * + * @getprocattr: + * Provide the named process attribute for display in special files in + * the /proc/.../attr directory. Attribute naming and the data displayed + * is at the discretion of the security modules. The exception is the + * "context" attribute, which will contain the security context of the + * task as a nul terminated text string without trailing whitespace. * @ismaclabel: * Check if the extended attribute specified by @name * represents a MAC label. Returns 1 if name is a MAC diff --git a/security/apparmor/include/procattr.h b/security/apparmor/include/procattr.h index 31689437e0e1..03dbfdb2f2c0 100644 --- a/security/apparmor/include/procattr.h +++ b/security/apparmor/include/procattr.h @@ -11,7 +11,7 @@ #ifndef __AA_PROCATTR_H #define __AA_PROCATTR_H -int aa_getprocattr(struct aa_label *label, char **string); +int aa_getprocattr(struct aa_label *label, char **string, bool newline); int aa_setprocattr_changehat(char *args, size_t size, int flags); #endif /* __AA_PROCATTR_H */ diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c index 29181bc8c693..1ee58c1491ab 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c @@ -602,6 +602,7 @@ static int apparmor_getprocattr(struct task_struct *task, char *name, const struct cred *cred = get_task_cred(task); struct aa_task_ctx *ctx = task_ctx(current); struct aa_label *label = NULL; + bool newline = true; if (strcmp(name, "current") == 0) label = aa_get_newest_label(cred_label(cred)); @@ -609,11 +610,14 @@ static int apparmor_getprocattr(struct task_struct *task, char *name, label = aa_get_newest_label(ctx->previous); else if (strcmp(name, "exec") == 0 && ctx->onexec) label = aa_get_newest_label(ctx->onexec); - else + else if (strcmp(name, "context") == 0) { + label = aa_get_newest_label(cred_label(cred)); + newline = false; + } else error = -EINVAL; if (label) - error = aa_getprocattr(label, value); + error = aa_getprocattr(label, value, newline); aa_put_label(label); put_cred(cred); diff --git a/security/apparmor/procattr.c b/security/apparmor/procattr.c index fde332e0ea7d..172550f67fc0 100644 --- a/security/apparmor/procattr.c +++ b/security/apparmor/procattr.c @@ -20,6 +20,7 @@ * aa_getprocattr - Return the profile information for @profile * @profile: the profile to print profile info about (NOT NULL) * @string: Returns - string containing the profile info (NOT NULL) + * @newline: Should a newline be added to @string. * * Requires: profile != NULL * @@ -28,20 +29,21 @@ * * Returns: size of string placed in @string else error code on failure */ -int aa_getprocattr(struct aa_label *label, char **string) +int aa_getprocattr(struct aa_label *label, char **string, bool newline) { struct aa_ns *ns = labels_ns(label); struct aa_ns *current_ns = aa_get_current_ns(); + int flags = FLAG_VIEW_SUBNS | FLAG_HIDDEN_UNCONFINED; int len; if (!aa_ns_visible(current_ns, ns, true)) { aa_put_ns(current_ns); return -EACCES; } + if (newline) + flags |= FLAG_SHOW_MODE; - len = aa_label_snxprint(NULL, 0, current_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED); + len = aa_label_snxprint(NULL, 0, current_ns, label, flags); AA_BUG(len < 0); *string = kmalloc(len + 2, GFP_KERNEL); @@ -50,19 +52,19 @@ int aa_getprocattr(struct aa_label *label, char **string) return -ENOMEM; } - len = aa_label_snxprint(*string, len + 2, current_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED); + len = aa_label_snxprint(*string, len + 2, current_ns, label, flags); if (len < 0) { aa_put_ns(current_ns); return len; } - (*string)[len] = '\n'; - (*string)[len + 1] = 0; + if (newline) { + (*string)[len] = '\n'; + (*string)[++len] = 0; + } aa_put_ns(current_ns); - return len + 1; + return len; } /** diff --git a/security/security.c b/security/security.c index be6682768760..4c6d4171ded6 100644 --- a/security/security.c +++ b/security/security.c @@ -802,6 +802,57 @@ static int lsm_superblock_alloc(struct super_block *sb) return 0; } +/** + * append_ctx - append a lsm/context pair to a compound context + * @ctx: the existing compound context + * @ctxlen: size of the old context, including terminating nul byte + * @lsm: new lsm name, nul terminated + * @new: new context, possibly nul terminated + * @newlen: maximum size of @new + * + * replace @ctx with a new compound context, appending @newlsm and @new + * to @ctx. On exit the new data replaces the old, which is freed. + * @ctxlen is set to the new size, which includes a trailing nul byte. + * + * Returns 0 on success, -ENOMEM if no memory is available. + */ +static int append_ctx(char **ctx, int *ctxlen, const char *lsm, char *new, + int newlen) +{ + char *final; + size_t llen; + size_t nlen; + size_t flen; + + llen = strlen(lsm) + 1; + /* + * A security module may or may not provide a trailing nul on + * when returning a security context. There is no definition + * of which it should be, and there are modules that do it + * each way. + */ + nlen = strnlen(new, newlen); + + flen = *ctxlen + llen + nlen + 1; + final = kzalloc(flen, GFP_KERNEL); + + if (final == NULL) + return -ENOMEM; + + if (*ctxlen) + memcpy(final, *ctx, *ctxlen); + + memcpy(final + *ctxlen, lsm, llen); + memcpy(final + *ctxlen + llen, new, nlen); + + kfree(*ctx); + + *ctx = final; + *ctxlen = flen; + + return 0; +} + /* * The default value of the LSM hook is defined in linux/lsm_hook_defs.h and * can be accessed with: @@ -2223,6 +2274,10 @@ int security_getprocattr(struct task_struct *p, const char *lsm, char *name, char **value) { struct security_hook_list *hp; + char *final = NULL; + char *cp; + int rc = 0; + int finallen = 0; int ilsm = lsm_task_ilsm(current); int slot = 0; @@ -2250,6 +2305,30 @@ int security_getprocattr(struct task_struct *p, const char *lsm, char *name, return -ENOMEM; } + if (!strcmp(name, "context")) { + hlist_for_each_entry(hp, &security_hook_heads.getprocattr, + list) { + rc = hp->hook.getprocattr(p, "context", &cp); + if (rc == -EINVAL) + continue; + if (rc < 0) { + kfree(final); + return rc; + } + rc = append_ctx(&final, &finallen, hp->lsmid->lsm, + cp, rc); + kfree(cp); + if (rc < 0) { + kfree(final); + return rc; + } + } + if (final == NULL) + return -EINVAL; + *value = final; + return finallen; + } + hlist_for_each_entry(hp, &security_hook_heads.getprocattr, list) { if (lsm != NULL && strcmp(lsm, hp->lsmid->lsm)) continue; diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 653dd2e236f1..cd977493f734 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -6346,7 +6346,7 @@ static int selinux_getprocattr(struct task_struct *p, goto bad; } - if (!strcmp(name, "current")) + if (!strcmp(name, "current") || !strcmp(name, "context")) sid = __tsec->sid; else if (!strcmp(name, "prev")) sid = __tsec->osid; diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 2190c03ae3d0..9e442c4495bf 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -3485,7 +3485,7 @@ static int smack_getprocattr(struct task_struct *p, char *name, char **value) char *cp; int slen; - if (strcmp(name, "current") != 0) + if (strcmp(name, "current") != 0 && strcmp(name, "context") != 0) return -EINVAL; cp = kstrdup(skp->smk_known, GFP_KERNEL); -- 2.35.1 -- Linux-audit mailing list Linux-audit@redhat.com https://listman.redhat.com/mailman/listinfo/linux-audit
WARNING: multiple messages have this Message-ID (diff)
From: Casey Schaufler <casey@schaufler-ca.com> To: casey.schaufler@intel.com, jmorris@namei.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org Cc: casey@schaufler-ca.com, linux-audit@redhat.com, keescook@chromium.org, john.johansen@canonical.com, penguin-kernel@i-love.sakura.ne.jp, paul@paul-moore.com, stephen.smalley.work@gmail.com, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, linux-doc@vger.kernel.org Subject: [PATCH v35 28/29] LSM: Add /proc attr entry for full LSM context Date: Mon, 18 Apr 2022 07:59:44 -0700 [thread overview] Message-ID: <20220418145945.38797-29-casey@schaufler-ca.com> (raw) In-Reply-To: <20220418145945.38797-1-casey@schaufler-ca.com> Add an entry /proc/.../attr/context which displays the full process security "context" in compound format: lsm1\0value\0lsm2\0value\0... This entry is not writable. A security module may decide that its policy does not allow this information to be displayed. In this case none of the information will be displayed. Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Casey Schaufler <casey@schaufler-ca.com> Cc: linux-api@vger.kernel.org Cc: linux-doc@vger.kernel.org --- Documentation/security/lsm.rst | 14 +++++ fs/proc/base.c | 1 + include/linux/lsm_hooks.h | 6 +++ security/apparmor/include/procattr.h | 2 +- security/apparmor/lsm.c | 8 ++- security/apparmor/procattr.c | 22 ++++---- security/security.c | 79 ++++++++++++++++++++++++++++ security/selinux/hooks.c | 2 +- security/smack/smack_lsm.c | 2 +- 9 files changed, 121 insertions(+), 15 deletions(-) diff --git a/Documentation/security/lsm.rst b/Documentation/security/lsm.rst index b77b4a540391..070225ae6ceb 100644 --- a/Documentation/security/lsm.rst +++ b/Documentation/security/lsm.rst @@ -143,3 +143,17 @@ separated list of the active security modules. The file ``/proc/pid/attr/interface_lsm`` contains the name of the security module for which the ``/proc/pid/attr/current`` interface will apply. This interface can be written to. + +The infrastructure does provide an interface for the special +case where multiple security modules provide a process context. +This is provided in compound context format. + +- `lsm\0value\0lsm\0value\0` + +The `lsm` and `value` fields are NUL-terminated bytestrings. +Each field may contain whitespace or non-printable characters. +The NUL bytes are included in the size of a compound context. +The context ``Bell\0Secret\0Biba\0Loose\0`` has a size of 23. + +The file ``/proc/pid/attr/context`` provides the security +context of the identified process. diff --git a/fs/proc/base.c b/fs/proc/base.c index f2d15348bdff..f8aed4404e7e 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -2828,6 +2828,7 @@ static const struct pid_entry attr_dir_stuff[] = { ATTR(NULL, "keycreate", 0666), ATTR(NULL, "sockcreate", 0666), ATTR(NULL, "interface_lsm", 0666), + ATTR(NULL, "context", 0444), #ifdef CONFIG_SECURITY_SMACK DIR("smack", 0555, proc_smack_attr_dir_inode_ops, proc_smack_attr_dir_ops), diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h index fd63ae215104..425538ebc606 100644 --- a/include/linux/lsm_hooks.h +++ b/include/linux/lsm_hooks.h @@ -1401,6 +1401,12 @@ * @pages contains the number of pages. * Return 0 if permission is granted. * + * @getprocattr: + * Provide the named process attribute for display in special files in + * the /proc/.../attr directory. Attribute naming and the data displayed + * is at the discretion of the security modules. The exception is the + * "context" attribute, which will contain the security context of the + * task as a nul terminated text string without trailing whitespace. * @ismaclabel: * Check if the extended attribute specified by @name * represents a MAC label. Returns 1 if name is a MAC diff --git a/security/apparmor/include/procattr.h b/security/apparmor/include/procattr.h index 31689437e0e1..03dbfdb2f2c0 100644 --- a/security/apparmor/include/procattr.h +++ b/security/apparmor/include/procattr.h @@ -11,7 +11,7 @@ #ifndef __AA_PROCATTR_H #define __AA_PROCATTR_H -int aa_getprocattr(struct aa_label *label, char **string); +int aa_getprocattr(struct aa_label *label, char **string, bool newline); int aa_setprocattr_changehat(char *args, size_t size, int flags); #endif /* __AA_PROCATTR_H */ diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c index 29181bc8c693..1ee58c1491ab 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c @@ -602,6 +602,7 @@ static int apparmor_getprocattr(struct task_struct *task, char *name, const struct cred *cred = get_task_cred(task); struct aa_task_ctx *ctx = task_ctx(current); struct aa_label *label = NULL; + bool newline = true; if (strcmp(name, "current") == 0) label = aa_get_newest_label(cred_label(cred)); @@ -609,11 +610,14 @@ static int apparmor_getprocattr(struct task_struct *task, char *name, label = aa_get_newest_label(ctx->previous); else if (strcmp(name, "exec") == 0 && ctx->onexec) label = aa_get_newest_label(ctx->onexec); - else + else if (strcmp(name, "context") == 0) { + label = aa_get_newest_label(cred_label(cred)); + newline = false; + } else error = -EINVAL; if (label) - error = aa_getprocattr(label, value); + error = aa_getprocattr(label, value, newline); aa_put_label(label); put_cred(cred); diff --git a/security/apparmor/procattr.c b/security/apparmor/procattr.c index fde332e0ea7d..172550f67fc0 100644 --- a/security/apparmor/procattr.c +++ b/security/apparmor/procattr.c @@ -20,6 +20,7 @@ * aa_getprocattr - Return the profile information for @profile * @profile: the profile to print profile info about (NOT NULL) * @string: Returns - string containing the profile info (NOT NULL) + * @newline: Should a newline be added to @string. * * Requires: profile != NULL * @@ -28,20 +29,21 @@ * * Returns: size of string placed in @string else error code on failure */ -int aa_getprocattr(struct aa_label *label, char **string) +int aa_getprocattr(struct aa_label *label, char **string, bool newline) { struct aa_ns *ns = labels_ns(label); struct aa_ns *current_ns = aa_get_current_ns(); + int flags = FLAG_VIEW_SUBNS | FLAG_HIDDEN_UNCONFINED; int len; if (!aa_ns_visible(current_ns, ns, true)) { aa_put_ns(current_ns); return -EACCES; } + if (newline) + flags |= FLAG_SHOW_MODE; - len = aa_label_snxprint(NULL, 0, current_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED); + len = aa_label_snxprint(NULL, 0, current_ns, label, flags); AA_BUG(len < 0); *string = kmalloc(len + 2, GFP_KERNEL); @@ -50,19 +52,19 @@ int aa_getprocattr(struct aa_label *label, char **string) return -ENOMEM; } - len = aa_label_snxprint(*string, len + 2, current_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED); + len = aa_label_snxprint(*string, len + 2, current_ns, label, flags); if (len < 0) { aa_put_ns(current_ns); return len; } - (*string)[len] = '\n'; - (*string)[len + 1] = 0; + if (newline) { + (*string)[len] = '\n'; + (*string)[++len] = 0; + } aa_put_ns(current_ns); - return len + 1; + return len; } /** diff --git a/security/security.c b/security/security.c index be6682768760..4c6d4171ded6 100644 --- a/security/security.c +++ b/security/security.c @@ -802,6 +802,57 @@ static int lsm_superblock_alloc(struct super_block *sb) return 0; } +/** + * append_ctx - append a lsm/context pair to a compound context + * @ctx: the existing compound context + * @ctxlen: size of the old context, including terminating nul byte + * @lsm: new lsm name, nul terminated + * @new: new context, possibly nul terminated + * @newlen: maximum size of @new + * + * replace @ctx with a new compound context, appending @newlsm and @new + * to @ctx. On exit the new data replaces the old, which is freed. + * @ctxlen is set to the new size, which includes a trailing nul byte. + * + * Returns 0 on success, -ENOMEM if no memory is available. + */ +static int append_ctx(char **ctx, int *ctxlen, const char *lsm, char *new, + int newlen) +{ + char *final; + size_t llen; + size_t nlen; + size_t flen; + + llen = strlen(lsm) + 1; + /* + * A security module may or may not provide a trailing nul on + * when returning a security context. There is no definition + * of which it should be, and there are modules that do it + * each way. + */ + nlen = strnlen(new, newlen); + + flen = *ctxlen + llen + nlen + 1; + final = kzalloc(flen, GFP_KERNEL); + + if (final == NULL) + return -ENOMEM; + + if (*ctxlen) + memcpy(final, *ctx, *ctxlen); + + memcpy(final + *ctxlen, lsm, llen); + memcpy(final + *ctxlen + llen, new, nlen); + + kfree(*ctx); + + *ctx = final; + *ctxlen = flen; + + return 0; +} + /* * The default value of the LSM hook is defined in linux/lsm_hook_defs.h and * can be accessed with: @@ -2223,6 +2274,10 @@ int security_getprocattr(struct task_struct *p, const char *lsm, char *name, char **value) { struct security_hook_list *hp; + char *final = NULL; + char *cp; + int rc = 0; + int finallen = 0; int ilsm = lsm_task_ilsm(current); int slot = 0; @@ -2250,6 +2305,30 @@ int security_getprocattr(struct task_struct *p, const char *lsm, char *name, return -ENOMEM; } + if (!strcmp(name, "context")) { + hlist_for_each_entry(hp, &security_hook_heads.getprocattr, + list) { + rc = hp->hook.getprocattr(p, "context", &cp); + if (rc == -EINVAL) + continue; + if (rc < 0) { + kfree(final); + return rc; + } + rc = append_ctx(&final, &finallen, hp->lsmid->lsm, + cp, rc); + kfree(cp); + if (rc < 0) { + kfree(final); + return rc; + } + } + if (final == NULL) + return -EINVAL; + *value = final; + return finallen; + } + hlist_for_each_entry(hp, &security_hook_heads.getprocattr, list) { if (lsm != NULL && strcmp(lsm, hp->lsmid->lsm)) continue; diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 653dd2e236f1..cd977493f734 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -6346,7 +6346,7 @@ static int selinux_getprocattr(struct task_struct *p, goto bad; } - if (!strcmp(name, "current")) + if (!strcmp(name, "current") || !strcmp(name, "context")) sid = __tsec->sid; else if (!strcmp(name, "prev")) sid = __tsec->osid; diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 2190c03ae3d0..9e442c4495bf 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -3485,7 +3485,7 @@ static int smack_getprocattr(struct task_struct *p, char *name, char **value) char *cp; int slen; - if (strcmp(name, "current") != 0) + if (strcmp(name, "current") != 0 && strcmp(name, "context") != 0) return -EINVAL; cp = kstrdup(skp->smk_known, GFP_KERNEL); -- 2.35.1
next prev parent reply other threads:[~2022-04-18 15:14 UTC|newest] Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <20220418145945.38797-1-casey.ref@schaufler-ca.com> 2022-04-18 14:59 ` [PATCH v35 00/29] LSM: Module stacking for AppArmor Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 01/29] integrity: disassociate ima_filter_rule from security_audit_rule Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-21 16:51 ` John Johansen 2022-04-21 16:51 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 02/29] LSM: Infrastructure management of the sock security Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 03/29] LSM: Add the lsmblob data structure Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-26 23:15 ` John Johansen 2022-04-26 23:15 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 04/29] LSM: provide lsm name and id slot mappings Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-21 16:50 ` John Johansen 2022-04-21 16:50 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 05/29] IMA: avoid label collisions with stacked LSMs Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-19 16:50 ` Casey Schaufler 2022-04-20 19:23 ` Mimi Zohar 2022-04-20 21:15 ` Casey Schaufler 2022-04-21 3:22 ` Mimi Zohar 2022-04-21 16:50 ` John Johansen 2022-04-21 16:50 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 06/29] LSM: Use lsmblob in security_audit_rule_match Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-21 16:49 ` John Johansen 2022-04-21 16:49 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 07/29] LSM: Use lsmblob in security_kernel_act_as Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 08/29] LSM: Use lsmblob in security_secctx_to_secid Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-27 0:38 ` John Johansen 2022-04-27 0:38 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 09/29] LSM: Use lsmblob in security_secid_to_secctx Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 10/29] LSM: Use lsmblob in security_ipc_getsecid Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 11/29] LSM: Use lsmblob in security_current_getsecid Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 12/29] LSM: Use lsmblob in security_inode_getsecid Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 13/29] LSM: Use lsmblob in security_cred_getsecid Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 18:02 ` kernel test robot 2022-04-18 18:02 ` kernel test robot 2022-04-19 0:41 ` kernel test robot 2022-04-19 0:41 ` kernel test robot 2022-04-19 0:51 ` kernel test robot 2022-04-19 0:51 ` kernel test robot 2022-04-18 14:59 ` [PATCH v35 14/29] LSM: Specify which LSM to display Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 15/29] LSM: Ensure the correct LSM context releaser Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 16/29] LSM: Use lsmcontext in security_secid_to_secctx Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 17/29] LSM: Use lsmcontext in security_inode_getsecctx Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 18/29] LSM: security_secid_to_secctx in netlink netfilter Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 19/29] NET: Store LSM netlabel data in a lsmblob Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 20/29] binder: Pass LSM identifier for confirmation Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 21/29] LSM: Extend security_secid_to_secctx to include module selection Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-25 23:32 ` John Johansen 2022-04-25 23:32 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 22/29] Audit: Keep multiple LSM data in audit_names Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-25 23:32 ` John Johansen 2022-04-25 23:32 ` John Johansen 2022-04-26 17:57 ` Paul Moore 2022-04-26 17:57 ` Paul Moore 2022-04-18 14:59 ` [PATCH v35 23/29] Audit: Create audit_stamp structure Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-25 23:31 ` John Johansen 2022-04-25 23:31 ` John Johansen 2022-04-26 18:03 ` Paul Moore 2022-04-26 18:03 ` Paul Moore 2022-04-26 18:58 ` John Johansen 2022-04-26 18:58 ` John Johansen 2022-04-26 19:18 ` Paul Moore 2022-04-26 19:18 ` Paul Moore 2022-04-27 15:49 ` Casey Schaufler 2022-04-27 15:49 ` Casey Schaufler 2022-04-27 16:02 ` Paul Moore 2022-04-27 16:02 ` Paul Moore 2022-04-27 20:55 ` Casey Schaufler 2022-04-27 20:55 ` Casey Schaufler 2022-04-18 14:59 ` [PATCH v35 24/29] LSM: Add a function to report multiple LSMs Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-22 16:26 ` Paul Moore 2022-04-22 16:26 ` Paul Moore 2022-04-25 23:33 ` John Johansen 2022-04-25 23:33 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 25/29] Audit: Allow multiple records in an audit_buffer Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-22 16:27 ` Paul Moore 2022-04-22 16:27 ` Paul Moore 2022-04-26 1:06 ` John Johansen 2022-04-26 1:06 ` John Johansen 2022-04-26 18:12 ` Paul Moore 2022-04-26 18:12 ` Paul Moore 2022-04-26 19:01 ` John Johansen 2022-04-26 19:01 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 26/29] Audit: Add record for multiple task security contexts Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-22 16:28 ` Paul Moore 2022-04-22 16:28 ` Paul Moore 2022-04-26 1:08 ` John Johansen 2022-04-26 1:08 ` John Johansen 2022-04-26 18:15 ` Paul Moore 2022-04-26 18:15 ` Paul Moore 2022-04-26 19:07 ` John Johansen 2022-04-26 19:07 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 27/29] Audit: Add record for multiple object contexts Casey Schaufler 2022-04-18 14:59 ` Casey Schaufler 2022-04-22 16:29 ` Paul Moore 2022-04-22 16:29 ` Paul Moore 2022-04-26 3:37 ` John Johansen 2022-04-26 3:37 ` John Johansen 2022-04-26 18:57 ` Paul Moore 2022-04-26 18:57 ` Paul Moore 2022-04-26 19:24 ` John Johansen 2022-04-26 19:24 ` John Johansen 2022-04-18 14:59 ` Casey Schaufler [this message] 2022-04-18 14:59 ` [PATCH v35 28/29] LSM: Add /proc attr entry for full LSM context Casey Schaufler 2022-04-22 8:37 ` John Johansen 2022-04-22 8:37 ` John Johansen 2022-04-18 14:59 ` [PATCH v35 29/29] AppArmor: Remove the exclusive flag Casey Schaufler 2022-04-18 14:59 ` 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=20220418145945.38797-29-casey@schaufler-ca.com \ --to=casey@schaufler-ca.com \ --cc=casey.schaufler@intel.com \ --cc=jmorris@namei.org \ --cc=john.johansen@canonical.com \ --cc=linux-api@vger.kernel.org \ --cc=linux-audit@redhat.com \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-security-module@vger.kernel.org \ --cc=selinux@vger.kernel.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: linkBe 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.