这个内核漏洞相当的严重,只要用户拥有本地用户的权限便可以轻松的获取到管理员的权了。

下图为我在自己的服务器上做的测试,果然针对目前绝大多数的linux内核漏洞!

修复方法:

 

一、如果您使用的是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位系统同样可以被成功***。