Show /proc/self/net only for CAP_NET_ADMIN if procfs is mounted with
subset=pid option in user namespace. This is done to avoid possible
information leakage.

Signed-off-by: Alexey Gladkov <gladkov.ale...@gmail.com>
---
 fs/proc/proc_net.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c
index dba63b2429f0..11fa2c4b3529 100644
--- a/fs/proc/proc_net.c
+++ b/fs/proc/proc_net.c
@@ -275,6 +275,12 @@ static struct net *get_proc_task_net(struct inode *dir)
        struct task_struct *task;
        struct nsproxy *ns;
        struct net *net = NULL;
+       struct proc_fs_info *fs_info = proc_sb_info(dir->i_sb);
+
+       if ((fs_info->pidonly == PROC_PIDONLY_ON) &&
+           (current_user_ns() != &init_user_ns) &&
+           !capable(CAP_NET_ADMIN))
+               return net;
 
        rcu_read_lock();
        task = pid_task(proc_pid(dir), PIDTYPE_PID);
-- 
2.25.4

Reply via email to