首页 -> 安全研究

安全研究

安全漏洞
Linux kernel do_brk()参数边界检查不充分漏洞

发布日期:2003-11-29
更新日期:2003-12-04

受影响系统:
Linux kernel 2.4.9
Linux kernel 2.4.8
Linux kernel 2.4.7
Linux kernel 2.4.6
Linux kernel 2.4.5
Linux kernel 2.4.4
Linux kernel 2.4.3
Linux kernel 2.4.22
Linux kernel 2.4.21
Linux kernel 2.4.20
Linux kernel 2.4.2
Linux kernel 2.4.19
Linux kernel 2.4.17
Linux kernel 2.4.16
Linux kernel 2.4.15
Linux kernel 2.4.14
Linux kernel 2.4.13
Linux kernel 2.4.12
Linux kernel 2.4.11
Linux kernel 2.4.10
Linux kernel 2.4.1
Linux kernel 2.4
Linux kernel 2.4.18
    - Conectiva Linux 8.0
    - Debian Linux 3.0
    - RedHat Linux 8.0
    - RedHat Linux 7.3
    - SuSE Linux 8.2
不受影响系统:
Linux kernel 2.4.23
描述:
CVE(CAN) ID: CVE-2003-0961

Linux是一款开放源代码操作系统。

Linux内核包含的do_brk()函数对参数缺少充分边界检查,本地攻击者可以利用这个漏洞获得ROOT权限。

最近运行在X86机器的Linux内核运行在X86机器的物理内存管理使用简单平坦内存模型,每个用户进程内存地址范围为从0到TASK_SIZE字节。超过此内存的限制不能被用户访问,并包含此数据结构的内核代码。用户进程被分为几个逻辑段,成为虚拟内存区域,内核跟踪和管理用户进程的虚拟内存区域提供切当的内存管理和内存保护处理。

do_brk()是一个内部内核函数,用于间接调用管理进程的内存堆的增加和缩减(brk),它是一个mmap(2)系统调用的简化版本,只处理匿名映射(如未初始化数据),函数对其参数缺少正确的边界检查,可以利用建立任意大的虚拟内存区域,超过用户可访问的内存限制,因此此限制以上的内核内存会变成用户进程的一部分。

一般用户进程的内存分布类似如下:

bash$ cat /proc/self/maps
08048000-0804c000 r-xp 00000000 03:02 207935     /bin/cat
0804c000-0804d000 rw-p 00003000 03:02 207935     /bin/cat
0804d000-0804e000 rwxp 00000000 00:00 0
40000000-40015000 r-xp 00000000 03:02 207495     /lib/ld-2.3.2.so
40015000-40016000 rw-p 00014000 03:02 207495     /lib/ld-2.3.2.so
40016000-40017000 rw-p 00000000 00:00 0
40020000-40021000 rw-p 00000000 00:00 0
42000000-4212f000 r-xp 00000000 03:02 319985     /lib/tls/libc-2.3.2.so
4212f000-42132000 rw-p 0012f000 03:02 319985     /lib/tls/libc-2.3.2.so
42132000-42134000 rw-p 00000000 00:00 0
bfffe000-c0000000 rwxp fffff000 00:00 0

do_brk()函数在ELF和a.out装载器及brk(2)函数调用,这是三个不同渠道可用于利用这个do_brk()漏洞,成功利用此漏洞,进程内存可包含一个大的内存映射,如:

080a5000-c891d000 rwxp 00000000 00:00 0

本地攻击者可以利用这个漏洞完全控制系统,包括获得UID 0权限,修改内核代码和数据结构等。

<*来源:Paul Starzetz (paul@starzetz.de
        Wojciech Purczynski (cliph@isec.pl
  
  链接:http://isec.pl/vulnerabilities/isec-0012-do_brk.txt
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 使用ulimit -d命令限制用户进程数据段大小可暂时修正此问题。

厂商补丁:

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

http://www.kernel.org/pub/linux/kernel/v2.4/patch-2.4.23.bz2

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