此文件中涉及的安全问题是什么?

时间:2014-06-15 06:36:21

标签: linux shell access-control

我有一个shell脚本:

#!/bin/sh
#file name : eg.1 
X=$1
eval "$X"

如果我以群组用户或其他用户身份启动此脚本,是否存在任何安全问题?

1 个答案:

答案 0 :(得分:0)

eval命令非常强大且极易滥用。 它会导致您的代码被解析两次而不是一次;这意味着,例如,如果您的代码中包含变量引用,那么shell的解析器将评估该变量的内容。如果变量包含shell命令,则shell可能会运行该命令,无论您是否需要它。这可能会导致意外结果,尤其是在可以从不受信任的来源读取变量时。

实施例

# This code is evil and should never be used!
fifth() {
_fifth_array=$1
eval echo "\"The fifth element is \${$_fifth_array[4]}\""    # DANGER!
}
a=(zero one two three four five)
fifth a

输出

fifth 'x}"; date; #'
  

第五个要素是   Thu Mar 27 16:13:47 EDT 2014
  more details