安全研究

安全漏洞
Linux kernel setsockopt MCAST_MSFILTER整数溢出漏洞

发布日期:2004-04-20
更新日期:2004-04-23

受影响系统:
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
描述:
CVE(CAN) ID: CVE-2004-0424

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))

利用这个溢出,本地攻击者可以获得root用户权限。

<*来源:Paul Starzetz (paul@starzetz.de
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=108253171301153&w=2
*>

建议:
厂商补丁:

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

http://www.kernel.org/

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