From: Yu Watanabe Date: Wed, 15 Jun 2022 18:21:28 +0000 (+0900) Subject: test: add syscall filter tests for analyze security X-Git-Tag: v252-rc1~799^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F23756%2Fhead;p=thirdparty%2Fsystemd.git test: add syscall filter tests for analyze security --- diff --git a/test/units/testsuite-65.sh b/test/units/testsuite-65.sh index 393297b17f4..64ce629f3b4 100755 --- a/test/units/testsuite-65.sh +++ b/test/units/testsuite-65.sh @@ -3,6 +3,9 @@ # shellcheck disable=SC2016 set -eux +# shellcheck source=test/units/assert.sh +. "$(dirname "$0")"/assert.sh + systemd-analyze log-level debug export SYSTEMD_LOG_LEVEL=debug @@ -606,6 +609,63 @@ fi systemd-analyze --threshold=90 security systemd-journald.service +# issue 23663 +check() {( + set +x + output=$(systemd-analyze security --offline="${2?}" "${3?}" | grep -F 'SystemCallFilter=') + assert_in "System call ${1?} list" "$output" + assert_in "[+✓] SystemCallFilter=~@swap" "$output" + assert_in "[+✓] SystemCallFilter=~@resources" "$output" + assert_in "[+✓] SystemCallFilter=~@reboot" "$output" + assert_in "[+✓] SystemCallFilter=~@raw-io" "$output" + assert_in "[-✗] SystemCallFilter=~@privileged" "$output" + assert_in "[+✓] SystemCallFilter=~@obsolete" "$output" + assert_in "[+✓] SystemCallFilter=~@mount" "$output" + assert_in "[+✓] SystemCallFilter=~@module" "$output" + assert_in "[+✓] SystemCallFilter=~@debug" "$output" + assert_in "[+✓] SystemCallFilter=~@cpu-emulation" "$output" + assert_in "[-✗] SystemCallFilter=~@clock" "$output" +)} + +export -n SYSTEMD_LOG_LEVEL + +mkdir -p /run/systemd/system +cat >/run/systemd/system/allow-list.service </run/systemd/system/deny-list.service <&1) +name=$(echo "$output" | awk '{ print $4 }') + +check allow yes /run/systemd/transient/"$name" +check allow no "$name" + +output=$(systemd-run -p "SystemCallFilter=~@known" -p "SystemCallFilter=@system-service" -p "SystemCallFilter=~@resources:ENOANO @privileged" -p "SystemCallFilter=@clock" sleep 60 2>&1) +name=$(echo "$output" | awk '{ print $4 }') + +check deny yes /run/systemd/transient/"$name" +check deny no "$name" + systemd-analyze log-level info echo OK >/testok