Bug#841665: boinc-client: The boinc-client init script has a badly constructed parameter for xhost

Mike Brennan debian at u4ear.com
Fri Oct 21 20:42:38 UTC 2016

Package: boinc-client
Version: 7.6.33+dfsg-1~bpo8+1
Severity: grave
Tags: security
Justification: user security hole

Dear Maintainers,

boinc-client shell script is used by init/systemd to start the boinc client daemon (typically running as user=boinc)

In order for boinc to access GPU hardware -  xhost is used to grant access to boinc.

At line 109-110
# grant the boinc client to perform GPU computing
       xhost local:boinc || echo -n "xhost error ignored, GPU computing may not be possible"

the correct syntax stould be 
       xhost +si:localuser:boinc
or more correctly for the this script
       xhost +si:localuser:$BOINC_USER

The impact of using this incorrect syntax - is not to error, but grant ALL local users access.  
(This could be a very old or different maybe BSD syntax)

The intention of the script to grant ONLY user=boinc access, instead all local users have access.

For example a little test.

agentb at dejon:/etc/init.d$ xhost
access control enabled, only authorized clients can connect

agentb at dejon:/etc/init.d$ xhost local:random-string
non-network local connections being added to access control list

agentb at dejon:/etc/init.d$ xhost
access control enabled, only authorized clients can connect

Hope this is clear, and thank you for maintaining boinc!


-- Package-specific info:
-- Contents of /etc/default/boinc-client:
# This file is /etc/default/boinc-client, it is a configuration file for the
# /etc/init.d/boinc-client init script.

# Set this to 1 to enable and to 0 to disable the init script.

# Set this to 1 to enable advanced scheduling of the BOINC core client and
# all its sub-processes (reduces the impact of BOINC on the system's
# performance).

# The BOINC core client will be started with the permissions of this user.

# This is the data directory of the BOINC core client.

# This is the location of the BOINC core client, that the init script uses.
# If you do not want to use the client program provided by the boinc-client
# package, you can specify here an alternative client program.

# Here you can specify additional options to pass to the BOINC core client.
# Type 'boinc --help' or 'man boinc' for a full summary of allowed options.

# Scheduling options

# Set SCHEDULE="0" if prefering to run with upstream default priority
# settings.

# Nice levels. When systems are truly busy, e.g. because of too many active
# scientific applications started by the boinc client, there is a chance for
# the boinc client not to be granted sufficient opportunity to check for
# scientific applications to be alive and make the (wrong) decision to
# terminate the scientific app. This is particularly an issue with many
# apps started in parallel on modern multi-core systems and extra overheads
# for the download and uploads of files with the project servers. Another
# concern is the latency for scientific applications to communicate with the
# graphics card, which should be low. All such values should be set and
# controled from within the BOINC client. The Debian init script also sets
# extra constrains via chrt on real time performance and via ionice on 
# I/O performance, which is beyond the regular BOINC client. It then was
# too easy to use that code to also constrain minimal nice levels. We still
# think about how to best distinguish GPU applications from regular apps.
#BOINC_NICE_APP_GPU=5        # not yet used

# ionice classes. See manpage of ionice (1) in the util-linux package.
BOINC_IONICE_CLIENT=3        # idle
#BOINC_IONICE_APP_DEFAULT=3  # idle, not yet used
#BOINC_IONICE_APP_GPU=2      # best effort, not yet used

-- System Information:
Debian Release: 8.6
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16.0-4-amd64 (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages boinc-client depends on:
ii  adduser                3.113+nmu3
ii  ca-certificates        20141019+deb8u1
ii  debconf [debconf-2.0]  1.5.56
ii  init-system-helpers    1.22
ii  libboinc7              7.6.33+dfsg-1~bpo8+1
ii  libc6                  2.19-18+deb8u6
ii  libcurl3               7.38.0-4+deb8u4
ii  libgcc1                1:4.9.2-10
ii  libstdc++6             4.9.2-10
ii  libx11-6               2:1.6.2-3
ii  libxss1                1:1.2.2-1
ii  python                 2.7.9-1
ii  zlib1g                 1:1.2.8.dfsg-2+b1

boinc-client recommends no packages.

Versions of packages boinc-client suggests:
pn  boinc-client-fglrx        <none>
pn  boinc-client-nvidia-cuda  <none>
pn  boinc-client-opencl       <none>
ii  boinc-manager             7.6.33+dfsg-1~bpo8+1
ii  x11-xserver-utils         7.7+3+b1

-- Configuration Files:
/etc/boinc-client/cc_config.xml changed [not included]
/etc/boinc-client/global_prefs_override.xml changed [not included]

-- debconf information excluded

More information about the pkg-boinc-devel mailing list