Linux Kernel KVM ‘create_pit_timer()’函数本地拒绝服务漏洞

漏洞起因
异常条件处理失败错误
危险等级

影响系统
Linux kernel 2.6.x

不受影响系统

危害
本地攻击者可以利用漏洞使系统崩溃。

攻击所需条件
攻击者必须访问Linux。

漏洞信息
Linux是一款开放源代码的操作系统。
用户空间可创建PIT但忘记了设置irqchips,在这种情况下本地攻击者可以通过PIT IRQs使主机崩溃:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000128
IP: [<ffffffffa10f6280>] kvm_set_irq+0x30/0x170 [kvm]

Call Trace:
[<ffffffffa11228c1>] pit_do_work+0x51/0xd0 [kvm]
[<ffffffff81071431>] process_one_work+0x111/0x4d0
[<ffffffff81071bb2>] worker_thread+0x152/0x340
[<ffffffff81075c8e>] kthread+0x7e/0x90
[<ffffffff815a4474>] kernel_thread_helper+0x4/0x10

漏洞是当配置了可编程间隔定时器(PIT)时”create_pit_timer()”函数(arch/x86/kvm/i8254.c)的错误,可被利用引用空指针而使主机崩溃。

测试方法

厂商解决方案
用户可参考如下供应商提供的安全公告获得补丁信息:
http://permalink.gmane.org/gmane.comp.emulators.kvm.devel/83564

漏洞提供者
Jan Kiszka