0x0 漏洞信息
http://cve.scap.org.cn/cve_detail.php?id=CVE-2009-2692
0x1 漏洞描述
Linux内核从2.6.0至2.6.30.4版本,以及2.4.4至2.4.37.4版本,没有为proto_ops结构中套接字操作的所有函数指针进行初始化,导致本地用户可以触发空指针引用,以及使用mmap来映射zero页面,在zero页面上放置任意代码,然后调用一个不可用的操作来获得权限.该漏洞通过PF_PPPOX套接字上的sendpage操作(sock_sendpage函数)进行了验证.
0x2 代码分析
ssize_t sock_sendpage(struct file *file, struct page *page,int offset, size_t size, loff_t *ppos, int more)
{
struct socket *sock;
int flags;
sock = SOCKET_I(file->f_dentry->d_inode);
flags = !(file->f_flags & O_NONBLOCK) ? 0 : MSG_DONTWAIT;
if (more)
flags |= MSG_MORE;
/*
没有做类似的指针检查,就直接调用
if (unlikely(!sock->ops->sendpage))
return -EINVAL;
*/
return s

该博客详细分析了CVE-2009-2692漏洞,涉及Linux内核2.6.x和2.4.x的特定版本。本地用户可通过未初始化的proto_ops结构指针引发空指针引用,利用mmap映射zero页面执行任意代码,从而获取root权限。漏洞利用过程包括创建特殊节,通过sendfile函数触发.sendpage操作,最终执行内核模式的代码。修复方案在于对sock->ops->sendpage指针进行非空检查。
最低0.47元/天 解锁文章
526

被折叠的 条评论
为什么被折叠?



