Tag: recursive-privilege-change
Severity: warning
Check: scripts
Renamed-From: maintainer-script-should-not-use-recursive-chown-or-chmod
Explanation: The named maintainer script appears to call chmod
or
chown
with a --recursive
/-R
argument, or
it uses find(1)
with similar intent.
.
All such uses are vulnerable to hardlink attacks on mainline (i.e.
non-Debian) kernels that do not set fs.protected_hardlinks=1
.
.
The security risk arises when a non-privileged user set links to
files they do not own, such as such as /etc/shadow
or
files in /var/lib/dpkg/
. A superuser's recursive call to
chown
or chmod
on behalf of a role user account
would then modify the non-owned files in ways that allow the
non-privileged user to manipulate them later.
.
There are several ways to mitigate the issue in maintainer scripts:
.
- For a static role user, please call chown
at build time
and not during the installation.
- If that is too complicated, use runuser(1)
in the
relevant build parts to create files with correct ownership.
- Given a static list of files to change, use non-recursive calls
for each file. (Please do not generate the list with find
.)
See-Also: Bug#895597, Bug#889060, Bug#889488, runuser(1)