Linux kernel setsockopt MCAST_MSFILTER整数溢出漏洞

/ns/ld/unix/data/20040502233441.htm

漏洞整理: 小男

发布日期: 2004-05-01

更新日期: 2004-05-01

漏洞属性: 其他错误

漏洞类别: 权限提升

严重程度: 高

受影响系统:


Linux kernel setsockopt MCAST_MSFILTER
---------------------------------------
Linux kernel 2.6.3
Linux kernel 2.6.2
Linux kernel 2.6.1
Linux kernel 2.4.25
Linux kernel 2.4.24
Linux kernel 2.4.23
Linux kernel 2.4.22

不影响系统:



Linux kernel 2.6.4
Linux kernel 2.4.26


漏洞描述:


Linux kernel setsockopt MCAST_MSFILTER整数溢出漏洞

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

Linux Kernel包含的ip_setsockopt()存在整数溢出,本地攻击者可以利用这个漏洞提升权限,获得ROOT权限。

ip_setsockopt()函数是setsockopt(2)系统调用的子函数,这个函数允许操作多个IP套接口选项,MCAST_MSFILTER用于提供内核从套接口接收到的多播地址列表。在IP_MSFILTER_SIZE宏计算中处理MCAST_MSFILTER套接口选项的代码存在整数溢出。




攻击代码:




漏洞代码存在于net/ipv4/ip_sockglue.c文件中:

case MCAST_MSFILTER:
{
/* ... */
msize = IP_MSFILTER_SIZE(gsf->gf_numsrc);
msf = (struct ip_msfilter *)kmalloc(msize,GFP_KERNEL);
/* ... */
for (i=0; i<gsf->gf_numsrc; ++i) {
psin = (struct sockaddr_in *)&gsf->gf_slist[i];
if (psin->sin_family != AF_INET)
goto mc_msf_out;
msf->imsf_slist[i] = psin->sin_addr.s_addr;
}

whereas the IP_MSFILTER_SIZE macro is defined as follows:

#define IP_MSFILTER_SIZE(numsrc) \
(sizeof(struct ip_msfilter) - sizeof(__u32) \
+ (numsrc) * sizeof(__u32))



安全建议:


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

http://www.kernel.org/

=========================
文章类型:转载 提交:重新再来 核查:NetDemon