发新话题
打印

BSD Kernel SHMAT 存在系统调用造成权限提升漏洞

BSD Kernel SHMAT 存在系统调用造成权限提升漏洞

受影响
[url=/jsj/system/]系统[/url]
  FreeBSD FreeBSD 5.2-RELEASE
FreeBSD FreeBSD 5.1-RELEASE
FreeBSD FreeBSD 5.0
FreeBSD FreeBSD 4.8
FreeBSD FreeBSD 4.7
FreeBSD FreeBSD 4.6
NetBSD NetBSD 1.6.1
NetBSD NetBSD 1.6
NetBSD NetBSD 1.5.3
NetBSD NetBSD 1.5.2
NetBSD NetBSD 1.5.1
NetBSD NetBSD 1.5
NetBSD NetBSD 1.4.2
NetBSD NetBSD 1.4.1
NetBSD NetBSD 1.4
NetBSD NetBSD 1.3.3
NetBSD NetBSD 1.3.2
NetBSD NetBSD 1.3.1
NetBSD NetBSD 1.3
OpenBSD OpenBSD 3.4
OpenBSD OpenBSD 3.3
OpenBSD OpenBSD 3.2
OpenBSD OpenBSD 3.1
OpenBSD OpenBSD 3.0
OpenBSD OpenBSD 2.9
OpenBSD OpenBSD 2.8
OpenBSD OpenBSD 2.7
OpenBSD OpenBSD 2.6  详细描述:  BSD
[url=/jsj/system/]系统[/url]
中的shmat(2)函数映射一个或多个进程/线程共享内存段中,之前可通过shmget(2)函数建立。shmat(2)
[url=/jsj/system/]系统[/url]
调用存在编程错误,可导致共享内存段参考计数器错误的增长,可能造成权限提升。  shmat(2)函数开始增加下面的vm_object的参考计数,然后尝试插入vm_object到进程地址空间。问题是由于shmat(2)函数在当vm_map_find函数返回失败时忘记递减参考计数值。  此
[url=/bugs/]漏洞[/url]
可以被本地用户利用:  可以使用shmget(2)函数建立共享内存段,和使用shmat(2)函数在进程地址空间中建立两个不同地点的映射。  在经过大约2^32-2(非法)调用shmat(2)函数,vm_object的参考计数值会变为1。  在使用shmdt(2)函数删除一个映射后,vm_object会释放,不过我们会拥有一个额外的映射。然后利用欺骗执行一个会重用释放了的vm_object堆栈段的SUID进程,这时候就可以直接写SUID
[url=/code/]程序[/url]
的堆栈段,并方便的提升权限。  
补丁下载:  FreeBSD已经为此发布了一个
[url=/]安全[/url]
公告(FreeBSD-SA-04:02)以及相应补丁:
FreeBSD-SA-04:02:shmat reference counting bug
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:02.shmat.asc  # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:02/shmat.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:02/shmat.patch.asc                                 



[url=java:copyUrl(]复制地址,推荐给QQ、MSN上的好友[/url]


[url=/bbs/]进入黑客手册技术论坛和大家一起讨论[/url]

TOP

发新话题