Update mkprofile.pl to generate ptrace rules and update test scripts to test ptrace mediation.
Signed-off-by: John Johansen <john.johan...@canonical.com> --- tests/regression/apparmor/capabilities.sh | 23 +- tests/regression/apparmor/mkprofile.pl | 18 ++ tests/regression/apparmor/ptrace.sh | 144 +---------- tests/regression/apparmor/ptrace_v5.inc | 138 +++++++++++ tests/regression/apparmor/ptrace_v6.inc | 400 ++++++++++++++++++++++++++++++ 5 files changed, 582 insertions(+), 141 deletions(-) create mode 100644 tests/regression/apparmor/ptrace_v5.inc create mode 100644 tests/regression/apparmor/ptrace_v6.inc diff --git a/tests/regression/apparmor/capabilities.sh b/tests/regression/apparmor/capabilities.sh index 4eb7068..1b50445 100644 --- a/tests/regression/apparmor/capabilities.sh +++ b/tests/regression/apparmor/capabilities.sh @@ -64,6 +64,7 @@ net_raw_net_raw=TRUE # we completely disable ptrace(), but it's not clear if we should allow it # when the sys_ptrace cap is specified. +# NOTE: we handle special casing of v6 ptrace not needing ptrace cap inline syscall_ptrace_sys_ptrace=TRUE # if a test case requires arguments, add them here. @@ -77,7 +78,7 @@ syscall_ptrace_args=sub # if a testcase requires extra subdomain rules, add them here syscall_chroot_extra_entries="/:r ${tmpdir}/:r" -syscall_ptrace_extra_entries="hat:sub" +syscall_ptrace_extra_entries="ptrace:ALL hat:sub ptrace:ALL" net_raw_extra_entries="network:" testwrapper=changehat_wrapper @@ -96,7 +97,13 @@ for TEST in ${TESTS} ; do # no capabilities allowed genprofile ${my_entries} - runchecktest "${TEST} -- no caps" fail ${my_arg} + if [ "${TEST}" == "syscall_ptrace" -a "$(have_features ptrace)" == "true" ] ; then + # ptrace between profiles confining tasks of same pid is controlled by the ptrace rule + # capability + ptrace rule needed between pids + runchecktest "${TEST} -- no caps" pass ${my_arg} + else + runchecktest "${TEST} -- no caps" fail ${my_arg} + fi # all capabilities allowed genprofile cap:ALL ${my_entries} @@ -106,6 +113,8 @@ for TEST in ${TESTS} ; do for cap in ${CAPABILITIES} ; do if [ "X$(eval echo \${${TEST}_${cap}})" == "XTRUE" ] ; then expected_result=pass + elif [ "${TEST}" == "syscall_ptrace" -a "$(have_features ptrace)" == "true" ]; then + expected_result=pass else expected_result=fail fi @@ -117,7 +126,13 @@ for TEST in ${TESTS} ; do # a subprofile. settest ${testwrapper} genprofile hat:$bin/${TEST} addimage:${bin}/${TEST} ${my_entries} - runchecktest "${TEST} changehat -- no caps" fail $bin/${TEST} ${my_arg} + if [ "${TEST}" == "syscall_ptrace" -a "$(have_features ptrace)" == "true" ] ; then + # ptrace between profiles confining tasks of same pid is controlled by the ptrace rule + # capability + ptrace rule needed between pids + runchecktest "${TEST} changehat -- no caps" pass $bin/${TEST} ${my_arg} + else + runchecktest "${TEST} changehat -- no caps" fail $bin/${TEST} ${my_arg} + fi # all capabilities allowed genprofile hat:$bin/${TEST} addimage:${bin}/${TEST} cap:ALL ${my_entries} @@ -126,6 +141,8 @@ for TEST in ${TESTS} ; do for cap in ${CAPABILITIES} ; do if [ "X$(eval echo \${${TEST}_${cap}})" == "XTRUE" ] ; then expected_result=pass + elif [ "${TEST}" == "syscall_ptrace" -a "$(have_features ptrace)" == "true" ]; then + expected_result=pass else expected_result=fail fi diff --git a/tests/regression/apparmor/mkprofile.pl b/tests/regression/apparmor/mkprofile.pl index fb9ae1b..9572d0f 100755 --- a/tests/regression/apparmor/mkprofile.pl +++ b/tests/regression/apparmor/mkprofile.pl @@ -174,6 +174,22 @@ sub gen_cap($) { } } +sub gen_ptrace($) { + my $rule = shift; + my @rules = split (/:/, $rule); + if (@rules == 2) { + if ($rules[1] =~ /^ALL$/) { + push (@{$output_rules{$hat}}, " ptrace,\n"); + } else { + push (@{$output_rules{$hat}}, " ptrace $rules[1],\n"); + } + } elsif (@rules == 3) { + push (@{$output_rules{$hat}}, " ptrace $rules[1] $rules[2],\n"); + } else { + (!$nowarn) && print STDERR "Warning: invalid ptrace description '$rule', ignored\n"; + } +} + sub gen_signal($) { my $rule = shift; my @rules = split (/:/, $rule); @@ -348,6 +364,8 @@ sub gen_from_args() { gen_network($rule); } elsif ($rule =~ /^cap:/) { gen_cap($rule); + } elsif ($rule =~ /^ptrace:/) { + gen_ptrace($rule); } elsif ($rule =~ /^signal:/) { gen_signal($rule); } elsif ($rule =~ /^mount:/) { diff --git a/tests/regression/apparmor/ptrace.sh b/tests/regression/apparmor/ptrace.sh index 00d24c7..9ad851d 100755 --- a/tests/regression/apparmor/ptrace.sh +++ b/tests/regression/apparmor/ptrace.sh @@ -40,7 +40,7 @@ runchecktest "test 1 -h prog" pass -h -n 100 $helper /bin/true runchecktest "test 1 -hc prog" pass -h -c -n 100 $helper /bin/true # test that unconfined can ptrace before profile attaches -genprofile image=/bin/true +genprofile image=/bin/true signal:ALL runchecktest "test 2" pass -n 100 /bin/true runchecktest "test 2 -c" pass -c -n 100 /bin/true runchecktest "test 2 -h" pass -h -n 100 $helper @@ -48,141 +48,9 @@ runchecktest "test 2 -hc" pass -h -c -n 100 $helper runchecktest "test 2 -h prog" pass -h -n 100 $helper /bin/true runchecktest "test 2 -hc prog" pass -h -c -n 100 $helper /bin/true -#unconfined tracing confined helper -#confined helper asking unconfined process to ptrace it -genprofile image=$helper -runchecktest "test 3 -h" pass -h -n 100 $helper -runchecktest "test 3 -hc " pass -h -c -n 100 $helper -# can't exec /bin/true so fail -runchecktest "test 3 -h prog" fail -h -n 100 $helper /bin/true -runchecktest "test 3 -hc prog" fail -h -c -n 100 $helper /bin/true -# lack of 'r' perm is currently not working -genprofile image=$helper $helper:ix -runchecktest "test 4 -h" pass -h -n 100 $helper -runchecktest "test 4 -hc " pass -h -c -n 100 $helper -# can't exec /bin/true so fail -runchecktest "test 4 -h prog" fail -h -n 100 $helper /bin/true -runchecktest "test 4 -hc prog" fail -h -c -n 100 $helper /bin/true - -genprofile image=$helper $helper:rix -runchecktest "test 5 -h" pass -h -n 100 $helper -runchecktest "test 5 -hc " pass -h -c -n 100 $helper -# can't exec /bin/true so fail -runchecktest "test 5 -h prog" fail -h -n 100 $helper /bin/true -runchecktest "test 5 -hc prog" fail -h -c -n 100 $helper /bin/true - -genprofile image=$helper $helper:ix /bin/true:rix -runchecktest "test 6 -h" pass -h -n 100 $helper -runchecktest "test 6 -hc " pass -h -c -n 100 $helper -runchecktest "test 6 -h prog" pass -h -n 100 $helper /bin/true -runchecktest "test 6 -hc prog" pass -h -c -n 100 $helper /bin/true - -#traced child can ptrace_me to unconfined have unconfined trace them -genprofile image=/bin/true -runchecktest "test 7" pass -n 100 /bin/true -# pass - ptrace_attach is done in unconfined helper -runchecktest "test 7 -c " pass -c -n 100 /bin/true -runchecktest "test 7 -h" pass -h -n 100 $helper -# pass - ptrace_attach is done in unconfined helper -runchecktest "test 7 -hc " pass -h -c -n 100 $helper -runchecktest "test 7 -h prog" pass -h -n 100 $helper /bin/true -runchecktest "test 7 -hc prog" pass -h -c -n 100 $helper /bin/true - -genprofile image=$helper $helper:ix /bin/true:rix -runchecktest "test 7a" pass -n 100 /bin/true -# pass - ptrace_attach is allowed from confined process to unconfined -runchecktest "test 7a -c " pass -c -n 100 /bin/true -runchecktest "test 7a -h" pass -h -n 100 $helper -# pass - ptrace_attach is allowed from confined process to unconfined -runchecktest "test 7a -hc " pass -h -c -n 100 $helper -runchecktest "test 7a -h prog" pass -h -n 100 $helper /bin/true -runchecktest "test 7a -hc prog" pass -h -c -n 100 $helper /bin/true - -#traced helper from unconfined -genprofile image=$helper $helper:ix /bin/true:rpx -- image=/bin/true -runchecktest "test 8" pass -n 100 /bin/true -# pass - ptrace_attach is done before exec -runchecktest "test 8 -c " pass -c -n 100 /bin/true -runchecktest "test 8 -h" pass -h -n 100 $helper -runchecktest "test 8 -hc " pass -h -c -n 100 $helper -# pass - can px if tracer can ptrace target -runchecktest "test 8 -h prog" pass -h -n 100 $helper /bin/true -runchecktest "test 8 -hc prog" pass -h -c -n 100 $helper /bin/true - -#traced helper from unconfined -genprofile image=$helper $helper:ix /bin/true:rux -- image=/bin/true -runchecktest "test 9" pass -n 100 /bin/true -# pass - ptrace_attach is done before exec -runchecktest "test 9 -c " pass -c -n 100 /bin/true -runchecktest "test 9 -h" pass -h -n 100 $helper -runchecktest "test 9 -hc " pass -h -c -n 100 $helper -# pass - can ux if tracer can ptrace target -runchecktest "test 9 -h prog" pass -h -n 100 $helper /bin/true -runchecktest "test 9 -hc prog" pass -h -c -n 100 $helper /bin/true - -genprofile -# fail due to no exec permission -runchecktest "test 10" fail -n 100 /bin/true -runchecktest "test 10 -c" fail -c -n 100 /bin/true -runchecktest "test 10 -h" fail -h -n 100 $helper -runchecktest "test 10 -hc" fail -h -c -n 100 $helper -runchecktest "test 10 -h prog" fail -h -n 100 $helper /bin/true -runchecktest "test 10 -hc prog" fail -h -c -n 100 $helper /bin/true - -genprofile /bin/true:ix $helper:ix -# fail due to missing r permission -#runchecktest "test 11" fail -n 100 /bin/true -#runchecktest "test 11 -c" fail -c -n 100 /bin/true -#runchecktest "test 11 -h" fail -h -n 100 $helper -#runchecktest "test 11 -hc" fail -h -c -n 100 $helper -#runchecktest "test 11 -h prog" fail -h -n 100 $helper /bin/true -#runchecktest "test 11 -hc prog" fail -h -c -n 100 $helper /bin/true - -# pass allowed to ix self -genprofile /bin/true:rix $helper:rix -runchecktest "test 12" pass -n 100 /bin/true -runchecktest "test 12 -c" pass -c -n 100 /bin/true -runchecktest "test 12 -h" pass -h -n 100 $helper -runchecktest "test 12 -hc" pass -h -c -n 100 $helper -runchecktest "test 12 -h prog" pass -h -n 100 $helper /bin/true -runchecktest "test 12 -hc prog" pass -h -c -n 100 $helper /bin/true - -#ptraced confined app can't px - fails to unset profile -genprofile image=$helper $helper:rix /bin/true:rpx -runchecktest "test 13 -h prog" fail -h -n 100 $helper /bin/true -runchecktest "test 13 -hc prog" fail -h -c -n 100 $helper /bin/true - - -#ptraced confined app can ux - if the tracer is unconfined -# -genprofile image=$helper $helper:rix /bin/true:rux -runchecktest "test 14a -h prog" pass -h -n 100 $helper /bin/true -runchecktest "test 14a -hc prog" pass -h -c -n 100 $helper /bin/true -#ptraced confined app can't ux - if the tracer can't trace unconfined -genprofile $helper:rpx -- image=$helper $helper:rix /bin/true:rux -runchecktest "test 14b -h prog" fail -h -n 100 $helper /bin/true -runchecktest "test 14b -hc prog" fail -h -c -n 100 $helper /bin/true - -#confined app can't ptrace an unconfined app -genprofile $helper:rux -runchecktest "test 15 -h" fail -h -n 100 $helper -runchecktest "test 15 -h prog" fail -h -n 100 $helper /bin/true -#an unconfined app can't ask a confined app to trace it -runchecktest "test 15 -hc" fail -h -c -n 100 $helper -runchecktest "test 15 -hc prog" fail -h -c -n 100 $helper /bin/true - -#confined app can't ptrace an app confined by a different profile -genprofile $helper:rpx -- image=$helper -runchecktest "test 15 -h" fail -h -n 100 $helper -runchecktest "test 15 -h prog" fail -h -n 100 $helper /bin/true -#a confined app can't ask another confined app with a different profile to -#trace it -runchecktest "test 15 -hc" fail -h -c -n 100 $helper -runchecktest "test 15 -hc prog" fail -h -c -n 100 $helper /bin/true - - - - -# need to do a confined process trying to attach to an unconfined -# need attaching, and ptrace_me of different confinement +if [ "$(have_features ptrace)" == "true" ] ; then + . $bin/ptrace_v6.inc +else + . $bin/ptrace_v5.inc +fi diff --git a/tests/regression/apparmor/ptrace_v5.inc b/tests/regression/apparmor/ptrace_v5.inc new file mode 100644 index 0000000..428410a --- /dev/null +++ b/tests/regression/apparmor/ptrace_v5.inc @@ -0,0 +1,138 @@ +#unconfined tracing confined helper +#confined helper asking unconfined process to ptrace it +genprofile image=$helper +runchecktest "test 3 -h" pass -h -n 100 $helper +runchecktest "test 3 -hc " pass -h -c -n 100 $helper +# can't exec /bin/true so fail +runchecktest "test 3 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 3 -hc prog" fail -h -c -n 100 $helper /bin/true + +# lack of 'r' perm is currently not working +genprofile image=$helper $helper:ix +runchecktest "test 4 -h" pass -h -n 100 $helper +runchecktest "test 4 -hc " pass -h -c -n 100 $helper +# can't exec /bin/true so fail +runchecktest "test 4 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 4 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile image=$helper $helper:rix +runchecktest "test 5 -h" pass -h -n 100 $helper +runchecktest "test 5 -hc " pass -h -c -n 100 $helper +# can't exec /bin/true so fail +runchecktest "test 5 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 5 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile image=$helper $helper:ix /bin/true:rix +runchecktest "test 6 -h" pass -h -n 100 $helper +runchecktest "test 6 -hc " pass -h -c -n 100 $helper +runchecktest "test 6 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 6 -hc prog" pass -h -c -n 100 $helper /bin/true + +#traced child can ptrace_me to unconfined have unconfined trace them +genprofile image=/bin/true +runchecktest "test 7" pass -n 100 /bin/true +# pass - ptrace_attach is done in unconfined helper +runchecktest "test 7 -c " pass -c -n 100 /bin/true +runchecktest "test 7 -h" pass -h -n 100 $helper +# pass - ptrace_attach is done in unconfined helper +runchecktest "test 7 -hc " pass -h -c -n 100 $helper +runchecktest "test 7 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 7 -hc prog" pass -h -c -n 100 $helper /bin/true + +genprofile image=$helper $helper:ix /bin/true:rix +runchecktest "test 7a" pass -n 100 /bin/true +# pass - ptrace_attach is allowed from confined process to unconfined +runchecktest "test 7a -c " pass -c -n 100 /bin/true +runchecktest "test 7a -h" pass -h -n 100 $helper +# pass - ptrace_attach is allowed from confined process to unconfined +runchecktest "test 7a -hc " pass -h -c -n 100 $helper +runchecktest "test 7a -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 7a -hc prog" pass -h -c -n 100 $helper /bin/true + +#traced helper from unconfined +genprofile image=$helper $helper:ix /bin/true:rpx -- image=/bin/true +runchecktest "test 8" pass -n 100 /bin/true +# pass - ptrace_attach is done before exec +runchecktest "test 8 -c " pass -c -n 100 /bin/true +runchecktest "test 8 -h" pass -h -n 100 $helper +runchecktest "test 8 -hc " pass -h -c -n 100 $helper +# pass - can px if tracer can ptrace target +runchecktest "test 8 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 8 -hc prog" pass -h -c -n 100 $helper /bin/true + +#traced helper from unconfined +genprofile image=$helper $helper:ix /bin/true:rux -- image=/bin/true +runchecktest "test 9" pass -n 100 /bin/true +# pass - ptrace_attach is done before exec +runchecktest "test 9 -c " pass -c -n 100 /bin/true +runchecktest "test 9 -h" pass -h -n 100 $helper +runchecktest "test 9 -hc " pass -h -c -n 100 $helper +# pass - can ux if tracer can ptrace target +runchecktest "test 9 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 9 -hc prog" pass -h -c -n 100 $helper /bin/true + +genprofile +# fail due to no exec permission +runchecktest "test 10" fail -n 100 /bin/true +runchecktest "test 10 -c" fail -c -n 100 /bin/true +runchecktest "test 10 -h" fail -h -n 100 $helper +runchecktest "test 10 -hc" fail -h -c -n 100 $helper +runchecktest "test 10 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 10 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile /bin/true:ix $helper:ix +# fail due to missing r permission +#runchecktest "test 11" fail -n 100 /bin/true +#runchecktest "test 11 -c" fail -c -n 100 /bin/true +#runchecktest "test 11 -h" fail -h -n 100 $helper +#runchecktest "test 11 -hc" fail -h -c -n 100 $helper +#runchecktest "test 11 -h prog" fail -h -n 100 $helper /bin/true +#runchecktest "test 11 -hc prog" fail -h -c -n 100 $helper /bin/true + +# pass allowed to ix self +genprofile /bin/true:rix $helper:rix +runchecktest "test 12" pass -n 100 /bin/true +runchecktest "test 12 -c" pass -c -n 100 /bin/true +runchecktest "test 12 -h" pass -h -n 100 $helper +runchecktest "test 12 -hc" pass -h -c -n 100 $helper +runchecktest "test 12 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 12 -hc prog" pass -h -c -n 100 $helper /bin/true + +#ptraced confined app can't px - fails to unset profile +genprofile image=$helper $helper:rix /bin/true:rpx +runchecktest "test 13 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13 -hc prog" fail -h -c -n 100 $helper /bin/true + + +#ptraced confined app can ux - if the tracer is unconfined +# +genprofile image=$helper $helper:rix /bin/true:rux +runchecktest "test 14a -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 14a -hc prog" pass -h -c -n 100 $helper /bin/true +#ptraced confined app can't ux - if the tracer can't trace unconfined +genprofile $helper:rpx -- image=$helper $helper:rix /bin/true:rux +runchecktest "test 14b -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 14b -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an unconfined app +genprofile $helper:rux +runchecktest "test 15 -h" fail -h -n 100 $helper +runchecktest "test 15 -h prog" fail -h -n 100 $helper /bin/true +#an unconfined app can't ask a confined app to trace it +runchecktest "test 15 -hc" fail -h -c -n 100 $helper +runchecktest "test 15 -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an app confined by a different profile +genprofile $helper:rpx -- image=$helper +runchecktest "test 15 -h" fail -h -n 100 $helper +runchecktest "test 15 -h prog" fail -h -n 100 $helper /bin/true +#a confined app can't ask another confined app with a different profile to +#trace it +runchecktest "test 15 -hc" fail -h -c -n 100 $helper +runchecktest "test 15 -hc prog" fail -h -c -n 100 $helper /bin/true + + + + +# need to do a confined process trying to attach to an unconfined +# need attaching, and ptrace_me of different confinement diff --git a/tests/regression/apparmor/ptrace_v6.inc b/tests/regression/apparmor/ptrace_v6.inc new file mode 100644 index 0000000..f4c2088 --- /dev/null +++ b/tests/regression/apparmor/ptrace_v6.inc @@ -0,0 +1,400 @@ +## v5 ptrace tests except with failures where appropriate. Testing that capability ptrace +## does not grant ptrace perms + +## Note: ptrace tests need signal permissions to function correctly +## signal permissions are not actually needed by all tests to function but +## we grant signal perms to all to be consistent + +echo " using ptrace v6 tests ..." + +################################################################################ +# v5 ptrace tests without ptrace rules +################################################################################ + +#unconfined tracing confined helper +#confined helper asking unconfined process to ptrace it +genprofile image=$helper signal:ALL + +runchecktest "test 3 -h" pass -h -n 100 $helper +runchecktest "test 3 -hc " pass -h -c -n 100 $helper +# can't exec /bin/true so fail +runchecktest "test 3 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 3 -hc prog" fail -h -c -n 100 $helper /bin/true + +# lack of 'r' perm is currently not working +genprofile image=$helper $helper:ix signal:ALL +runchecktest "test 4 -h" pass -h -n 100 $helper +runchecktest "test 4 -hc " pass -h -c -n 100 $helper +# can't exec /bin/true so fail +runchecktest "test 4 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 4 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile image=$helper $helper:rix signal:ALL +runchecktest "test 5 -h" pass -h -n 100 $helper +runchecktest "test 5 -hc " pass -h -c -n 100 $helper +# can't exec /bin/true so fail +runchecktest "test 5 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 5 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile image=$helper $helper:ix /bin/true:rix signal:ALL +runchecktest "test 6 -h" pass -h -n 100 $helper +runchecktest "test 6 -hc " pass -h -c -n 100 $helper +runchecktest "test 6 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 6 -hc prog" pass -h -c -n 100 $helper /bin/true + +#traced child can ptrace_me to unconfined have unconfined trace them +genprofile image=/bin/true signal:ALL +runchecktest "test 7" pass -n 100 /bin/true +# pass - ptrace_attach is done in unconfined helper +runchecktest "test 7 -c " pass -c -n 100 /bin/true +runchecktest "test 7 -h" pass -h -n 100 $helper +# pass - ptrace_attach is done in unconfined helper +runchecktest "test 7 -hc " pass -h -c -n 100 $helper +runchecktest "test 7 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 7 -hc prog" pass -h -c -n 100 $helper /bin/true + +genprofile image=$helper $helper:ix /bin/true:rix signal:ALL +runchecktest "test 7a" pass -n 100 /bin/true +# pass - ptrace_attach is allowed from confined process to unconfined +runchecktest "test 7a -c " pass -c -n 100 /bin/true +runchecktest "test 7a -h" pass -h -n 100 $helper +# pass - ptrace_attach is allowed from confined process to unconfined +runchecktest "test 7a -hc " pass -h -c -n 100 $helper +runchecktest "test 7a -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 7a -hc prog" pass -h -c -n 100 $helper /bin/true + +#traced helper from unconfined +genprofile image=$helper $helper:ix /bin/true:rpx signal:ALL -- image=/bin/true signal:ALL +runchecktest "test 8" pass -n 100 /bin/true +# pass - ptrace_attach is done before exec +runchecktest "test 8 -c " pass -c -n 100 /bin/true +runchecktest "test 8 -h" pass -h -n 100 $helper +runchecktest "test 8 -hc " pass -h -c -n 100 $helper +# pass - can px if tracer can ptrace target +runchecktest "test 8 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 8 -hc prog" pass -h -c -n 100 $helper /bin/true + +#traced helper from unconfined +genprofile image=$helper $helper:ix /bin/true:rux signal:ALL -- image=/bin/true signal:ALL +runchecktest "test 9" pass -n 100 /bin/true +# pass - ptrace_attach is done before exec +runchecktest "test 9 -c " pass -c -n 100 /bin/true +runchecktest "test 9 -h" pass -h -n 100 $helper +runchecktest "test 9 -hc " pass -h -c -n 100 $helper +# pass - can ux if tracer can ptrace target +runchecktest "test 9 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 9 -hc prog" pass -h -c -n 100 $helper /bin/true + +genprofile signal:ALL +# fail due to no exec permission +runchecktest "test 10" fail -n 100 /bin/true +runchecktest "test 10 -c" fail -c -n 100 /bin/true +runchecktest "test 10 -h" fail -h -n 100 $helper +runchecktest "test 10 -hc" fail -h -c -n 100 $helper +runchecktest "test 10 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 10 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile /bin/true:ix $helper:ix signal:ALL +# fail due to missing r permission +#runchecktest "test 11" fail -n 100 /bin/true +#runchecktest "test 11 -c" fail -c -n 100 /bin/true +#runchecktest "test 11 -h" fail -h -n 100 $helper +#runchecktest "test 11 -hc" fail -h -c -n 100 $helper +#runchecktest "test 11 -h prog" fail -h -n 100 $helper /bin/true +#runchecktest "test 11 -hc prog" fail -h -c -n 100 $helper /bin/true + +# fail was pass in v5 allowed to ix self +genprofile /bin/true:rix $helper:rix signal:ALL +runchecktest "test 12" fail -n 100 /bin/true +runchecktest "test 12 -c" fail -c -n 100 /bin/true +runchecktest "test 12 -h" fail -h -n 100 $helper +runchecktest "test 12 -hc" fail -h -c -n 100 $helper +runchecktest "test 12 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 12 -hc prog" fail -h -c -n 100 $helper /bin/true + +#ptraced confined app traced by unconfined can px +genprofile image=$helper $helper:rix /bin/true:rpx signal:ALL -- image=/bin/true /bin/true:rix +runchecktest "test 13u -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13u -hc prog" pass -h -c -n 100 $helper /bin/true + +#ptraced confined app traced by profile without ptrace on targeted can't px +genprofile /bin/true:rpx signal:ALL -- image=/bin/true /bin/true:rix +runchecktest "test 13 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13 -hc prog" fail -h -c -n 100 $helper /bin/true + + +#ptraced confined app can ux - if the tracer is unconfined +# +genprofile image=$helper $helper:rix /bin/true:rux signal:ALL +runchecktest "test 14a -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 14a -hc prog" pass -h -c -n 100 $helper /bin/true +#ptraced confined app can't ux - if the tracer can't trace unconfined +genprofile $helper:rpx signal:ALL -- image=$helper $helper:rix /bin/true:rux signal:ALL +runchecktest "test 14b -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 14b -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an unconfined app +genprofile $helper:rux signal:ALL +runchecktest "test 15 -h" fail -h -n 100 $helper +runchecktest "test 15 -h prog" fail -h -n 100 $helper /bin/true +#an unconfined app can't ask a confined app to trace it +runchecktest "test 15 -hc" fail -h -c -n 100 $helper +runchecktest "test 15 -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an app confined by a different profile +genprofile $helper:rpx signal:ALL -- image=$helper signal:ALL +runchecktest "test 15 -h" fail -h -n 100 $helper +runchecktest "test 15 -h prog" fail -h -n 100 $helper /bin/true +#a confined app can't ask another confined app with a different profile to +#trace it +runchecktest "test 15 -hc" fail -h -c -n 100 $helper +runchecktest "test 15 -hc prog" fail -h -c -n 100 $helper /bin/true + +################### cap:sys_ptrace doesn't change results from above ########################## +# fail was pass in v5 allowed to ix self +genprofile /bin/true:rix $helper:rix signal:ALL cap:sys_ptrace +runchecktest "test 12c" fail -n 100 /bin/true +runchecktest "test 12c -c" fail -c -n 100 /bin/true +runchecktest "test 12c -h" fail -h -n 100 $helper +runchecktest "test 12c -hc" fail -h -c -n 100 $helper +runchecktest "test 12c -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 12c -hc prog" fail -h -c -n 100 $helper /bin/true + +#ptraced confined app traced by unconfined can px +genprofile image=$helper $helper:rix /bin/true:rpx signal:ALL cap:sys_ptrace -- image=/bin/true /bin/true:rix cap:sys_ptrace +runchecktest "test 13cu -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13cu -hc prog" pass -h -c -n 100 $helper /bin/true + +#ptraced confined app traced by profile without ptrace on targeted can't px +genprofile /bin/true:rpx signal:ALL cap:sys_ptrace -- image=/bin/true /bin/true:rix cap:sys_ptrace +runchecktest "test 13c -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13c -hc prog" fail -h -c -n 100 $helper /bin/true + + +#ptraced confined app can ux - if the tracer is unconfined +# +genprofile image=$helper $helper:rix /bin/true:rux signal:ALL cap:sys_ptrace +runchecktest "test 14ca -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 14ca -hc prog" pass -h -c -n 100 $helper /bin/true +#ptraced confined app can't ux - if the tracer can't trace unconfined +genprofile $helper:rpx signal:ALL -- image=$helper $helper:rix /bin/true:rux signal:ALL +runchecktest "test 14cb -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 14cb -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an unconfined app +genprofile $helper:rux signal:ALL cap:sys_ptrace +runchecktest "test 15c -h" fail -h -n 100 $helper +runchecktest "test 15c -h prog" fail -h -n 100 $helper /bin/true +#an unconfined app can't ask a confined app to trace it +runchecktest "test 15c -hc" fail -h -c -n 100 $helper +runchecktest "test 15c -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an app confined by a different profile +genprofile $helper:rpx signal:ALL cap:sys_ptrace -- image=$helper signal:ALL cap:sys_ptrace +runchecktest "test 15c -h" fail -h -n 100 $helper +runchecktest "test 15c -h prog" fail -h -n 100 $helper /bin/true +#a confined app can't ask another confined app with a different profile to +#trace it +runchecktest "test 15c -hc" fail -h -c -n 100 $helper +runchecktest "test 15c -hc prog" fail -h -c -n 100 $helper /bin/true + + +################################################################################ +# v5 ptrace tests with ptrace rules +################################################################################ + +##### Now do tests with ptrace rules in profiles ####### +# pass in v5 allowed to ix self +genprofile /bin/true:rix $helper:rix signal:ALL ptrace:ALL +runchecktest "test 12p" pass -n 100 /bin/true +runchecktest "test 12p -c" pass -c -n 100 /bin/true +runchecktest "test 12p -h" pass -h -n 100 $helper +runchecktest "test 12p -hc" pass -h -c -n 100 $helper +runchecktest "test 12p -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 12p -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rix $helper:rix signal:ALL ptrace:$test +runchecktest "test 12p1" pass -n 100 /bin/true +runchecktest "test 12p1 -c" pass -c -n 100 /bin/true +runchecktest "test 12p1 -h" pass -h -n 100 $helper +runchecktest "test 12p1 -hc" pass -h -c -n 100 $helper +runchecktest "test 12p1 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 12p1 -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rix $helper:rix signal:ALL ptrace:notaprofile +runchecktest "test 12p2" fail -n 100 /bin/true +runchecktest "test 12p2 -c" fail -c -n 100 /bin/true +runchecktest "test 12p2 -h" fail -h -n 100 $helper +runchecktest "test 12p2 -hc" fail -h -c -n 100 $helper +runchecktest "test 12p2 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 12p2 -hc prog" fail -h -c -n 100 $helper /bin/true + + +#ptraced confined app traced by profile can px +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:/bin/true -- image=/bin/true /bin/true:rix +runchecktest "test 13p1 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p2 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:/bin/true -- image=/bin/true /bin/true:rix ptrace:tracedby +runchecktest "test 13p3 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13p4 -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:/bin/true -- image=/bin/true /bin/true:rix ptrace:tracedby:$test +runchecktest "test 13p5 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13p6 -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:/bin/true -- image=/bin/true /bin/true:rix ptrace:tracedby:notaprofile +runchecktest "test 13p7 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p8 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:/bin/true -- image=/bin/true /bin/true:rix ptrace:trace +runchecktest "test 13p9 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pa -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:/bin/true -- image=/bin/true /bin/true:rix ptrace:trace:$test +runchecktest "test 13pb -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pc -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:/bin/true -- image=/bin/true /bin/true:rix ptrace:trace:notaprofile +runchecktest "test 13pd -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pe -hc prog" fail -h -c -n 100 $helper /bin/true + + +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:trace:/bin/true -- image=/bin/true /bin/true:rix +runchecktest "test 13p11 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p21 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:trace:/bin/true -- image=/bin/true /bin/true:rix ptrace:tracedby +runchecktest "test 13p31 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13p41 -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:trace:/bin/true -- image=/bin/true /bin/true:rix ptrace:tracedby:$test +runchecktest "test 13p51 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13p61 -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:trace:/bin/true -- image=/bin/true /bin/true:rix ptrace:tracedby:notaprofile +runchecktest "test 13p71 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p81 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:trace:/bin/true -- image=/bin/true /bin/true:rix ptrace:trace +runchecktest "test 13p91 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pa1 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:trace:/bin/true -- image=/bin/true /bin/true:rix ptrace:trace:$test +runchecktest "test 13pb1 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pc1 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:trace:/bin/true -- image=/bin/true /bin/true:rix ptrace:trace:notaprofile +runchecktest "test 13pd1 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pe1 -hc prog" fail -h -c -n 100 $helper /bin/true + + +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:ALL -- image=/bin/true /bin/true:rix +runchecktest "test 13p12 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p22 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:ALL -- image=/bin/true /bin/true:rix ptrace:tracedby +runchecktest "test 13p32 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13p42 -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:ALL -- image=/bin/true /bin/true:rix ptrace:tracedby:$test +runchecktest "test 13p52 -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 13p62 -hc prog" pass -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:ALL -- image=/bin/true /bin/true:rix ptrace:tracedby:notaprofile +runchecktest "test 13p72 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p82 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:ALL -- image=/bin/true /bin/true:rix ptrace:trace +runchecktest "test 13p92 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pa2 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:ALL -- image=/bin/true /bin/true:rix ptrace:trace:$test +runchecktest "test 13pb2 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pc2 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:ALL -- image=/bin/true /bin/true:rix ptrace:trace:notaprofile +runchecktest "test 13pd2 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pe2 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby -- image=/bin/true /bin/true:rix +runchecktest "test 13p13 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p23 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby -- image=/bin/true /bin/true:rix ptrace:tracedby +runchecktest "test 13p33 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p43 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby -- image=/bin/true /bin/true:rix ptrace:tracedby:$test +runchecktest "test 13p53 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p63 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby -- image=/bin/true /bin/true:rix ptrace:tracedby:notaprofile +runchecktest "test 13p73 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p83 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby -- image=/bin/true /bin/true:rix ptrace:trace +runchecktest "test 13p93 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pa3 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby -- image=/bin/true /bin/true:rix ptrace:trace:$test +runchecktest "test 13pb3 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pc3 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby -- image=/bin/true /bin/true:rix ptrace:trace:notaprofile +runchecktest "test 13pd3 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pe3 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby:notaprofile -- image=/bin/true /bin/true:rix +runchecktest "test 13p14 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p24 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby:notaprofile -- image=/bin/true /bin/true:rix ptrace:tracedby +runchecktest "test 13p34 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p44 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby:notaprofile -- image=/bin/true /bin/true:rix ptrace:tracedby:$test +runchecktest "test 13p54 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p64 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby:notaprofile -- image=/bin/true /bin/true:rix ptrace:tracedby:notaprofile +runchecktest "test 13p74 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p84 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby:notaprofile -- image=/bin/true /bin/true:rix ptrace:trace +runchecktest "test 13p94 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pa4 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby:notaprofile -- image=/bin/true /bin/true:rix ptrace:trace:$test +runchecktest "test 13pb4 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pc4 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:tracedby:notaprofile -- image=/bin/true /bin/true:rix ptrace:trace:notaprofile +runchecktest "test 13pd4 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pe4 -hc prog" fail -h -c -n 100 $helper /bin/true + +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:notaprofile -- image=/bin/true /bin/true:rix +runchecktest "test 13p15 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p25 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:notaprofile -- image=/bin/true /bin/true:rix ptrace:tracedby +runchecktest "test 13p35 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p45 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:notaprofile -- image=/bin/true /bin/true:rix ptrace:tracedby:$test +runchecktest "test 13p55 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p65 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:notaprofile -- image=/bin/true /bin/true:rix ptrace:tracedby:notaprofile +runchecktest "test 13p75 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13p85 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:notaprofile -- image=/bin/true /bin/true:rix ptrace:trace +runchecktest "test 13p95 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pa5 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:notaprofile -- image=/bin/true /bin/true:rix ptrace:trace:$test +runchecktest "test 13pb5 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pc5 -hc prog" fail -h -c -n 100 $helper /bin/true +genprofile /bin/true:rpx $helper:rix signal:ALL ptrace:$test ptrace:notaprofile -- image=/bin/true /bin/true:rix ptrace:trace:notaprofile +runchecktest "test 13pd5 -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 13pe5 -hc prog" fail -h -c -n 100 $helper /bin/true + + +### todo Variations of below tests + + +#ptraced confined app can ux - if the tracer is unconfined +# +genprofile image=$helper $helper:rix /bin/true:rux signal:ALL +runchecktest "test 14pa -h prog" pass -h -n 100 $helper /bin/true +runchecktest "test 14pa -hc prog" pass -h -c -n 100 $helper /bin/true +#ptraced confined app can't ux - if the tracer can't trace unconfined +genprofile $helper:rpx signal:ALL -- image=$helper $helper:rix /bin/true:rux signal:ALL +runchecktest "test 14pb -h prog" fail -h -n 100 $helper /bin/true +runchecktest "test 14pb -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an unconfined app +genprofile $helper:rux signal:ALL +runchecktest "test 15p -h" fail -h -n 100 $helper +runchecktest "test 15p -h prog" fail -h -n 100 $helper /bin/true +#an unconfined app can't ask a confined app to trace it +runchecktest "test 15p -hc" fail -h -c -n 100 $helper +runchecktest "test 15p -hc prog" fail -h -c -n 100 $helper /bin/true + +#confined app can't ptrace an app confined by a different profile +genprofile $helper:rpx signal:ALL -- image=$helper signal:ALL +runchecktest "test 15p -h" fail -h -n 100 $helper +runchecktest "test 15p -h prog" fail -h -n 100 $helper /bin/true +#a confined app can't ask another confined app with a different profile to +#trace it +runchecktest "test 15p -hc" fail -h -c -n 100 $helper +runchecktest "test 15p -hc prog" fail -h -c -n 100 $helper /bin/true + + +## TODO: ptrace read tests +## TODO: ptrace + change_profile +## TODO: ptrace + change_hat -- 1.9.1 -- AppArmor mailing list AppArmor@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor