赛迪网 > IT技术 网络安全 > 病毒漏洞播报
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Linux Kernel ALSA声卡驱动信息泄露漏洞

发布时间:2007.12.14 05:20     来源:赛迪网    作者:绿盟科技

【绿盟科技授权,赛迪发布,谢绝任何网站转载,违者,赛迪网将保留追究其法律责任的权利!】

发布日期:2007-09-25

更新日期:2007-09-26

受影响系统:

Linux kernel < 2.6.22.8

不受影响系统:

Linux kernel 2.6.22.8

描述:

--------------------------------------------------------------------------------

BUGTRAQ ID: 25807

CVE(CAN) ID: CVE-2007-4571

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

Linux系统的ALSA声卡驱动实现上存在漏洞,本地攻击者可能利用此漏洞获取内核内存中的敏感信息。

Linux Kernel在处理多个/proc/driver/snd-page-alloc文件的读操作时存在安全漏洞,sound/core/memalloc.c文件中如下定义了读操作的系统调用snd_mem_proc_read:

484 static int snd_mem_proc_read(char *page, char **start, off_t off,
485                              int count, int *eof, void *data)
486 {
487         int len = 0;
...
494         len += snprintf(page + len, count - len,
495                         "pages  : %li bytes (%li pages per %likB)\n",
496                         pages * PAGE_SIZE, pages, PAGE_SIZE / 1024);
...
508         return len;
509 }
在494行调用了snprintf以生成proc文件系统项的输出,如果提供了计数值1,snprintf就会仅向目标缓冲区写入单个字节,但如果有足够空间的话,函数就会返回应写入的字节数。没有设置过*eof值,也没有使用过*ppos值。

fs/proc/generic.c文件中定义了从proc_file_read调用的这个函数:

51 static ssize_t
52 proc_file_read(struct file *file, char __user *buf, size_t nbytes,
53                loff_t *ppos)
54 {
...
136                         n = dp->read_proc(page, &start, *ppos,
137                                           count, &eof, dp->data);
...
155                         n -= *ppos;
156                         if (n <= 0)
157                                 break;
158                         if (n > count)
159                                 n = count;
160                         start = page + *ppos;
...
186                 n -= copy_to_user(buf, start < page ? page : start, n);
...
193                 *ppos += start < page ? (unsigned long)start : n;
在136行从对snd_proc_mem_read函数的调用返回了值n。由于返回值(在单个设备的情况下大约为41)大于所请求的读大小(1),在158行n值被设置为count,之后*ppos递增,从start(计算为page + *ppos)将n字节拷贝到了用户域。

在之后的用户域读操作中,如果*ppos大于0的话,proc_file_read函数就会拷贝过snd_mem_proc_read写入的页面,导致泄露内核内存。

<*来源:Neil Kettle (mu-b@65535.com)

链接:http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.22.8

http://secunia.com/advisories/26918/

http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=600

*>

建议:

--------------------------------------------------------------------------------

临时解决方法:

* 卸载snd_page_alloc模块

* 修改/etc/fstab中的加载参数限制对/proc文件系统的访问

厂商补丁:

Linux

-----

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

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.8.tar.bz2

(责任编辑:李磊)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 微软与Linux/Unix抢食HPC高性能计算市场 (12-13) · 蠕虫Win32/SillyFDC.AQ通过移动驱动器传播 (12-13)
· 网宿科技12月展开“暖冬”促销行动 (12-13) · 网宿科技获得电子信息产业发展研究院“创新企 (12-13)
· “征途木马变种YMF”建立55550病毒文件 (12-13) · 病毒标记已感染文件 播放心理逻辑玩恶作剧 (12-13)
· 爱立信荣获中国信息产业首个节能创新大奖 (12-13) · 客户对SOA的积极采用 使BEA收入创新高 (12-13)
· Juniper 网络公司荣获《网络世界》权威奖项 (12-13) · Nokia N95手机取消INVITE消息拒绝服务漏洞 (12-13)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 我国软件行业未来3-5年投资增长将超30%
· 案例分析 eHR自行开发还是选择成熟产品
· 签合同前的四问 谈八大厂商“云计算”理念
· 亚略特烟草解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统