Use a strict $PATH of "/usr/bin:/usr/local/bin" to run the (de)compressors
authorderaadt <deraadt@openbsd.org>
Wed, 14 Oct 2015 20:57:28 +0000 (20:57 +0000)
committerderaadt <deraadt@openbsd.org>
Wed, 14 Oct 2015 20:57:28 +0000 (20:57 +0000)
commit2a567ea3f66b963ebeeaa70d31c98b018428ca26
tree4c7765862389bcc23b629c7692660393d2004711
parentd6921fea0c2c84d244afb0958c52bbdf399b9101
Use a strict $PATH of "/usr/bin:/usr/local/bin" to run the (de)compressors
(gzip, compress, bzip2) rather than following the user's path.  This
seems easier than hardcoding the paths elsewhere and using basename().

pax/tar is pledged itself, but it can spawn one of these programs if
asked.  The three found at the strict path use pledge "stdio" very early
during startup, providing a warm fuzzy pledge->exec->no-pledge->pledge
interlock.  For bzip2, this assumes use of the ports/packages version
installed to /usr/local/bin, which has been pledged by sthen@.

Doing a 'tar tvfz hostile.tgz' becomes a bit safer, since an attacker
finding a buffer overflow or use after free has significantly fewer
system calls available (only pledge "stdio" in the decompressor).

ok millert sthen
bin/pax/ar_io.c