安全研究

安全漏洞
Linux Kernel vmsplice_to_user()函数本地权限提升漏洞

发布日期:2008-02-08
更新日期:2008-02-21

受影响系统:
Linux kernel 2.6.22 - 2.6.24
不受影响系统:
Linux kernel 2.6.24.1
描述:
BUGTRAQ  ID: 27799
CVE(CAN) ID: CVE-2008-0009

Linux Kernel是开放源码操作系统Linux所使用的内核。

Linux Kernel的实现上存在漏洞,本地攻击者可能利用此漏洞提升自己的权限。

Linux Kernel的fs/splice.c文件中的vmsplice_to_user()函数错误地引用了用户提供的内存指针:

---8<--- fs/splice.c:1378 ---8<---
    error = get_user(base, &iov->iov_base);
    /* ... */
    if (unlikely(!base)) {
        error = -EFAULT;
        break;
    }
    /* ... */
    sd.u.userptr = base;
    /* ... */
    size = __splice_from_pipe(pipe, &sd, pipe_to_user);
---8<--- fs/splice.c:1401 ---8<---

这段代码没有验证这些指针。__splice_from_pipe()假设这些指针为有效的用户内存指针,没有执行任何验证。函数用pipe_to_user()中的__copy_to_user_inatomic()函数引用了指针,以便将数据写入用户进程内存,导致可能将从管道读取的任意数据写入到内核内存。本地攻击者可以通过特制的vmsplice()系统调用导致获得root用户权限。

<*来源:Wojciech Purczynskiof (cliph@research.coseinc.com
  
  链接:http://secunia.com/advisories/28835
        http://marc.info/?l=bugtraq&m=120283415307128&w=2
        http://www.gossamer-threads.com/lists/engine?do=post_view_printable;post=876486;list=linux
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://milw0rm.com/exploits/5093

建议:
厂商补丁:

Linux
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.24.1.bz2

浏览次数:2881
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障