public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Casey Schaufler <casey@schaufler-ca.com>
To: Lukasz Pawelczyk <l.pawelczyk@partner.samsung.com>,
	James Morris <james.l.morris@oracle.com>,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: r.krypa@samsung.com, t.swierczek@samsung.com
Subject: Re: [PATCH 1/3] Smack: fix the subject/object order in smack_ptrace_traceme()
Date: Fri, 11 Apr 2014 14:50:42 -0700	[thread overview]
Message-ID: <534863B2.4090506@schaufler-ca.com> (raw)
In-Reply-To: <1394554026-23924-2-git-send-email-l.pawelczyk@partner.samsung.com>

On 3/11/2014 9:07 AM, Lukasz Pawelczyk wrote:
> The order of subject/object is currently reversed in
> smack_ptrace_traceme(). It is currently checked if the tracee has a
> capability to trace tracer and according to this rule a decision is made
> whether the tracer will be allowed to trace tracee.
>
> Signed-off-by: Lukasz Pawelczyk <l.pawelczyk@partner.samsung.com>
> Signed-off-by: Rafal Krypa <r.krypa@samsung.com>

Acked-by: Casey Schaufler <casey@schaufler-ca.com>

Applied to git://git.gitorious.org/smack-next/kernel.git smack-for-3.16

> ---
>  security/smack/smack.h        |  1 +
>  security/smack/smack_access.c | 33 ++++++++++++++++++++++++++-------
>  security/smack/smack_lsm.c    |  4 ++--
>  3 files changed, 29 insertions(+), 9 deletions(-)
>
> diff --git a/security/smack/smack.h b/security/smack/smack.h
> index d072fd3..b9dfc4e 100644
> --- a/security/smack/smack.h
> +++ b/security/smack/smack.h
> @@ -225,6 +225,7 @@ struct inode_smack *new_inode_smack(char *);
>   */
>  int smk_access_entry(char *, char *, struct list_head *);
>  int smk_access(struct smack_known *, char *, int, struct smk_audit_info *);
> +int smk_tskacc(struct task_smack *, char *, u32, struct smk_audit_info *);
>  int smk_curacc(char *, u32, struct smk_audit_info *);
>  struct smack_known *smack_from_secid(const u32);
>  char *smk_parse_smack(const char *string, int len);
> diff --git a/security/smack/smack_access.c b/security/smack/smack_access.c
> index 14293cd..f161deb 100644
> --- a/security/smack/smack_access.c
> +++ b/security/smack/smack_access.c
> @@ -192,20 +192,21 @@ out_audit:
>  }
>  
>  /**
> - * smk_curacc - determine if current has a specific access to an object
> + * smk_tskacc - determine if a task has a specific access to an object
> + * @tsp: a pointer to the subject task
>   * @obj_label: a pointer to the object's Smack label
>   * @mode: the access requested, in "MAY" format
>   * @a : common audit data
>   *
> - * This function checks the current subject label/object label pair
> + * This function checks the subject task's label/object label pair
>   * in the access rule list and returns 0 if the access is permitted,
> - * non zero otherwise. It allows that current may have the capability
> + * non zero otherwise. It allows that the task may have the capability
>   * to override the rules.
>   */
> -int smk_curacc(char *obj_label, u32 mode, struct smk_audit_info *a)
> +int smk_tskacc(struct task_smack *subject, char *obj_label,
> +	       u32 mode, struct smk_audit_info *a)
>  {
> -	struct task_smack *tsp = current_security();
> -	struct smack_known *skp = smk_of_task(tsp);
> +	struct smack_known *skp = smk_of_task(subject);
>  	int may;
>  	int rc;
>  
> @@ -219,7 +220,7 @@ int smk_curacc(char *obj_label, u32 mode, struct smk_audit_info *a)
>  		 * it can further restrict access.
>  		 */
>  		may = smk_access_entry(skp->smk_known, obj_label,
> -					&tsp->smk_rules);
> +					&subject->smk_rules);
>  		if (may < 0)
>  			goto out_audit;
>  		if ((mode & may) == mode)
> @@ -241,6 +242,24 @@ out_audit:
>  	return rc;
>  }
>  
> +/**
> + * smk_curacc - determine if current has a specific access to an object
> + * @obj_label: a pointer to the object's Smack label
> + * @mode: the access requested, in "MAY" format
> + * @a : common audit data
> + *
> + * This function checks the current subject label/object label pair
> + * in the access rule list and returns 0 if the access is permitted,
> + * non zero otherwise. It allows that current may have the capability
> + * to override the rules.
> + */
> +int smk_curacc(char *obj_label, u32 mode, struct smk_audit_info *a)
> +{
> +	struct task_smack *tsp = current_security();
> +
> +	return smk_tskacc(tsp, obj_label, mode, a);
> +}
> +
>  #ifdef CONFIG_AUDIT
>  /**
>   * smack_str_from_perm : helper to transalate an int to a
> diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
> index d814e35..48d61f6 100644
> --- a/security/smack/smack_lsm.c
> +++ b/security/smack/smack_lsm.c
> @@ -207,11 +207,11 @@ static int smack_ptrace_traceme(struct task_struct *ptp)
>  	if (rc != 0)
>  		return rc;
>  
> -	skp = smk_of_task(task_security(ptp));
> +	skp = smk_of_task(current_security());
>  	smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_TASK);
>  	smk_ad_setfield_u_tsk(&ad, ptp);
>  
> -	rc = smk_curacc(skp->smk_known, MAY_READWRITE, &ad);
> +	rc = smk_tskacc(ptp, skp->smk_known, MAY_READWRITE, &ad);
>  	return rc;
>  }
>  


  reply	other threads:[~2014-04-11 21:50 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-11 16:07 [PATCH 0/3] Proposed changes to ptrace in smack Lukasz Pawelczyk
2014-03-11 16:07 ` [PATCH 1/3] Smack: fix the subject/object order in smack_ptrace_traceme() Lukasz Pawelczyk
2014-04-11 21:50   ` Casey Schaufler [this message]
2014-03-11 16:07 ` [PATCH 2/3] Smack: unify all ptrace accesses in the smack Lukasz Pawelczyk
2014-04-11 21:51   ` Casey Schaufler
2014-03-11 16:07 ` [PATCH 3/3] Smack: adds smackfs/ptrace interface Lukasz Pawelczyk
2014-04-11 21:50   ` 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=534863B2.4090506@schaufler-ca.com \
    --to=casey@schaufler-ca.com \
    --cc=james.l.morris@oracle.com \
    --cc=l.pawelczyk@partner.samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=r.krypa@samsung.com \
    --cc=t.swierczek@samsung.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