ipsec: Only allow specific commands to be executed via ipsec script
The previous fallback allowed running any executable as root if executing ipsec via sudo was allowed, by using e.g. `sudo ipsec ../../../bin/sh`.
This commit is contained in:
+20
-12
@@ -44,6 +44,8 @@ export IPSEC_DIR IPSEC_BINDIR IPSEC_SBINDIR IPSEC_CONFDIR IPSEC_PIDDIR IPSEC_SCR
|
|||||||
|
|
||||||
IPSEC_DISTRO="Institute for Internet Technologies and Applications\nUniversity of Applied Sciences Rapperswil, Switzerland"
|
IPSEC_DISTRO="Institute for Internet Technologies and Applications\nUniversity of Applied Sciences Rapperswil, Switzerland"
|
||||||
|
|
||||||
|
command_dir="$IPSEC_DIR"
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
'')
|
'')
|
||||||
echo "$IPSEC_SCRIPT command [arguments]"
|
echo "$IPSEC_SCRIPT command [arguments]"
|
||||||
@@ -94,10 +96,6 @@ case "$1" in
|
|||||||
echo "$IPSEC_PIDDIR"
|
echo "$IPSEC_PIDDIR"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
copyright|--copyright)
|
|
||||||
set _copyright
|
|
||||||
# and fall through, invoking "ipsec _copyright"
|
|
||||||
;;
|
|
||||||
down)
|
down)
|
||||||
shift
|
shift
|
||||||
if [ "$#" -ne 1 ]
|
if [ "$#" -ne 1 ]
|
||||||
@@ -307,13 +305,19 @@ update)
|
|||||||
exit 7
|
exit 7
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
pki)
|
aikgen|pki)
|
||||||
shift
|
# programs in BINDIR may be called directly, these two are listed for legacy reasons
|
||||||
exec $IPSEC_BINDIR/pki "$@"
|
command_dir="$IPSEC_BINDIR"
|
||||||
|
# fall through
|
||||||
;;
|
;;
|
||||||
aikgen)
|
attest|conftest|dumm|irdumm|pacman|pool|pt-tls-client|scepclient|stroke|\
|
||||||
shift
|
duplicheck|error-notify|imv_policy_manager|load-tester|lookip|whitelist|\
|
||||||
exec $IPSEC_BINDIR/aikgen "$@"
|
_updown|_imv_policy)
|
||||||
|
# fall through
|
||||||
|
;;
|
||||||
|
copyright|--copyright)
|
||||||
|
set _copyright
|
||||||
|
# fall through
|
||||||
;;
|
;;
|
||||||
version|--version)
|
version|--version)
|
||||||
printf "$OS_NAME $IPSEC_NAME $IPSEC_VERSION\n"
|
printf "$OS_NAME $IPSEC_NAME $IPSEC_VERSION\n"
|
||||||
@@ -325,16 +329,20 @@ version|--version)
|
|||||||
echo "$0: unknown option \`$1' (perhaps command name was omitted?)" >&2
|
echo "$0: unknown option \`$1' (perhaps command name was omitted?)" >&2
|
||||||
exit 2
|
exit 2
|
||||||
;;
|
;;
|
||||||
|
*)
|
||||||
|
echo "$0: unknown command \`$1' (\`$IPSEC_SCRIPT --help' for list)" >&2
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
cmd="$1"
|
cmd="$1"
|
||||||
shift
|
shift
|
||||||
|
|
||||||
path="$IPSEC_DIR/$cmd"
|
path="$command_dir/$cmd"
|
||||||
|
|
||||||
if [ ! -x "$path" ]
|
if [ ! -x "$path" ]
|
||||||
then
|
then
|
||||||
echo "$0: unknown IPsec command \`$cmd' (\`$IPSEC_SCRIPT --help' for list)" >&2
|
echo "$0: unknown command \`$cmd' (\`$IPSEC_SCRIPT --help' for list)" >&2
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user