From 85c5fc21c8a6259ec74686d62cf2c9a3fe01a56e Mon Sep 17 00:00:00 2001
From: William Roberts <wroberts@tresys.com>
Date: Sun, 6 Oct 2013 15:36:11 -0400
Subject: [PATCH] Start confining ueventd

* Keep ueventd in permissive
* Drop unconfined macro to collect logs
* Restore allow rules to current NSA maintained policy

Change-Id: Ic4ee8e24ccd8887fed151ae1e4f197512849f57b
---
 domain.te  |  4 ++--
 ueventd.te | 19 ++++++++++++++++++-
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/domain.te b/domain.te
index bfe8a9cc5..6e5e83cc6 100644
--- a/domain.te
+++ b/domain.te
@@ -139,8 +139,8 @@ neverallow { domain -relabeltodomain } *:dir_file_class_set relabelto;
 # Only init should be able to load SELinux policies
 neverallow { domain -init } kernel:security load_policy;
 
-# Only init and system_server should be able to access HW RNG
-neverallow { domain -init -system_server -unconfineddomain } hw_random_device:chr_file *;
+# Only init, ueventd and system_server should be able to access HW RNG
+neverallow { domain -init -system_server -ueventd -unconfineddomain } hw_random_device:chr_file *;
 
 # Ensure that all entrypoint executables are in exec_type.
 neverallow domain { file_type -exec_type }:file entrypoint;
diff --git a/ueventd.te b/ueventd.te
index 6e1a4a82b..1562c0e88 100644
--- a/ueventd.te
+++ b/ueventd.te
@@ -3,5 +3,22 @@
 type ueventd, domain;
 permissive ueventd;
 tmpfs_domain(ueventd)
-unconfined_domain(ueventd)
+write_klog(ueventd)
+security_access_policy(ueventd)
+relabelto_domain(ueventd)
 allow ueventd rootfs:file entrypoint;
+allow ueventd init:process sigchld;
+allow ueventd self:capability { chown mknod net_admin setgid fsetid sys_rawio dac_override fowner };
+allow ueventd device:file create_file_perms;
+allow ueventd device:chr_file rw_file_perms;
+allow ueventd sysfs:file rw_file_perms;
+allow ueventd sysfs:file setattr;
+allow ueventd sysfs_type:file { relabelfrom relabelto };
+allow ueventd tmpfs:chr_file rw_file_perms;
+allow ueventd dev_type:dir create_dir_perms;
+allow ueventd dev_type:lnk_file { create unlink };
+allow ueventd dev_type:chr_file { create setattr unlink };
+allow ueventd dev_type:blk_file { create setattr unlink };
+allow ueventd self:netlink_kobject_uevent_socket *;
+allow ueventd efs_file:dir search;
+allow ueventd efs_file:file r_file_perms;
-- 
GitLab