BSD Kernel SHMAT系统调用权限提升漏洞

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1107686 漏洞类型 设计错误
发布时间 2004-02-05 更新时间 2006-10-05
CVE编号 CVE-2004-0114 CNNVD-ID CNNVD-200403-037
漏洞平台 BSD CVSS评分 4.6
|漏洞来源
https://www.exploit-db.com/exploits/23655
https://www.securityfocus.com/bid/9586
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200403-037
|漏洞详情
BSD系统中的shmat(2)函数映射一个或多个进程/线程共享内存段中,之前可通过shmget(2)函数建立。shmat(2)系统调用存在编程错误,可导致共享内存段参考计数器错误的增长,可能造成权限提升。这个函数在sysv_shm.c文件中实现:--sysv_shm.clines317-322--vm_object_reference(shm_handle->shm_object);rv=vm_map_find(&p->p_vmspace->vm_map,shm_handle->shm_object,0,&attach_va,size,(flags&MAP_FIXED)?0:1,prot,prot,0);if(rv!=KERN_SUCCESS)returnENOMEM;--endofcodesnippet--shmat(2)函数开始增加下面的vm_object的参考计数,然后尝试插入vm_object到进程地址空间。问题是由于shmat(2)函数在当vm_map_find函数返回失败时忘记递减参考计数值。此漏洞可以被本地用户利用:可以使用shmget(2)函数建立共享内存段,和使用shmat(2)函数在进程地址空间中建立两个不同地点的映射。在经过大约2^32-2(非法)调用shmat(2)函数,vm_object的参考计数值会变为1。在使用shmdt(2)函数删除一个映射后,vm_object会释放,不过我们会拥有一个额外的映射。然后利用欺骗执行一个会重用释放了的vm_object堆栈段的SUID进程,这时候就可以直接写SUID程序的堆栈段,并方便的提升权限。
|漏洞EXP
source: http://www.securityfocus.com/bid/9586/info

A vulnerability has been reported to reside in the 'shmat()' system call used in the BSD kernel. Exploiting this issue may allow a local attacker to inject instructions into the memory of a privileged process.

https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/23655.tar.gz
|受影响的产品
OpenBSD OpenBSD 2.9 OpenBSD OpenBSD 2.8 OpenBSD OpenBSD 2.7 OpenBSD OpenBSD 2.6 OpenBSD OpenBSD 3.4 OpenBSD OpenBSD 3.3 OpenBSD OpenBSD 3.2
|参考资料

来源:XF
名称:bsd-shmat-gain-privileges(15061)
链接:http://xforce.iss.net/xforce/xfdb/15061
来源:BID
名称:9586
链接:http://www.securityfocus.com/bid/9586
来源:FREEBSD
名称:FreeBSD-SA-04:02
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:02.shmat.asc
来源:www.pine.nl
链接:http://www.pine.nl/press/pine-cert-20040201.txt
来源:BUGTRAQ
名称:20040205[PINE-CERT-20040201]referencecountoverflowinshmat()
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=107608375207601&w=2
来源:OSVDB
名称:3836
链接:http://www.osvdb.org/3836
来源:www.openbsd.org
链接:http://www.openbsd.org/errata33.html#sysvshm
来源:NETBSD
名称:NetBSD-SA2004-004
链接:ftp://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2004-004.txt.asc