[PATCH v1 2/2] Show /proc/self/net only for CAP_NET_ADMIN

From: Alexey Gladkov
Date: Mon Jul 27 2020 - 10:29:25 EST


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.alexey@xxxxxxxxx>
---
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