lix/tests
aszlig 43e28a1b75
Fix symlink leak in restricted eval mode
In EvalState::checkSourcePath, the path is checked against the list of
allowed paths first and later it's checked again *after* resolving
symlinks.

The resolving of the symlinks is done via canonPath, which also strips
out "../" and "./". However after the canonicalisation the error message
pointing out that the path is not allowed prints the symlink target in
the error message.

Even if we'd suppress the message, symlink targets could still be leaked
if the symlink target doesn't exist (in this case the error is thrown in
canonPath).

So instead, we now do canonPath() without symlink resolving first before
even checking against the list of allowed paths and then later do the
symlink resolving and checking the allowed paths again.

The first call to canonPath() should get rid of all the "../" and "./",
so in theory the only way to leak a symlink if the attacker is able to
put a symlink in one of the paths allowed by restricted evaluation mode.

For the latter I don't think this is part of the threat model, because
if the attacker can write to that path, the attack vector is even
larger.

Signed-off-by: aszlig <aszlig@nix.build>
2018-08-03 06:46:43 +02:00
..
lang lib.concatMap and lib.mapAttrs to be builtins 2018-07-05 02:54:09 +00:00
plugins Modularize config settings 2018-05-30 13:28:01 +02:00
add.sh * Refactoring: remove unnecessary variables from the tests. 2011-10-10 21:32:34 +00:00
binary-cache.sh Don't require --fallback to recover from disappeared binary cache NARs 2018-06-05 16:04:41 +02:00
brotli.sh use libbrotli directly when available 2017-12-30 20:26:33 -06:00
build-dry.sh build-dry: disable failing portion of test until issue is fixed 2018-02-07 15:20:54 -06:00
build-hook.nix build-remote: Add a basic test 2017-05-02 15:46:10 +02:00
build-remote.sh Fix tests using user namespaces on kernels that don't have it 2018-01-13 19:08:41 +02:00
case-hack.sh Fix tests 2014-08-21 21:50:19 +02:00
case.nar Handle case collisions on case-insensitive systems 2014-07-16 16:02:05 +02:00
check-refs.nix Add disallowedReferences / disallowedRequisites 2014-08-28 18:57:13 +02:00
check-refs.sh Add disallowedReferences / disallowedRequisites 2014-08-28 18:57:13 +02:00
check-reqs.nix Add disallowedReferences / disallowedRequisites 2014-08-28 18:57:13 +02:00
check-reqs.sh Print out all bad references/requisites at once 2016-04-16 19:58:26 -04:00
check.nix Fix test 2018-01-22 17:04:08 +01:00
check.sh Don't access tarballs.nixos.org in a test 2018-01-22 16:56:28 +01:00
common.sh.in tests: more robust check for user namespaces availability (canUseSandbox) 2018-06-06 00:41:01 +03:00
config.nix Pass lists/attrsets to bash as (associative) arrays 2017-10-25 13:01:50 +02:00
dependencies.builder0.sh Test executables in NARs 2014-02-26 18:59:01 +01:00
dependencies.builder1.sh * Purify `make check'. 2006-07-21 13:21:43 +00:00
dependencies.builder2.sh * Purify `make check'. 2006-07-21 13:21:43 +00:00
dependencies.nix Test string semantics a bit more 2013-10-17 01:12:43 +02:00
dependencies.sh * Refactoring: remove unnecessary variables from the tests. 2011-10-10 21:32:34 +00:00
dump-db.sh Remove $NIX_DB_DIR 2016-08-10 18:05:35 +02:00
export-graph.nix Support quoted attribute names in -A 2013-11-18 10:21:12 +00:00
export-graph.sh Support quoted attribute names in -A 2013-11-18 10:21:12 +00:00
export.sh Fix #1762 2018-02-13 14:26:19 +00:00
fetchGit.sh Add pure evaluation mode 2018-01-16 19:23:18 +01:00
fetchMercurial.sh Add pure evaluation mode 2018-01-16 19:23:18 +01:00
fetchurl.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
filter-source.nix Use shorter daemon socket path in tests 2016-03-24 14:45:55 +01:00
filter-source.sh Fix tests 2014-08-21 21:50:19 +02:00
fixed.builder1.sh * Test the impureEnvVars feature. 2007-09-11 13:32:04 +00:00
fixed.builder2.sh * Test case to show that parallel builds of different fixed-output 2007-08-28 09:21:47 +00:00
fixed.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
fixed.sh Remove nix-build --hash 2018-02-03 10:08:05 +01:00
gc-concurrent.builder.sh * Increase the sleep periods a bit to make the test less likely to 2008-08-14 09:26:30 +00:00
gc-concurrent.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
gc-concurrent.sh Fix tests 2014-08-21 21:50:19 +02:00
gc-concurrent2.builder.sh * Increase the sleep periods a bit to make the test less likely to 2008-08-14 09:26:30 +00:00
gc-runtime.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
gc-runtime.sh Fix gc-runtime test 2016-09-12 13:40:07 +02:00
gc.sh Test nix-store -q --roots 2014-02-26 18:00:46 +01:00
hash-check.nix * Purify `make check'. 2006-07-21 13:21:43 +00:00
hash.sh Support base-64 hashes 2017-07-04 15:07:41 +02:00
import-derivation.nix * Add a test for importing derivations. 2012-01-26 13:04:50 +00:00
import-derivation.sh Don't put results symlinks in the tests directory 2012-09-11 19:14:15 -04:00
init.sh Allow includes from nix.conf 2018-02-13 08:16:32 -05:00
install-darwin.sh Rename PINCH_ME_IM_SILLY to ALLOW_PREEXISTING_INSTALLATION 2017-07-14 12:11:33 -04:00
lang.sh Fix tests 2014-08-21 21:50:19 +02:00
linux-sandbox.sh Fix tests using user namespaces on kernels that don't have it 2018-01-13 19:08:41 +02:00
local.mk tests: test nix search behavior 2018-02-25 16:40:05 -06:00
logging.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
misc.sh Improve filtering of ANSI escape sequences in build logs 2018-02-07 15:23:57 +01:00
multiple-outputs.nix Don't put results symlinks in the tests directory 2012-09-11 19:14:15 -04:00
multiple-outputs.sh nix-shell/nix-build: Support .drv files again 2017-11-24 18:08:35 +01:00
nar-access.nix Rename tests/nar-index -> tests/nar-access 2017-11-14 13:27:40 +01:00
nar-access.sh Fix #1762 2018-02-13 14:26:19 +00:00
nix-build.sh nix-shell/nix-build: Support .drv files again 2017-11-24 18:08:35 +01:00
nix-channel.sh Fix tests 2017-10-02 23:45:27 -04:00
nix-copy-closure.nix dsa -> ed25519 2018-02-08 13:46:23 +01:00
nix-profile.sh Fix nix-profile test in a chroot 2016-05-31 13:07:24 +02:00
nix-shell.sh Hardcodes nix-shell instead of /usr/bin/env nix-shell... 2018-04-09 09:36:54 -04:00
optimise-store.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
parallel.builder.sh Drop dependency on ‘expr’ 2014-02-06 13:51:57 +01:00
parallel.nix * Make this test a bit more robust. It's still timing dependent 2009-03-23 15:16:36 +00:00
parallel.sh Add support for ‘make installcheck’ 2013-11-25 18:47:03 +01:00
pass-as-file.sh Use $<attr>Path instead of $<attr> for passAsFile 2015-02-17 16:42:54 +01:00
placeholders.sh Add a mechanism for derivation attributes to reference the derivation's outputs 2016-08-17 17:19:32 +02:00
plugins.sh Allow plugins to define new settings. 2018-02-13 14:43:32 -05:00
pure-eval.nix Add pure evaluation mode 2018-01-16 19:23:18 +01:00
pure-eval.sh Add pure evaluation mode 2018-01-16 19:23:18 +01:00
referrers.sh Remove $NIX_DB_DIR 2016-08-10 18:05:35 +02:00
remote-builds.nix dsa -> ed25519 2018-02-08 13:46:23 +01:00
remote-store.sh Remove $NIX_DB_DIR 2016-08-10 18:05:35 +02:00
repair.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
restricted.nix Add pure evaluation mode 2018-01-16 19:23:18 +01:00
restricted.sh Fix symlink leak in restricted eval mode 2018-08-03 06:46:43 +02:00
run.nix Add tests for "nix run" 2017-11-20 18:36:36 +01:00
run.sh Fix tests using user namespaces on kernels that don't have it 2018-01-13 19:08:41 +02:00
search.nix tests: test nix search behavior 2018-02-25 16:40:05 -06:00
search.sh tests/search.sh: minor fix to unbreak tests after search ux merge 2018-07-03 15:37:06 -05:00
secure-drv-outputs.nix * On FreeBSD, ‘touch’ is not in the test $PATH, so don't use it. 2011-08-08 14:08:38 +00:00
secure-drv-outputs.sh Remove manifest support 2016-04-11 16:20:15 +02:00
setuid.nix release.nix: Use fetchTarball and fetchGit 2017-12-22 11:35:32 +01:00
shell.nix Adds nix-shell test for special-cased ruby interpreter. 2018-04-08 00:45:28 -04:00
shell.shebang.rb Hardcodes nix-shell instead of /usr/bin/env nix-shell... 2018-04-09 09:36:54 -04:00
shell.shebang.sh Rename "use-substitutes" to "substitute" 2018-01-04 16:58:39 +01:00
signing.sh Fix test 2017-12-07 01:07:07 +01:00
simple.builder.sh * Fix the tests. 2007-08-13 13:15:02 +00:00
simple.nix * Refactoring: renamed *.nix.in to *.nix. 2009-03-17 17:11:55 +00:00
simple.sh Handle $TMPDIR ending with a slash 2016-10-19 15:19:38 +02:00
structured-attrs.nix exportReferencesGraph: Allow exporting a list of store paths 2017-10-25 15:18:49 +02:00
structured-attrs.sh Pass lists/attrsets to bash as (associative) arrays 2017-10-25 13:01:50 +02:00
tarball.sh Fix test failure 2016-09-08 18:22:28 +02:00
timeout.nix Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
timeout.sh Test: Replace --option with the corresponding flag 2017-11-20 17:50:49 +01:00
user-envs.builder.sh Test priorities 2012-12-04 14:47:50 +01:00
user-envs.nix Test priorities 2012-12-04 14:47:50 +01:00
user-envs.sh nix-env: Fix parsing of --system 2018-02-08 15:25:03 +01:00