Skip to content

Commit 873e77e

Browse files
committed
If skip-service-descriptor=true, do not use fork server
The fork server doesn't load the configuration, so it would send the service descriptor anyway. Also change SELinux policy so that qrexec-agent can actually connect to TCP sockets. Fixes: QubesOS/qubes-issues#9161
1 parent 76790cb commit 873e77e

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

agent/qrexec-agent.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,9 @@ static void handle_server_exec_request_do(int type,
648648
return;
649649
}
650650

651-
if (cmd != NULL && !cmd->nogui) {
651+
/* Fork server does not load configuration, so if sending a service
652+
* descriptor is not enabled, do not use it. */
653+
if (cmd != NULL && !cmd->nogui && cmd->send_service_descriptor) {
652654
/* try fork server */
653655
int child_socket = try_fork_server(type,
654656
params->connect_domain, params->connect_port,

selinux/qubes-core-qrexec.te

+17
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# License: GPLv2, same as Fedora's SELinux policy
12
policy_module(qubes-core-qrexec, 0.0.1)
23

34
require {
@@ -55,3 +56,19 @@ write_sock_files_pattern(qubes_qrexec_agent_t, qubes_var_run_t, qubes_var_run_t)
5556
allow domain qubes_qrexec_agent_t:unix_stream_socket { rw_inherited_sock_file_perms ioctl };
5657
allow qubes_qrexec_agent_t domain:unix_stream_socket connectto;
5758
allow qubes_qrexec_agent_t file_type:sock_file { rw_sock_file_perms ioctl };
59+
60+
# All of this is taken from userdomain.if, so that
61+
# qrexec can connect to any TCP socket.
62+
corenet_tcp_sendrecv_generic_if(qubes_qrexec_agent_t)
63+
corenet_tcp_sendrecv_generic_node(qubes_qrexec_agent_t)
64+
corenet_tcp_sendrecv_all_ports(qubes_qrexec_agent_t)
65+
corenet_tcp_connect_all_ports(qubes_qrexec_agent_t)
66+
corenet_sendrecv_all_client_packets(qubes_qrexec_agent_t)
67+
68+
optional_policy(`
69+
init_tcp_recvfrom_all_daemons(qubes_qrexec_agent_t)
70+
')
71+
72+
optional_policy(`
73+
ipsec_match_default_spd(qubes_qrexec_agent_t)
74+
')

0 commit comments

Comments
 (0)