最简单修复致命 bash 漏洞(shellshock)的方法

2014-09-27 13:45:42 +08:00
 interdev
因为只影响bash,不影响dash,tsh,csh,ksh

所以需要临时紧急修复,用以下两行命令即可,在Ubuntu下实测有效,

mv /bin/bash /bin/bash.stop
ln -s /bin/dash /bin/bash

等正式稳定的补丁出来后,Ubuntu再用以下命令还原bash

apt-get update
apt-get install --only-upgrade bash
5553 次点击
所在节点    Linux
16 条回复
Tink
2014-09-27 14:09:33 +08:00
这方法治标不治本
msg7086
2014-09-27 14:13:29 +08:00
dash没法运行需要bash的程序。我之前试过ln -sf dash bash,结果连apt都挂了。

老老实实 chmod o-x bash 更方便。


@Tink 有时候是没办法,比如这次,补丁迟迟不出,而且就算stable出了,等unstable版跟进还要时间,这时候直接禁用bash才是治本的方法。倒不如说现在的半吊子补丁才是治标不治本。
SoloCompany
2014-09-27 14:41:09 +08:00
@msg7086 新的补丁昨天就出来了吧,是你自己没留意吧
ctexlive
2014-09-27 15:51:36 +08:00
补丁迟迟没出吗? debian等都出了
canky
2014-09-27 17:01:36 +08:00
debian怎么修啊?我是小白来的
uuair
2014-09-27 17:23:54 +08:00
升级bash就可以了吧?我在centos跟mac上,升级了bash,然后那个测试代码就失效了。
ivenvd
2014-09-27 17:43:51 +08:00
这个,典型的误人子弟啊。照着这么操作,大部分服务器都会瘫痪掉吧……
msg7086
2014-09-27 18:19:11 +08:00
@SoloCompany testing分支上的最新版测了

env -i X='() { (a)=>\' bash -c 'echo curl -Is google.com'; head echo

照样会执行。
msg7086
2014-09-27 18:21:27 +08:00
@ivenvd 是的。
至少应该:
1. 把主shell换成zsh,用sed替换掉/etc/passwd里所有的bash
2. 把sh链接到dash
3. 到这步了才能禁用bash

而且为了apt脚本能跑,bash还是要留着的,折衷的办法就是chmod o-x,至少root还能用。
librehat
2014-09-27 19:30:11 +08:00
Fedora已经推送更新了。

楼主这个办法太。。。。什么都做不了
interdev
2014-09-27 21:19:33 +08:00
@ivenvd Ubuntu 下无影响,重启之后服务器正常,其他系统未测试。

dash 可以代替bash大多数功能,临时用用是可以的。
ivenvd
2014-09-29 01:59:36 +08:00
@interdev 脚本语法是不兼容的。Bash 不是简单作为交互式 Shell 存在的,大量脚本使用了 #!/bin/bash,你用 dash 去运行不天下大乱才怪。
huangzxx
2014-09-29 09:29:16 +08:00
这个帖子也太。。。。。误导了吧
interdev
2014-09-29 11:41:27 +08:00
@ivenvd Ubuntu缺省的/bin/sh就是dash ,其他系统我没有测试,说了只是正式完整补丁没出来时临时用用,补丁稳定了还是要回到bash的,目前我自己好几台ubuntu vps都是这样设防的。

dash 能兼容 bash 大多数脚本。
kaneg
2014-09-29 13:53:19 +08:00
看到这个漏洞好几天了,但有个问题一直不明白:
尽管这个漏洞很严重,但如果别人不知道我的ssh账号,apache也没有启用过CGI(ubuntu默认是不启用的吧),那有被攻击的可能吗?
interdev
2014-09-29 14:01:55 +08:00
@kaneg 一般无影响,但bash做为linux root用户缺省shell,会有很多暂时未发现或未公开的利用方式,最好还是升到最新补丁较好。



分析:
======
GNU Bash 4.3及之前版本在处理某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行shell命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。此漏洞源于在调用bash shell之前可以用构造的值创建环境变量。这些变量可以包含代码,在shell被调用后会被立即执行。

此漏洞可能会影响到使用ForceCommand功能的OpenSSH sshd、使用mod_cgi或mod_cgid的Apache服务器、DHCP客户端、其他使用bash作为解释器的应用等。

目前认为使用mod_php/mod_python/mod_perl的Apache httpd不受此问题影响。

http://www.nsfocus.net/index.php?act=alert&do=view&aid=150

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/136005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX