作者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