Gentoo Archives: gentoo-commits

From: Sven Vermeulen <swift@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/hardened-refpolicy:master commit in: policy/modules/contrib/
Date: Sat, 07 Jun 2014 19:18:14
Message-Id: 1402168327.f405a39417d6a763f0193cd03c8b122a1fc93ab1.swift@gentoo
1 commit: f405a39417d6a763f0193cd03c8b122a1fc93ab1
2 Author: Jason Zaman <jason <AT> perfinion <DOT> com>
3 AuthorDate: Sat Jun 7 19:09:58 2014 +0000
4 Commit: Sven Vermeulen <swift <AT> gentoo <DOT> org>
5 CommitDate: Sat Jun 7 19:12:07 2014 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-refpolicy.git;a=commit;h=f405a394
7
8 New policy module for Dropbox
9
10 https://www.dropbox.com/
11
12 Signed-off-by: Jason Zaman <jason <AT> perfinion.com>
13
14 ---
15 policy/modules/contrib/dropbox.fc | 11 ++++
16 policy/modules/contrib/dropbox.if | 113 ++++++++++++++++++++++++++++++++++++++
17 policy/modules/contrib/dropbox.te | 110 +++++++++++++++++++++++++++++++++++++
18 3 files changed, 234 insertions(+)
19
20 diff --git a/policy/modules/contrib/dropbox.fc b/policy/modules/contrib/dropbox.fc
21 new file mode 100644
22 index 0000000..8f35880
23 --- /dev/null
24 +++ b/policy/modules/contrib/dropbox.fc
25 @@ -0,0 +1,11 @@
26 +HOME_DIR/Dropbox(/.*)? gen_context(system_u:object_r:dropbox_content_t,s0)
27 +
28 +HOME_DIR/\.dropbox(/.*)? gen_context(system_u:object_r:dropbox_home_t,s0)
29 +HOME_DIR/\.dropbox-dist(/.*)? gen_context(system_u:object_r:dropbox_home_t,s0)
30 +HOME_DIR/\.dropbox-master(/.*)? gen_context(system_u:object_r:dropbox_home_t,s0)
31 +
32 +HOME_DIR/\.dropbox-dist/dropboxd? -- gen_context(system_u:object_r:dropbox_exec_t,s0)
33 +
34 +/opt/bin/dropbox -l gen_context(system_u:object_r:dropbox_exec_t,s0)
35 +/opt/dropbox/dropboxd? -- gen_context(system_u:object_r:dropbox_exec_t,s0)
36 +
37
38 diff --git a/policy/modules/contrib/dropbox.if b/policy/modules/contrib/dropbox.if
39 new file mode 100644
40 index 0000000..51e9f88
41 --- /dev/null
42 +++ b/policy/modules/contrib/dropbox.if
43 @@ -0,0 +1,113 @@
44 +## <summary>Dropbox client - Store, Sync and Share Files Online</summary>
45 +
46 +#######################################
47 +## <summary>
48 +## The role for using the dropbox client.
49 +## </summary>
50 +## <param name="role">
51 +## <summary>
52 +## The role associated with the user domain.
53 +## </summary>
54 +## </param>
55 +## <param name="domain">
56 +## <summary>
57 +## The user domain.
58 +## </summary>
59 +## </param>
60 +#
61 +interface(`dropbox_role',`
62 + gen_require(`
63 + type dropbox_t;
64 + type dropbox_exec_t;
65 + type dropbox_home_t;
66 + type dropbox_tmp_t;
67 + ')
68 +
69 + role $1 types dropbox_t;
70 +
71 + domtrans_pattern($2, dropbox_exec_t, dropbox_t)
72 +
73 + allow $2 dropbox_t:process { ptrace signal_perms };
74 +
75 + manage_dirs_pattern($2, dropbox_home_t, dropbox_home_t)
76 + manage_files_pattern($2, dropbox_home_t, dropbox_home_t)
77 + manage_sock_files_pattern($2, dropbox_home_t, dropbox_home_t)
78 +
79 + manage_files_pattern($2, dropbox_home_t, dropbox_exec_t)
80 + manage_lnk_files_pattern($2, dropbox_home_t, dropbox_exec_t)
81 +
82 + userdom_user_home_dir_filetrans($2, dropbox_home_t, dir, ".dropbox-dist")
83 + filetrans_pattern($2, dropbox_home_t, dropbox_exec_t, file, "dropbox")
84 + filetrans_pattern($2, dropbox_home_t, dropbox_exec_t, file, "dropboxd")
85 +
86 + manage_dirs_pattern($2, dropbox_tmp_t, dropbox_tmp_t)
87 + manage_files_pattern($2, dropbox_tmp_t, dropbox_tmp_t)
88 +
89 + allow $2 dropbox_content_t:dir relabel_dir_perms;
90 + allow $2 dropbox_content_t:file relabel_file_perms;
91 +
92 + dropbox_manage_content($2)
93 + dropbox_dbus_chat($2)
94 +
95 + ps_process_pattern($2, dropbox_t)
96 +')
97 +
98 +#########################################
99 +## <summary>
100 +## Send and receive messages from the dropbox daemon
101 +## over dbus.
102 +## </summary>
103 +## <param name="domain">
104 +## <summary>
105 +## Domain allowed access.
106 +## </summary>
107 +## </param>
108 +#
109 +interface(`dropbox_dbus_chat',`
110 + gen_require(`
111 + type dropbox_t;
112 + class dbus send_msg;
113 + ')
114 +
115 + allow $1 dropbox_t:dbus send_msg;
116 + allow dropbox_t $1:dbus send_msg;
117 +')
118 +
119 +#######################################
120 +## <summary>
121 +## Allow other domains to read dropbox's content files
122 +## </summary>
123 +## <param name="domain">
124 +## <summary>
125 +## The domain that is allowed read access to the dropbox_content_t files
126 +## </summary>
127 +## </param>
128 +#
129 +interface(`dropbox_read_content',`
130 + gen_require(`
131 + type dropbox_content_t;
132 + ')
133 +
134 + list_dirs_pattern($1, dropbox_content_t, dropbox_content_t)
135 + read_files_pattern($1, dropbox_content_t, dropbox_content_t)
136 +')
137 +
138 +#######################################
139 +## <summary>
140 +## Allow other domains to manage dropbox's content files
141 +## </summary>
142 +## <param name="domain">
143 +## <summary>
144 +## The domain that is allowed to manage the dropbox_content_t files and directories
145 +## </summary>
146 +## </param>
147 +#
148 +interface(`dropbox_manage_content',`
149 + gen_require(`
150 + type dropbox_content_t;
151 + ')
152 +
153 + manage_dirs_pattern($1, dropbox_content_t, dropbox_content_t)
154 + manage_files_pattern($1, dropbox_content_t, dropbox_content_t)
155 +')
156 +
157
158 diff --git a/policy/modules/contrib/dropbox.te b/policy/modules/contrib/dropbox.te
159 new file mode 100644
160 index 0000000..1348ff0
161 --- /dev/null
162 +++ b/policy/modules/contrib/dropbox.te
163 @@ -0,0 +1,110 @@
164 +policy_module(dropbox, 0.0.1)
165 +
166 +############################
167 +#
168 +# Declarations
169 +#
170 +
171 +## <desc>
172 +## <p>
173 +## Determine whether dropbox can bind to
174 +## local tcp and udp ports.
175 +## Required for Dropbox' LAN Sync feature
176 +## </p>
177 +## </desc>
178 +gen_tunable(dropbox_bind_port, false)
179 +
180 +type dropbox_t;
181 +type dropbox_exec_t;
182 +userdom_user_application_domain(dropbox_t, dropbox_exec_t)
183 +
184 +# the dropbox dirs eg. ~/.dropbox/
185 +type dropbox_home_t;
186 +userdom_user_home_content(dropbox_home_t)
187 +
188 +# the type for the main ~/Dropbox folder
189 +type dropbox_content_t; # customizable
190 +userdom_user_home_content(dropbox_content_t)
191 +
192 +type dropbox_tmp_t;
193 +userdom_user_tmp_file(dropbox_tmp_t)
194 +
195 +# for X server SHM
196 +type dropbox_tmpfs_t;
197 +userdom_user_tmpfs_file(dropbox_tmpfs_t)
198 +
199 +############################
200 +#
201 +# Local Policy Rules
202 +#
203 +
204 +allow dropbox_t self:process signal_perms;
205 +allow dropbox_t self:fifo_file rw_fifo_file_perms;
206 +allow dropbox_t dropbox_home_t:file mmap_file_perms;
207 +
208 +# dropbox updates itself in /tmp then in ~/.dropbox-dist/
209 +can_exec(dropbox_t, dropbox_exec_t)
210 +can_exec(dropbox_t, dropbox_tmp_t)
211 +
212 +manage_dirs_pattern(dropbox_t, dropbox_home_t, dropbox_home_t)
213 +manage_files_pattern(dropbox_t, dropbox_home_t, dropbox_home_t)
214 +manage_lnk_files_pattern(dropbox_t, dropbox_home_t, dropbox_home_t)
215 +manage_sock_files_pattern(dropbox_t, dropbox_home_t, dropbox_home_t)
216 +userdom_user_home_dir_filetrans(dropbox_t, dropbox_home_t, { dir file })
217 +
218 +manage_files_pattern(dropbox_t, dropbox_home_t, dropbox_exec_t)
219 +manage_lnk_files_pattern(dropbox_t, dropbox_home_t, dropbox_exec_t)
220 +filetrans_pattern(dropbox_t, dropbox_home_t, dropbox_exec_t, file, "dropbox")
221 +filetrans_pattern(dropbox_t, dropbox_home_t, dropbox_exec_t, file, "dropboxd")
222 +
223 +manage_dirs_pattern(dropbox_t, dropbox_content_t, dropbox_content_t)
224 +manage_files_pattern(dropbox_t, dropbox_content_t, dropbox_content_t)
225 +userdom_user_home_dir_filetrans(dropbox_t, dropbox_content_t, dir, "Dropbox")
226 +
227 +manage_dirs_pattern(dropbox_t, dropbox_tmp_t, dropbox_tmp_t)
228 +manage_files_pattern(dropbox_t, dropbox_tmp_t, dropbox_tmp_t)
229 +files_tmp_filetrans(dropbox_t, dropbox_tmp_t, { file dir })
230 +
231 +manage_dirs_pattern(dropbox_t, dropbox_tmpfs_t, dropbox_tmpfs_t)
232 +manage_files_pattern(dropbox_t, dropbox_tmpfs_t, dropbox_tmpfs_t)
233 +fs_tmpfs_filetrans(dropbox_t, dropbox_tmpfs_t, { file dir })
234 +
235 +fs_getattr_xattr_fs(dropbox_t)
236 +fs_getattr_tmpfs(dropbox_t)
237 +kernel_read_vm_sysctls(dropbox_t)
238 +
239 +kernel_dontaudit_read_system_state(dropbox_t)
240 +kernel_dontaudit_list_proc(dropbox_t)
241 +
242 +corecmd_exec_bin(dropbox_t)
243 +corecmd_exec_shell(dropbox_t)
244 +
245 +dev_read_rand(dropbox_t)
246 +dev_read_urand(dropbox_t)
247 +
248 +files_read_usr_files(dropbox_t)
249 +auth_use_nsswitch(dropbox_t)
250 +miscfiles_read_localization(dropbox_t)
251 +
252 +userdom_search_user_home_content(dropbox_t)
253 +userdom_use_user_terminals(dropbox_t)
254 +
255 +xserver_user_x_domain_template(dropbox, dropbox_t, dropbox_tmpfs_t)
256 +
257 +dbus_all_session_bus_client(dropbox_t)
258 +
259 +corenet_all_recvfrom_netlabel(dropbox_t)
260 +corenet_all_recvfrom_unlabeled(dropbox_t)
261 +corenet_tcp_connect_http_port(dropbox_t)
262 +corenet_tcp_sendrecv_generic_if(dropbox_t)
263 +corenet_tcp_sendrecv_generic_node(dropbox_t)
264 +
265 +tunable_policy(`dropbox_bind_port',`
266 + corenet_tcp_bind_dropbox_port(dropbox_t)
267 + corenet_udp_bind_dropbox_port(dropbox_t)
268 + corenet_tcp_bind_generic_node(dropbox_t)
269 + corenet_udp_bind_generic_node(dropbox_t)
270 + allow dropbox_t self:tcp_socket { accept listen };
271 + allow dropbox_t self:udp_socket { send_msg recv_msg };
272 +')
273 +