[apparmor] [patch 23/26] Update test scripts for ptrace rules.
john.johansen at canonical.com
john.johansen at canonical.com
Tue Apr 15 17:22:30 UTC 2014
Update mkprofile.pl to generate ptrace rules and update test scripts to
test ptrace mediation.
Signed-off-by: John Johansen <john.johansen at 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
More information about the AppArmor
mailing list