mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Yama: higher restrictions should block PTRACE_TRACEME
The higher ptrace restriction levels should be blocking even PTRACE_TRACEME requests. The comments in the LSM documentation are misleading about when the checks happen (the parent does not go through security_ptrace_access_check() on a PTRACE_TRACEME call). Signed-off-by: Kees Cook <[email protected]> Cc: [email protected] # 3.5.x and later Signed-off-by: James Morris <[email protected]>
This commit is contained in:
parent
f4ba394c1b
commit
9d8dad742a
3 changed files with 48 additions and 9 deletions
|
|
@ -290,10 +290,51 @@ static int yama_ptrace_access_check(struct task_struct *child,
|
|||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* yama_ptrace_traceme - validate PTRACE_TRACEME calls
|
||||
* @parent: task that will become the ptracer of the current task
|
||||
*
|
||||
* Returns 0 if following the ptrace is allowed, -ve on error.
|
||||
*/
|
||||
static int yama_ptrace_traceme(struct task_struct *parent)
|
||||
{
|
||||
int rc;
|
||||
|
||||
/* If standard caps disallows it, so does Yama. We should
|
||||
* only tighten restrictions further.
|
||||
*/
|
||||
rc = cap_ptrace_traceme(parent);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
/* Only disallow PTRACE_TRACEME on more aggressive settings. */
|
||||
switch (ptrace_scope) {
|
||||
case YAMA_SCOPE_CAPABILITY:
|
||||
if (!ns_capable(task_user_ns(parent), CAP_SYS_PTRACE))
|
||||
rc = -EPERM;
|
||||
break;
|
||||
case YAMA_SCOPE_NO_ATTACH:
|
||||
rc = -EPERM;
|
||||
break;
|
||||
}
|
||||
|
||||
if (rc) {
|
||||
char name[sizeof(current->comm)];
|
||||
printk_ratelimited(KERN_NOTICE
|
||||
"ptraceme of pid %d was attempted by: %s (pid %d)\n",
|
||||
current->pid,
|
||||
get_task_comm(name, parent),
|
||||
parent->pid);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static struct security_operations yama_ops = {
|
||||
.name = "yama",
|
||||
|
||||
.ptrace_access_check = yama_ptrace_access_check,
|
||||
.ptrace_traceme = yama_ptrace_traceme,
|
||||
.task_prctl = yama_task_prctl,
|
||||
.task_free = yama_task_free,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue