Skip to content

Commit

Permalink
security: let security modules use PTRACE_MODE_* with bitmasks
Browse files Browse the repository at this point in the history
It looks like smack and yama weren't aware that the ptrace mode
can have flags ORed into it - PTRACE_MODE_NOAUDIT until now, but
only for /proc/$pid/stat, and with the PTRACE_MODE_*CREDS patch,
all modes have flags ORed into them.

Signed-off-by: Jann Horn <[email protected]>
Acked-by: Kees Cook <[email protected]>
Acked-by: Casey Schaufler <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: James Morris <[email protected]>
Cc: "Serge E. Hallyn" <[email protected]>
Cc: Andy Shevchenko <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Al Viro <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: Willy Tarreau <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
thejh authored and torvalds committed Jan 21, 2016
1 parent 570ac93 commit 3dfb7d8
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 7 deletions.
8 changes: 3 additions & 5 deletions security/smack/smack_lsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,12 +398,10 @@ static int smk_copy_relabel(struct list_head *nhead, struct list_head *ohead,
*/
static inline unsigned int smk_ptrace_mode(unsigned int mode)
{
switch (mode) {
case PTRACE_MODE_READ:
return MAY_READ;
case PTRACE_MODE_ATTACH:
if (mode & PTRACE_MODE_ATTACH)
return MAY_READWRITE;
}
if (mode & PTRACE_MODE_READ)
return MAY_READ;

return 0;
}
Expand Down
4 changes: 2 additions & 2 deletions security/yama/yama_lsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ static int yama_ptrace_access_check(struct task_struct *child,
int rc = 0;

/* require ptrace target be a child of ptracer on attach */
if (mode == PTRACE_MODE_ATTACH) {
if (mode & PTRACE_MODE_ATTACH) {
switch (ptrace_scope) {
case YAMA_SCOPE_DISABLED:
/* No additional restrictions. */
Expand All @@ -307,7 +307,7 @@ static int yama_ptrace_access_check(struct task_struct *child,
}
}

if (rc) {
if (rc && (mode & PTRACE_MODE_NOAUDIT) == 0) {
printk_ratelimited(KERN_NOTICE
"ptrace of pid %d was attempted by: %s (pid %d)\n",
child->pid, current->comm, current->pid);
Expand Down

0 comments on commit 3dfb7d8

Please sign in to comment.