当前位置:七道奇文章资讯安全技术网络技术
日期:2010-04-29 02:36:00  来源:本站整理

linux使普通用户得到root权限的vmsplice系统调用漏洞解析[网络技术]

赞助商链接



  本文“linux使普通用户得到root权限的vmsplice系统调用漏洞解析[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

From 幻泉之洲'blog

vmsplice系统调用是linux内核2.6.17第一次引入的,随 后被发现存在能让普通用户晋升到root权限的漏洞.该漏洞影响 的版本网络上笼统的说法是:2.6.17-2.6.24.1,实际上更切当的说是:2.6.17- 2.6.22.17,2.6.23-2.6.23.15 和 2.6.24-2.6.24.1.

关于这个漏洞,国内很少有人写过什么原创性的文章举行介绍,因为上研究生 操作系统课的课程报告就是做这个,所以把它放上来.漏洞固然已经补上,但学习其机理,还是对比有好处,有意思的.


1、预备知识
1. 本文的一些约定
这个颜色 的代码来自攻击程序
这个颜色的代码来自内核
这个颜色表示重要的地方,大概安装程序逻辑,下一步要进入的函数
所提到的攻击代码是本文附带的exp.c

2. vmsplice()介绍
原型:long vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned int flags);
此中:

struct iovec
{
void __user *iov_base;
__kernel_size_t iov_len;
};

这个系统调用将用户空间的内存映射到内核空间,从而避免了实际的内存写操作,提高了系统效率.这个功效的是主如果通过fs/splice.c的 do_vmsplice()来实现.

3. 有关Page的常量
#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT)
/*1UL:32位的unsigned int 1,左移12位,PAGE_SIZE=0×1000*/
#define PAGE_MASK (~(PAGE_SIZE-1))
/*PAGE_MASK=0×000*/

2、Splice系统调用漏洞考古
2006 Jun 18
在公布的Linux kernel 2.6.17中引入vmsplice(),用于提高性能.
没有人知道,对应的fs/splice.c中的get_iovec_page_array()函数存在漏洞.

2007 Oct 09
在公布的Linux kernel 2.6.23 中
加入了vmsplice_to_user()函数和copy_from_user_mmap_sem()函数,也存在一样的漏洞.

2007 Dec 03
ID为CVE-2008-0009和CVE-2008-0010的漏洞报告被提交到CVE.
辨别指出vmsplice_to_user()和copy_from_user_mmap_sem()存在这个漏洞.
但这两份报告有个错误:这两个漏洞存在于2.6.23-2.6.24而不是报告里说的2.6.22-2.6.24,因为这两个函数是在2.6.23里正式 被加进来的.

2008 Feb 05
ID为CVE-2008-0600的漏洞报告被提交到CVE
指出:

The vmsplice_to_pipe function in Linux kernel 2.6.17 through 2.6.24.1 does not validate a certain userspace pointer before dereference, which allows local users to gain root privileges via crafted arguments in a vmsplice system call, a different vulnerability than CVE-2008-0009 and CVE-2008-0010.

事实上,问题出在get_iovec_page_array()函数.但因为get_iovec_page_array()函数只被 vmsplice_to_pipe()调用,数据参数都来自vmsplice_to_pipe(),所以,get_iovec_page_array() 没有考证用户数据的合理性也可以被认为vmsplice_to_pipe()没有考证用户数据的合理性.

2008 Feb 08
在公布的Linux kernel 2.6.24.1和2.6.23.15补钉中补上了CVE-2008-0009和CVE-2008-0010提到这个这两个漏洞.

2008 Feb 09
ID为qaaz的Geek在milw0rm上公布了两个对应的POC代码,第一个是针对vmsplice_to_user()函数和 copy_from_user_mmap_sem()函数的,别的一个是针对get_iovec_page_array()函数,

2008 Feb 11
在公布的Linux kernel 2.6.24.2 、2.6.23.16和 2.6.22.18补钉中补上了get_iovec_page_array()函数的漏洞.

3、漏洞攻击效果
无图
4、漏洞攻击真实案例
This bug is being actively exploited in the wild — our server was just broken in to by an attacker using it. (They got a user’s password by previously compromising a machine somewhere else where that user had an account, and installed a modified ssh binary on it

[1] [2] [3]  下一页


  以上是“linux使普通用户得到root权限的vmsplice系统调用漏洞解析[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • windows下的近似linux下的grep号令--findstr
  • linux下mysql链接被防火墙禁止的办理办法
  • Linux下mysql新建账号及权限设置办法
  • SUSE Linux下搭建Web服务器
  • Windows/Linux MySQL忘掉密码重置密码教程
  • Linux下Apache自动监测重启脚本(智能化程度较高)
  • linux备份 linux克隆 linux clone
  • <b>为什么 Linux不需求碎片整理</b>
  • CentOS6 yum搭建Linux+Nginx+PHP+MYSQL(LNMP)
  • Linux系统有效防备ARP攻击
  • Linux下 Memcache的安装和简单管理
  • 笔记本预装linux重装成windows系统
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .