一、如果您使用的是RedHa tEnterprise Linux 4/5的系統或Centos4/5的系統,您可以通過下面的操作簡單的操作防止被攻擊。
在/etc/modprobe.conf文件中加入下列內容:
install pppox /bin/true
install bluetooth /bin/true
install appletalk /bin/true
install ipx /bin/true
install sctp /bin/true
執行/sbin/lsmod | grep -e ppp -e blue -e app -e ipx -e sct,如果沒有輸出,你不需要重啟,如果有輸出,你需要重啟系統,才可以對此攻擊免疫。
-----經過測試,以上的修復方法好像不行,建議內核吧。
二、如果您使用的是Debian或Ubuntu系統,您可以通過下面的操作防止被攻擊(感謝chenjun提供)
cat > /etc/modprobe.d/mitigate-2692.conf << EOM
install ppp_generic /bin/true
install pppoe /bin/true
install pppox /bin/true
install slhc /bin/true
install bluetooth /bin/true
install ipv6 /bin/true
install irda /bin/true
install ax25 /bin/true
install x25 /bin/true
install ipx /bin/true
install appletalk /bin/true
EOM
/etc/init.d/bluez-utils stop
5、sysctl -w vm.mmap_min_addr = 1000
很明顯,第三、四、五個方案最簡單也相對有效,對業務影響也最小,如果您對編譯和安裝Linux內核不熟悉,千萬不要使用前兩個方案,否則您的系統可能永遠無法啟動。
如果你希望了解漏洞詳情,請訪問下列URL:
http://archives.neohapsis.com/archives/fulldisclosure/2009-08/0174.html
http://blog.cr0.org/2009/08/linux-null-pointer-dereference-due-to.html
https://bugzilla.redhat.com/show_bug.cgi?id=516949
如果你希望親手驗證此漏洞,你可以下載下列兩個代碼包測試(有可能導致系統不穩定,當機等現象,後果自負):
http://www.securityfocus.com/data/vulnerabilities/exploits/wunderbar_emporium-3.tgz
http://www.securityfocus.com/data/vulnerabilities/exploits/36038-4.tgz
攻擊經驗記錄:
1、exp和selinux多多少少有點關系,和內核版本,系統版本也有關系,根據wzt提供的信息Recent kernels with mmap_min_addr support may prevent exploitation if
the sysctl vm.mmap_min_addr is set above zero來看,exp和vm.mmap_min_addr有更緊密的關系,具體如何大家自己去摸索好了。最好的辦法是,把所有的RHEL4.x 5.x都裝一次,開關selinux,挨個exp一遍。xiaoyu提醒大家,如果改變了exp的狀態,首先要重啟,其次建議刪除老的文件,重新編譯一次exp。
2、在selinux開啟的情況下,所有版本都可以攻擊,不需要pulseaudio程序,因為selinux會讓程序在內存0做映射
。如果沒開selinux,則需要pulseaudio來加載exploit.so文件,理論上使用別的可加載so的程序代替pulseaudio也是可以的。如果有些版本打不了,可能是這些版本不讓在內存0做映射了。
3、回連的shell溢出雖然可以成功,但uid不是0,解決辦法是用一個帶pty的shell。這個經驗由cnbird提供。
4、64位系統同樣可以被成功攻擊。