From 5cf3994d8ab039f9ba47164ef9d13e2ddb5e7acd Mon Sep 17 00:00:00 2001
From: Nick Kralevich <nnk@google.com>
Date: Wed, 25 Feb 2015 13:28:40 -0800
Subject: [PATCH] Revert /proc/net related changes

Revert the tightening of /proc/net access. These changes
are causing a lot of denials, and I want additional time to
figure out a better solution.

Addresses the following denials (and many more):

  avc: denied { read } for comm="SyncAdapterThre" name="stats" dev="proc" ino=X scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc_net:s0 tclass=file
  avc: denied { read } for comm="facebook.katana" name="iface_stat_fmt" dev="proc" ino=X scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc_net:s0 tclass=file
  avc: denied { read } for comm="IntentService[C" name="if_inet6" dev="proc" ino=X scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc_net:s0 tclass=file
  avc: denied { read } for comm="dumpstate" name="iface_stat_all" dev="proc" ino=X scontext=u:r:dumpstate:s0 tcontext=u:object_r:proc_net:s0 tclass=file

This reverts commit 0f0324cc826afb9beefda802d496befe823a081e
and commit 99940d1af5719f1622fa2a17f8daf6cb21de3ad1

Bug: 9496886
Bug: 19034637
Change-Id: I436a6e3638ac9ed49afbee214e752fe2b0112868
---
 app.te           | 1 -
 clatd.te         | 1 -
 dhcp.te          | 3 +--
 domain.te        | 3 +--
 dumpstate.te     | 1 -
 file.te          | 1 -
 genfs_contexts   | 1 -
 init.te          | 3 +--
 mediaserver.te   | 1 -
 netd.te          | 3 +--
 radio.te         | 1 -
 system_server.te | 1 -
 12 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/app.te b/app.te
index be47ca557..c17c90336 100644
--- a/app.te
+++ b/app.te
@@ -83,7 +83,6 @@ allow appdomain dumpstate:unix_stream_socket { read write getopt getattr shutdow
 allow appdomain shell_data_file:file { write getattr };
 
 # Write to /proc/net/xt_qtaguid/ctrl file.
-allow appdomain proc_net:dir search;
 allow appdomain qtaguid_proc:file rw_file_perms;
 # Everybody can read the xt_qtaguid resource tracking misc dev.
 # So allow all apps to read from /dev/xt_qtaguid.
diff --git a/clatd.te b/clatd.te
index 0492f22db..0371e1462 100644
--- a/clatd.te
+++ b/clatd.te
@@ -15,7 +15,6 @@ allow clatd netd:udp_socket { read write };
 allow clatd netd:unix_stream_socket { read write };
 allow clatd netd:unix_dgram_socket { read write };
 
-r_dir_file(clatd, proc_net)
 allow clatd self:capability { net_admin net_raw setuid setgid };
 
 allow clatd self:netlink_route_socket nlmsg_write;
diff --git a/dhcp.te b/dhcp.te
index 898e3a124..32a6cccb1 100644
--- a/dhcp.te
+++ b/dhcp.te
@@ -12,8 +12,7 @@ allow dhcp self:netlink_route_socket nlmsg_write;
 allow dhcp shell_exec:file rx_file_perms;
 allow dhcp system_file:file rx_file_perms;
 # For /proc/sys/net/ipv4/conf/*/promote_secondaries
-allow dhcp proc_net:file rw_file_perms;
-allow dhcp proc_net:dir r_dir_perms;
+allow dhcp proc_net:file write;
 allow dhcp dhcp_prop:property_service set;
 allow dhcp pan_result_prop:property_service set;
 unix_socket_connect(dhcp, property, init)
diff --git a/domain.te b/domain.te
index 1c0a598d7..bc5523798 100644
--- a/domain.te
+++ b/domain.te
@@ -145,9 +145,8 @@ r_dir_file(domain, sysfs)
 r_dir_file(domain, sysfs_devices_system_cpu)
 r_dir_file(domain, inotify)
 r_dir_file(domain, cgroup)
+r_dir_file(domain, proc_net)
 allow domain proc_cpuinfo:file r_file_perms;
-allow domain proc_net:dir search;
-allow domain proc_net_psched:file r_file_perms;
 
 # debugfs access
 allow domain debugfs:dir r_dir_perms;
diff --git a/dumpstate.te b/dumpstate.te
index 876eaca03..320b19fa3 100644
--- a/dumpstate.te
+++ b/dumpstate.te
@@ -61,7 +61,6 @@ domain_auto_trans(dumpstate, vdc_exec, vdc)
 allow dumpstate sysfs:file w_file_perms;
 
 # Other random bits of data we want to collect
-allow dumpstate proc_net:dir search;
 allow dumpstate qtaguid_proc:file r_file_perms;
 allow dumpstate debugfs:file r_file_perms;
 
diff --git a/file.te b/file.te
index a0173831e..5ac2b66b5 100644
--- a/file.te
+++ b/file.te
@@ -12,7 +12,6 @@ type qtaguid_proc, fs_type, mlstrustedobject;
 type proc_bluetooth_writable, fs_type;
 type proc_cpuinfo, fs_type;
 type proc_net, fs_type;
-type proc_net_psched, fs_type;
 type proc_sysrq, fs_type;
 type selinuxfs, fs_type, mlstrustedobject;
 type cgroup, fs_type, mlstrustedobject;
diff --git a/genfs_contexts b/genfs_contexts
index 2f60ad1c5..31b7e4f64 100644
--- a/genfs_contexts
+++ b/genfs_contexts
@@ -3,7 +3,6 @@ genfscon rootfs / u:object_r:rootfs:s0
 # proc labeling can be further refined (longest matching prefix).
 genfscon proc / u:object_r:proc:s0
 genfscon proc /net u:object_r:proc_net:s0
-genfscon proc /net/psched u:object_r:proc_net_psched:s0
 genfscon proc /net/xt_qtaguid/ctrl u:object_r:qtaguid_proc:s0
 genfscon proc /cpuinfo u:object_r:proc_cpuinfo:s0
 genfscon proc /sysrq-trigger u:object_r:proc_sysrq:s0
diff --git a/init.te b/init.te
index d81f5afb6..8b0ab422d 100644
--- a/init.te
+++ b/init.te
@@ -124,8 +124,7 @@ allow init proc_security:file rw_file_perms;
 allow init proc:file w_file_perms;
 
 # Write to /proc/sys/net/ping_group_range and other /proc/sys/net files.
-allow init proc_net:file rw_file_perms;
-allow init proc_net:dir r_dir_perms;
+allow init proc_net:file w_file_perms;
 allow init self:capability net_admin;
 
 # Write to /proc/sysrq-trigger.
diff --git a/mediaserver.te b/mediaserver.te
index 6e6c87d5c..ec69aed09 100644
--- a/mediaserver.te
+++ b/mediaserver.te
@@ -61,7 +61,6 @@ allow mediaserver audio_data_file:dir ra_dir_perms;
 allow mediaserver audio_data_file:file create_file_perms;
 
 # Read/[write] to /proc/net/xt_qtaguid/ctrl and /dev/xt_qtaguid
-allow mediaserver proc_net:dir search;
 allow mediaserver qtaguid_proc:file rw_file_perms;
 allow mediaserver qtaguid_device:chr_file r_file_perms;
 
diff --git a/netd.te b/netd.te
index 96d485ace..5f4f38cb7 100644
--- a/netd.te
+++ b/netd.te
@@ -24,8 +24,7 @@ allow netd system_file:file x_file_perms;
 allow netd devpts:chr_file rw_file_perms;
 
 # For /proc/sys/net/ipv[46]/route/flush.
-allow netd proc_net:file rw_file_perms;
-allow netd proc_net:dir r_dir_perms;
+allow netd proc_net:file write;
 
 # For /sys/modules/bcmdhd/parameters/firmware_path
 # XXX Split into its own type.
diff --git a/radio.te b/radio.te
index 03d15805a..a6aec28e1 100644
--- a/radio.te
+++ b/radio.te
@@ -17,7 +17,6 @@ allow radio radio_data_file:notdevfile_class_set create_file_perms;
 
 allow radio alarm_device:chr_file rw_file_perms;
 
-r_dir_file(radio, proc_net)
 allow radio net_data_file:dir search;
 allow radio net_data_file:file r_file_perms;
 
diff --git a/system_server.te b/system_server.te
index bfe5b89b0..ae9ada2c3 100644
--- a/system_server.te
+++ b/system_server.te
@@ -91,7 +91,6 @@ allow system_server appdomain:file write;
 # Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.
 allow system_server qtaguid_proc:file rw_file_perms;
 allow system_server qtaguid_device:chr_file rw_file_perms;
-r_dir_file(system_server, proc_net)
 
 # Write to /proc/sysrq-trigger.
 allow system_server proc_sysrq:file rw_file_perms;
-- 
GitLab