有人可以解释Shell Shock Bash代码吗?

zah*_*eel 3 unix linux bash ubuntu shellshock-bash-bug

我在理解以下代码时遇到了问题,这是Shell Shock的"漏洞证明"代码.有人可以向我解释一下吗?特别是这部分" () { :;};"

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Run Code Online (Sandbox Code Playgroud)

nu1*_*73R 5

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

是什么env呢?
从文档中,env在修改后的环境中运行程序

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

它清楚这x是一个名称/变量,() { :;}; echo vulnerable'是变量的值

现在是什么() { :;};
导出函数时,bash将其defenition存储为环境变量的值

$ x() {echo hello world;}
$ export x
$ env | grep x
x=() {echo hello world};
Run Code Online (Sandbox Code Playgroud)

现在当x='() {:;}'意思与写作类似

$ x() {:;}
$ export x
$ env | grep x
Run Code Online (Sandbox Code Playgroud)

这是我们间接作出export x到由创建的新environmnet env
下面:是在bash一个空语句

希望能帮助到你