CVE(CAN) ID: CVE-2009-2849
Linux Kernel是开放源码操作系统Linux所使用的内核。
Linux Kernel的md驱动(drivers/md/md.c)中存在拒绝服务漏洞,本地用户可以通过suspend_* sysfs属性和suspend_lo_store或suspend_hi_store函数触发空指针引用。只有在sysfs可写的情况下才可以利用这个漏洞。以下是有漏洞的代码段:
static ssize_t
suspend_lo_store(mddev_t *mddev, const char *buf, size_t len)
{
char *e;
unsigned long long new = simple_strtoull(buf, &e, 10);
if (mddev->pers->quiesce == NULL)
return -EINVAL;
if (buf == e || (*e && *e != '\n'))
return -EINVAL;
if (new >= mddev->suspend_hi ||
(new > mddev->suspend_lo && new < mddev->suspend_hi)) {
mddev->suspend_lo = new;
mddev->pers->quiesce(mddev, 2);
return len;
} else
return -EINVAL;
}
static struct md_sysfs_entry md_suspend_lo =
__ATTR(suspend_lo, S_IRUGO|S_IWUSR, suspend_lo_show, suspend_lo_store);
Linux kernel 2.6.x
厂商补丁:
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: