install-sh: avoid (low risk) race in "/tmp"
commit968bf9f66e3966d1975295b97539876518ebd2a0
authorPavel Raiskup <praiskup@redhat.com>
Sun, 11 Mar 2018 20:47:54 +0000 (11 21:47 +0100)
committerMathieu Lirzin <mthl@gnu.org>
Sun, 11 Mar 2018 21:18:51 +0000 (11 22:18 +0100)
tree5b61198cb9696340b5976b91a5dcb9834304724c
parent74902aa24d4c313ab51fa684142d9240f636971a
install-sh: avoid (low risk) race in "/tmp"

Ensure that nobody can cross privilege boundaries by pre-creating
symlink on '$tmpdir' destination directory.

Just testing 'mkdir -p' by creating "/tmp/ins$RANDOM-$$/d" is not safe
because "/tmp" directory is usually world-writeable and
"/tmp/ins$RANDOM-$$" content could be pretty easily guessed by
attacker (at least for shells where $RANDOM is not supported).  So, as
the first step, create the "/tmp/ins$RANDOM-$$" without -p.  This step
would fail early if somebody wanted catch us.

Systems that implement (and have enabled) fs.protected_symlinks kernel
feature are not affected even without this commit.

References:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760455
https://bugzilla.redhat.com/show_bug.cgi?id=1140725

* lib/install-sh: Implement safer 'mkdir -p' test by running
'$mkdirprog $mkdir_mode "$tmpdir"' first.
* NEWS: Update.

Signed-off-by: Mathieu Lirzin <mthl@gnu.org>
NEWS
lib/install-sh