proc: revalidate kernel thread inodes to root:root
PATCH 1/1 proc: revalidate kernel thread inodes to root:root
task_dump_owner() has the following code:
mm = task->mm;
if (mm) {
if (get_dumpable(mm) != SUID_DUMP_USER) {
uid = ...
}
}Check for ->mm is buggy -- kernel thread might be borrowing mm and inode will go to some random uid:gid pair.
Signed-off-by Alexey Dobriyan <[email protected]>
---
fs/proc/base.c | 6 ++++++ 1 file changed, 6 insertions(+)
fs/proc/base.c +6 -0
@@ -1693,6 +1693,12 @@ void task_dump_owner(struct task_struct *task, umode_t mode,kuid_t uid;kgid_t gid; +if (unlikely (task->flags &PF_KTHREAD )) { + *ruid =GLOBAL_ROOT_UID ; + *rgid =GLOBAL_ROOT_GID ; +return ; + } +/* Default to the tasks effective ownership */ rcu_read_lock (); cred =__task_cred (task);