Chr*_*ght 2 security bash code-injection
我正在对其他开发人员的 bash 脚本进行质量检查。它看起来像这样:
#!/bin/bash
TERM=`cat ./termName.txt` || exit $?
./other-script.sh $TERM
Run Code Online (Sandbox Code Playgroud)
鉴于该TERM变量未在最后一行中引用,感觉恶意用户可以通过操纵 的内容来利用命令注入termName.txt,但是我证明这一点的基本尝试未能注入任何可执行命令。
我的问题是:
该脚本不受命令注入的影响,因为$TERM在结果按字面传递给 之前, 的扩展仅经历分词和路径名扩展other-script.sh。但是,应该引用它,以便other-script.sh接收作为单个参数的确切内容。TERM
如果TERM值为a b,则将other-script收到两个参数a和b,而不是一个。使用"$TERM"传递精确值a b。
如果TERM值为*,则参数的确切列表取决于当前工作目录的内容。使用"$TERM"传递精确值*。