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

我在理解下面的代码时遇到了问题,这是Shell Shock'漏洞certificate'代码。 有人可以向我解释吗? 特别是,这部分“ () { :;}; :; () { :;};

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

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

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

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

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

现在是什么() { :;};
当一个函数被导出时,bash把它的defenition作为值存储到环境变量中

 $ x() {echo hello world;} $ export x $ env | grep x x=() {echo hello world}; 

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

 $ x() {:;} $ export x $ env | grep x 

那就是我们间接地把export xenv创建的新环境上
这里:在bash中是一个空语句

希望能帮助到你