On 1/2/2018 5:20 PM, Matthew Garrett wrote:
> Right now most of the IMA code is using current->creds, but the LSM
> checks are using security_task_getsecid() which ends up looking at
> real_creds. Switch to using security_cred_getsecid() in order to make
> this consistent.
>
> Signed-off-by: Matthew Garrett <mj...@google.com>
> Cc: Paul Moore <p...@paul-moore.com>
> Cc: Stephen Smalley <s...@tycho.nsa.gov>
> Cc: Eric Paris <epa...@parisplace.org>
> Cc: selinux@tycho.nsa.gov
> Cc: Casey Schaufler <ca...@schaufler-ca.com>
> Cc: linux-security-mod...@vger.kernel.org
> Cc: Mimi Zohar <zo...@linux.vnet.ibm.com>
> Cc: Dmitry Kasatkin <dmitry.kasat...@gmail.com>
> Cc: linux-integr...@vger.kernel.org
> ---
>  security/integrity/ima/ima_policy.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/security/integrity/ima/ima_policy.c 
> b/security/integrity/ima/ima_policy.c
> index ee4613fa5840..52951ac445ea 100644
> --- a/security/integrity/ima/ima_policy.c
> +++ b/security/integrity/ima/ima_policy.c
> @@ -249,7 +249,6 @@ static void ima_lsm_update_rules(void)
>  static bool ima_match_rules(struct ima_rule_entry *rule, struct inode *inode,
>                           enum ima_hooks func, int mask)
>  {
> -     struct task_struct *tsk = current;
>       const struct cred *cred = current_cred();
>       int i;
>  
> @@ -305,7 +304,7 @@ static bool ima_match_rules(struct ima_rule_entry *rule, 
> struct inode *inode,
>               case LSM_SUBJ_USER:
>               case LSM_SUBJ_ROLE:
>               case LSM_SUBJ_TYPE:
> -                     security_task_getsecid(tsk, &sid);
> +                     security_cred_getsecid(cred, &sid);
>                       rc = security_filter_rule_match(sid,

security_filter_rule_match() is security_audit_rule_match() in
sheep's clothing. Using the cred secid in this case, where the
task secid is used elsewhere is going to lead to tears. It's
going to make *me* cry as I work on untangling secids for
stacking/namespaces. I can't predict how else it's going to
bite us, but I'm betting on it.

 

>                                                       rule->lsm[i].type,
>                                                       Audit_equal,


Reply via email to