发布日期:2009-07-16
更新日期:2009-07-22
受影响系统:
Linux kernel 2.6.x
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 35753
CVE(CAN) ID: CVE-2009-1897
Linux Kernel是开放源码操作系统Linux所使用的内核。
Linux kernel的drivers/misc/sgi-gru/gruprocfs.c驱动文件中存在单字节溢出漏洞:
static ssize_t options_write(struct file *file, const char __user *userbuf,
size_t count, loff_t *data)
{
unsigned long val;
char buf[80];
if (copy_from_user
(buf, userbuf, count < sizeof(buf) ? count : sizeof(buf)))
return -EFAULT;
buf[count - 1] = '';
if (!strict_strtoul(buf, 10, &val))
gru_options = val;
return count;
}
这个函数用于处理对相关procfs文件的写操作,仅在用户控制的count小于sizeof(buf)(根据之前分配,这个值为80)的情况下才会调用copy_from_user()。但是空终止没有执行这个检查便直接使用了受用户控制的count值减去1。因此,可以+w访问procfs文件的用户可以向内核内存中的任意位置写入一个空字节。
<*来源:Michael Buesch (mb@bu3sch.de)
链接:
*>
建议:
--------------------------------------------------------------------------------
厂商补丁:
Linux
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: