2014 年 9 月 24 日,Bash 惊爆严重安全漏洞,编号为 CVE-2014-6271,该漏洞将导致远程攻击者在受影响的系统上执行任意代码。破壳漏洞(ShellShock)的严重性被定义为 10 级(最高)。
GNU Bash 4.3 及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行 Shell 命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。此漏洞源于在调用 Bash Shell 之前可以用构造的值创建环境变量。这些变量可以包含代码,在 Shell 被调用后会被立即执行。
查询 Bash 版本
$bash -version
测试方法
$ env -i X='() { (a)=>\' bash -c 'echo date'
bash: X: line 1: `'
bash: error importing function definition for `X'
Wed Sep 24 14:12:49 PDT 2014
如果执行结果如上则表示漏洞存在,且在当前目录创建一个 echo 的文件
修补方法
目前 Ubuntu Server 以及给出了 bash 更新,只需执行 sudo apt-get update && sudo apt-get upgrade
可以看到更新里包含了 bash 的更新
更新后继续执行漏洞测试命令(删除之前创建的 echo 文件)
$ env -i X='() { (a)=>\' bash -c 'echo date'
date
$ cat echo
cat: echo: No such file or directory
如上结果表示漏洞修复