提交 30d6fe82 编写于 作者: K Kees Cook 提交者: Zheng Zengkai

proc: Check /proc/$pid/attr/ writes against file opener

stable inclusion
from stable-5.10.42
commit fb003a1bd60358c0ccee0145079de258a6cf0ba8
bugzilla: 55093
CVE: NA

--------------------------------

commit bfb819ea upstream.

Fix another "confused deputy" weakness[1]. Writes to /proc/$pid/attr/
files need to check the opener credentials, since these fds do not
transition state across execve(). Without this, it is possible to
trick another process (which may have different credentials) to write
to its own /proc/$pid/attr/ files, leading to unexpected and possibly
exploitable behaviors.

[1] https://www.kernel.org/doc/html/latest/security/credentials.html?highlight=confused#open-file-credentials

Fixes: 1da177e4 ("Linux-2.6.12-rc2")
Cc: stable@vger.kernel.org
Signed-off-by: NKees Cook <keescook@chromium.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Acked-by: NWeilong Chen <chenweilong@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 ce17d828
...@@ -2720,6 +2720,10 @@ static ssize_t proc_pid_attr_write(struct file * file, const char __user * buf, ...@@ -2720,6 +2720,10 @@ static ssize_t proc_pid_attr_write(struct file * file, const char __user * buf,
void *page; void *page;
int rv; int rv;
/* A task may only write when it was the opener. */
if (file->f_cred != current_real_cred())
return -EPERM;
rcu_read_lock(); rcu_read_lock();
task = pid_task(proc_pid(inode), PIDTYPE_PID); task = pid_task(proc_pid(inode), PIDTYPE_PID);
if (!task) { if (!task) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册