Linux Kernel ‘fs/befs/linuxvfs.c’本地拒绝服务漏洞

漏洞起因
设计错误
危险等级

 
影响系统
Linux kernel 2.6.x
 
不受影响系统
 
危害
本地攻击者可以利用漏洞使系统崩溃。
 
攻击所需条件
攻击者必须访问linux。
 
漏洞信息
Linux是一款开放源代码的操作系统。
Be文件系统驱动存在安全漏洞,通过破坏的Be文件系统可触发内核崩溃。
在fs/befs/linuxvfs.c中, befs_follow_link()读取从Be文件系统中的数据流中读取长符号链接的长度属性:
   befs_data_stream *data = &befs_ino->i_data.ds;
   befs_off_t len = data->size;
  
由于对data->size / len长度进行验证,在一个破坏的文件系统上可以设置为"0"。
befs_follow_link()基于len长度分配内存,在这种情况下kmalloc会返回ZERO_SIZE_PTR:
        link = kmalloc(len, GFP_NOFS);
       
之后,一个指派引用ZERO_SIZE_PTR可导致内核崩溃:
        link[len – 1] = ‘\0’;
 
测试方法
 
厂商解决方案
用户可参考如下供应商提供的安全公告获得补丁信息:
http://git.kernel.org/linus/338d0f0a6fbc82407864606f5b64b75aeb3c70f2
 
漏洞提供者
Timo Warns of PRESENSE Technologies
 
漏洞消息链接
http://www.pre-cert.de/advisories/PRE-SA-2011-06.txt

发表评论?

0 条评论。

发表评论