Commit c5fd8a79 authored by Kees Cook's avatar Kees Cook Committed by Stefan Bader

Yama: Check for pid death before checking ancestry

BugLink: https://bugs.launchpad.net/bugs/1818797

commit 9474f4e7 upstream.

It's possible that a pid has died before we take the rcu lock, in which
case we can't walk the ancestry list as it may be detached. Instead, check
for death first before doing the walk.

Reported-by: syzbot+a9ac39bf55329e206219@syzkaller.appspotmail.com
Fixes: 2d514487 ("security: Yama LSM")
Cc: stable@vger.kernel.org
Suggested-by: default avatarOleg Nesterov <oleg@redhat.com>
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarJames Morris <james.morris@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarJuerg Haefliger <juergh@canonical.com>
Signed-off-by: default avatarKhalid Elmously <khalid.elmously@canonical.com>
parent 5f0b537d
...@@ -288,7 +288,9 @@ static int yama_ptrace_access_check(struct task_struct *child, ...@@ -288,7 +288,9 @@ static int yama_ptrace_access_check(struct task_struct *child,
break; break;
case YAMA_SCOPE_RELATIONAL: case YAMA_SCOPE_RELATIONAL:
rcu_read_lock(); rcu_read_lock();
if (!task_is_descendant(current, child) && if (!pid_alive(child))
rc = -EPERM;
if (!rc && !task_is_descendant(current, child) &&
!ptracer_exception_found(current, child) && !ptracer_exception_found(current, child) &&
!ns_capable(__task_cred(child)->user_ns, CAP_SYS_PTRACE)) !ns_capable(__task_cred(child)->user_ns, CAP_SYS_PTRACE))
rc = -EPERM; rc = -EPERM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment