我刚刚从更新弹出窗口中更新了 Ubuntu。我知道 Shellshock,所以我很快就安装了。现在,当我尝试运行
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
我没有得到输出(我之前得到的)
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
如下所述什么是 CVE-2014-6271 bash 漏洞(Shellshock)以及如何修复它?
相反,现在我只收到“你好”。是否可以安全地假设我安装的更新隐藏了这些错误消息?查看软件中心后,我看到我安装了以下更新:
unity-settings-daemon (14.04.0+14.04.20140414-0ubuntu1, 14.04.0+14.04.20140606-0ubuntu1
aptdaemon-data (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
python-aptdaemon.gtk3widgets (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
bash (4.3-7ubuntu1.3, 4.3-7ubuntu1.4)
python-aptdaemon (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
更具体地说,4.3-7ubuntu1.4 是否隐藏了函数定义尝试错误消息?抱歉,我怀疑了,但经过一番谷歌搜索,我还没有找到类似的问题。任何澄清都将不胜感激。谢谢!
答案1
env x='() { :;}; echo OOPS' bash -c :
这将在易受攻击的系统上打印“OOPS”,但如果 bash 已修补,则会默默退出。
这是在以下位置看到的行为:
- Debian
squeeze
(bash
软件包4.1-3+deb6u2
) - CentOS 6.5(
bash
软件包0:4.1.2-15.el6_5.2
) - Arch Linux(
bash
软件包4.3.026-1
)
我推测这就是修复的目的,但由于某种原因,Ubuntu 的初始bash
补丁产生了错误,而不是默默地忽略额外的代码。
最初的补丁实际上是故意的当在环境变量中发现错误的函数定义时产生错误。更新的补丁甚至只查看特殊前缀的变量,这消除了几乎所有实际风险。试一试
env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
——你应该会看到一个错误。
我已经验证了这一点:
$ env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x`
$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ apt-cache policy bash | grep Installed
Installed: 4.3-7ubuntu1.4