diff --git a/bin/hardening/6.2.6_sanitize_root_path.sh b/bin/hardening/6.2.6_sanitize_root_path.sh index d833525..b00ce8f 100755 --- a/bin/hardening/6.2.6_sanitize_root_path.sh +++ b/bin/hardening/6.2.6_sanitize_root_path.sh @@ -8,6 +8,10 @@ # 6.2.6 Ensure root PATH Integrity (Scored) # +# set path to the $PATH environnement variable if path is not defined +# used in test +[[ $path && ${path-x} ]] || path=$PATH + set -e # One error, it's over set -u # One variable unset, it's over @@ -18,15 +22,15 @@ ERRORS=0 # This function will be called if the script status is on enabled / audit mode audit () { - if [ "`echo $PATH | grep :: `" != "" ]; then + if [ "`echo $path | grep :: `" != "" ]; then crit "Empty Directory in PATH (::)" ERRORS=$((ERRORS+1)) fi - if [ "`echo $PATH | grep :$`" != "" ]; then - crit "Trailing : in PATH $PATH" + if [ "`echo $path | grep :$`" != "" ]; then + crit "Trailing : in PATH $path" ERRORS=$((ERRORS+1)) fi - FORMATTED_PATH=$(echo $PATH | sed -e 's/::/:/' -e 's/:$//' -e 's/:/ /g') + FORMATTED_PATH=$(echo $path | sed -e 's/::/:/' -e 's/:$//' -e 's/:/ /g') set -- $FORMATTED_PATH while [ "${1:-}" != "" ]; do if [ "$1" = "." ]; then diff --git a/tests/hardening/6.2.6_sanitize_root_path.sh b/tests/hardening/6.2.6_sanitize_root_path.sh index b333419..72dc9d2 100644 --- a/tests/hardening/6.2.6_sanitize_root_path.sh +++ b/tests/hardening/6.2.6_sanitize_root_path.sh @@ -6,5 +6,49 @@ test_audit() { # shellcheck disable=2154 run blank /opt/debian-cis/bin/hardening/"${script}".sh --audit-all - # TODO fill comprehensive tests + local dir="/test" + local test_user="userrootpathtest" + + describe Tests purposely failing + register_test retvalshouldbe 1 + register_test contain "Empty Directory in PATH (::)" + run noncompliant path="$PATH::" /opt/debian-cis/bin/hardening/"${script}".sh --audit-all + + describe Tests purposely failing + register_test retvalshouldbe 1 + register_test contain "Trailing : in PATH" + run noncompliant path="$PATH:" /opt/debian-cis/bin/hardening/"${script}".sh --audit-all + + describe Tests purposely failing + register_test retvalshouldbe 1 + register_test contain "PATH contains ." + run noncompliant path="$PATH:." /opt/debian-cis/bin/hardening/"${script}".sh --audit-all + + describe Tests purposely failing + mkdir -m 770 $dir + register_test retvalshouldbe 1 + register_test contain "Group Write permission set on directory $dir" + run noncompliant path="$PATH:$dir" /opt/debian-cis/bin/hardening/"${script}".sh --audit-all + # clean + rmdir $dir + + describe Tests purposely failing + mkdir -m 707 $dir + register_test retvalshouldbe 1 + register_test contain "Other Write permission set on directory $dir" + run noncompliant path="$PATH:$dir" /opt/debian-cis/bin/hardening/"${script}".sh --audit-all + # clean + rmdir $dir + + describe Tests purposely failing + useradd $test_user + mkdir -m 700 $dir + chown userrootpathtest:userrootpathtest $dir + register_test retvalshouldbe 1 + register_test contain "$dir is not owned by root" + run noncompliant path="$PATH:$dir" /opt/debian-cis/bin/hardening/"${script}".sh --audit-all + # clean + rmdir $dir + userdel $test_user + }