设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 安全技术 >> 病毒漏洞 >> Linux内核isdn_net.c文件 本地溢出漏洞
精品推荐
病毒漏洞点击TOP10
·“艾妮”(ANI)病毒解决方案
·解决DF冰点不修改NTLDR,最后一次正确配置的问题
·Apache Web Server 分块(chunked)编码 远程溢出漏洞
·Raw Socket(原始套接字)实现Sniffer(嗅探)
·OpenSSH缓冲区管理操作远程溢出漏洞
·彻底渗透远程登陆Telnet
·能开启摄像头偷窥隐私的病毒
·如何知道别人上网时的IP地址
·Microsoft ASN.1库BER解码堆破坏漏洞
·截获流经本机网卡的IP数据包
安全技术点击TOP10
·计算机启动过程详解
·主板芯片级维修技术资料
·主板点不亮(不显示)的BIOS修复两法
·在WindowsXP/2003下查看端口对应的进程
·20种死机案例实录
·二手大屏珑管显示器购买使用手册
·全面解开能上QQ但网页无法打开之谜
·贴片元件标记对应型号资料
·Symantec AntiVirus防病毒服务器安装配置使用指南
·主板开机原理
精选专题

Linux内核isdn_net.c文件 本地溢出漏洞

作者: 来源: 时间:2007-12-7 16:57:11

开源操作系统Linux内核Linux Kernel实现上存在本地溢出漏洞,此漏洞存在于drivers/isdn/i4l/isdn_net.c文件中的isdn_net_setcfg()函数在处理发送给ISDN伪设备(/dev/isdnctrl)的IOCTL配置请求时。
 
  更新日期:2007-12-03
 
  受影响系统:
 
  Linux kernel 2.6.23
 
  描述:
 
  BUGTRAQ ID: 26605
 
  CVE(CAN) ID: CVE-2007-6063
 
  Linux Kernel是开放源码操作系统Linux所使用的内核。
 
  Linux Kernel实现上存在漏洞,本地攻击者可能利用此漏洞提升权限。
 
  Linux Kernel的drivers/isdn/i4l/isdn_net.c文件中的isdn_net_setcfg()函数在处理发送给ISDN伪设备(/dev/isdnctrl)的IOCTL配置请求时存在缓冲区溢出漏洞:
 

isdn_ioctl (drivers/isdn/i4l/isdn_common.c):
  1270 isdn_ioctl(strUCt inode *inode, struct file *file, uint cmd, ulong arg)
  ...
  ...
  1410 case IIOCNETSCF:
  1411 
  1412 if (arg) {
  1413 if (copy_from_user(&cfg, argp, sizeof(cfg))) *** <- cfg is user-controlled
  1414 return -EFAULT;
  1415 return isdn_net_setcfg(&cfg); *** <-call isdn_net_setcfg()
  1416 } else
  1417 return -EINVAL;
  ...
  在1413行,cfg是从用户空间读取的,因此受用户控制。
在1415行调用了isdn_net_setcfg()函数,&cfg作为参数传送给了isdn_net_setcfg()。
  isdn_net_setcfg (drivers/isdn/i41/isdn_net.c):
  2664 isdn_net_setcfg(isdn_net_ioctl_cfg * cfg)
  2665 {
  ...
  2777 if (cfg->exclusive > 0) {
  2778 unsigned long flags;
  2779
  2780 
  2781 spin_lock_irqsave(&dev->lock, flags);
  2782 if ((i = isdn_get_free_channel(ISDN_USAGE_NET,
  2783 lp->l2_proto, lp->l3_proto, drvidx,
  2784 chidx, lp->MSN)) < 0) {
  2785 
  2786 lp->exclusive = -1;
  2787 spin_unlock_irqrestore(&dev->lock, flags);
  2788 return -EBUSY;
  2789 }
  2790 
  2791 dev->usage = ISDN_USAGE_EXCLUSIVE;
  2792 isdn_info_update();
  2793 spin_unlock_irqrestore(&dev->lock, flags);
  2794 lp->exclusive = i;
  2795 } else {
  2796 
  2797 lp->exclusive = -1;
  2798 if ((lp->pre_device != -1) && (cfg->exclusive == -1)) {
  2799 isdn_unexclusive_channel(lp->pre_device, lp->pre_channel);
  2800 isdn_free_channel(lp->pre_device, lp->pre_channel, ISDN_USAGE_NET);
  2801 drvidx = -1;
  2802 chidx = -1;
  2803 }
  2804 }
  2805 strcpy(lp->msn, cfg->eaz); *** <- Possible overrun of lp->msn by cfg-eaz
  2806 lp->pre_device = drvidx;
  2807 lp->pre_channel = chidx;
  2808 lp->onhtime = cfg->onhtime;
  2809 lp->charge = cfg->charge;
  ...
  2884 return -ENODEV;
  2885 }

在2805行调用了strcpy(),lp->msn参数大小为32,cfg->eaz大小为256。由于*cfg的数据是用户可控的,因此cfg->eaz也是用户可控的,这样就可以通过cfg->eaz字符串覆盖目标字符串lp->msn。如果cfg->eaz字符串的长度大于32的话,就可以触发缓冲区溢出。

    建议使用此软件的用户随时关注厂商的主页以获取最新版本:http://www.kernel.org/


Linux内核isdn_net.c文件 本地溢出漏洞 相关文章:
Linux内核isdn_net.c文件 本地溢出漏洞 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com