Lucene search

K
seebugRootSSV:12084
HistoryAug 21, 2009 - 12:00 a.m.

Linux kernel md驱动本地拒绝服务漏洞

2009-08-2100:00:00
Root
www.seebug.org
21

0.0004 Low

EPSS

Percentile

10.1%

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
厂商补丁:

Linux

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

http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.30.y.git;a=commit;h=3c92900d9a4afb176d3de335dc0da0198660a244