bash漏洞

按照学术的说法,bash是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell ,Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同Version 7 Unix一起发布。这次发现的bash漏洞,是可以完全控制Linux计算机的。

测试是不是存在bash漏洞的代码,在Terminal窗口输入:

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

Bash漏洞的原理:

Bsah除了可以将shell变量导出为环境变量,还可以将shell函数导出为环境变量!当前版本的bash通过以函数名作为环境变量名,以“(){”开头的字串作为环境变量的值来将函数定义导出为环境变量。

此次爆出的漏洞在于Bash处理这样的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令。

简单地说就是,Bash脚本在解析某些特殊字符串时出现逻辑错误导致可以执行后面的命令。

这一Bug被专业人士称为Shellshock,Shellshock漏洞将一台未补丁的机器可以瞬间转变成可被任意操控的僵尸网“肉鸡”,这个漏洞已经存在20多年,成为人类计算机史上已知的、最老的、尚未修复的程序Bug,其危害性将可导致黑客肆意大规模地破坏当今的互联网结构。