作者weii (迷惑失道)
看板SFFamily
标题[转录]Re: [分享] Linux内核高危漏洞:一命令可攻击所有Li …
时间Wed Aug 19 16:24:42 2009
※ [本文转录自 Linux 看板]
作者: mecs (mecs) 看板: Linux
标题: Re: [分享] Linux内核高危漏洞:一命令可攻击所有Li …
时间: Tue Aug 18 09:18:08 2009
※ 引述《coldnew (夜影)》之铭言:
: 怎都没人再讲这消息呢......?
: 这是国外hacker 於 8/11 发布的bug
: http://baoz.net/linux-sockops-wrap-proto-ops-local-root-exploit/
: 经过测试,我负责的 bbs server(Debian Linux) 沦陷
: 自己的linux(Gentoo Linux) 也中招
: 所以请各位朋友注意一下罗
这个漏洞可以分成两个部份
1. NULL pointer dereference in Kernel
2. mmap to 0
这个漏洞是另用 sock_sendfile() 导致 NULL pointer dereference。
通常 NULL pointer dereference 会产生 kernel crash or oops ,
因为 NULL 通常不是合法的位址。但是在 VM 里,它就是 first page。如果
user application 可以 mmap first page (mmap to 0),那麽这个
NULL 就是合法的。
在这种情况下 kernel 去执行 NULL ( function pointer ),就等於执行
user application。
就以 sock_sendfile() 来看好了:
727static ssize_t sock_sendpage(struct file *file, struct page *page,
728 int offset, size_t size, loff_t *ppos, int more)
729{
730 struct socket *sock;
731 int flags;
732
733 sock = file->private_data;
734
735 flags = !(file->f_flags & O_NONBLOCK) ? 0 : MSG_DONTWAIT;
736 if (more)
737 flags |= MSG_MORE;
738
739 return sock->ops->sendpage(sock, page, offset, size, flags);
740}
注意 739 行,如果 sendpage 没有初始,那 sock->ops->sendpage 就会是 NULL。
NULL pointer dereference 是一个相当严重的问题,所以在 2.6.23 之後,
有一个 kernel 变数 "mmap_min_addr" 来限制 user 可以 mmap 的最低位址,
来避免类似的事件发生。
mmap_min_addr 也造成了一些问题,某些 legacy code 需要 mmap to 0 。
因此 SELinux 的 policy 里面有一个 mmap_zero,Redhat的预设是允许 mmap to 0。
这就是为什麽有些人有 SELinux 反而还比较不安全。
利用 Brad Spengler 的程式在自己的机器上没有执行出来不代表机器没有风险。
也许 SELinux 在 disabled 的状态加上 mmap_min_addr 不是零的情况之下使得
这个 exploit 没有成功。不知情的人认为他的机器是安全的,之後如果因为某些需求
安装了 Wine,这个特别的程式需要 mmap to 0。在官方网站的指引之下,就把
mmap_min_addr 设成 0 了。
(
http://wiki.winehq.org/PreloaderPageZeroProblem) 。
所以 Securityfocus 几乎把所有 2.6.x 跟 2.4.x 都列为 "Vulnerable"
不是没有道理的。(
http://www.securityfocus.com/bid/36038)
Pulseaudio 则是另外一个利用 NULL pointer 的 exploit,有兴趣的人可以
去看看 LWN 的文章(
http://lwn.net/Articles/342330/)。
事实上也未必要 mmap to 0,只是这个是「比较可能」发生的 kernel bug。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 71.206.77.71
1F:推 laiis:所以在securityfocus里罗列的kernel版本都是易受伤害的罗? 08/18 10:55
2F:推 laiis:难怪我自己测试时除了shell当了以外连声音也当了..... 08/18 11:01
3F:→ laiis:因为 pulseaudio 被当掉了...还多了几个 nobody 的程式在跑 08/18 11:01
4F:推 WolfLord:所以禁止user在机器上边程式是最基本的安全控管 XDD 08/18 13:27
5F:→ mecs:给楼上:本篇并没有这样的推论 ... 08/19 08:03
6F:→ mecs:前面也很多人提及了,单是禁止编译程式并不会有太大的效果 .. 08/19 08:06
--
「大哥!你....」
「你在以旁门左道的方法,逼自己的剑气踰越极限﹖」
「废话!」应雄反驳:
「什麽旁门左道﹖
能够将最强的功力提昇至无法再上的强中之强,
才是必胜的最佳战略!」
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.117.169