BUGTRAQ ID: 32910
QEMU和KVM都是开放源码的模拟器软件。
Qemu和KVM的VNC服务器在处理特制的报文时可能出现死循环,导致拒绝服务的情况。
vnc.c文件的protocol_client_msg()函数负责处理入站的VNC低层消息,以下是有漏洞的代码段:
/-----------
vnc.c
1185: static int protocol_client_msg(VncState *vs, uint8_t *data, size_t
len)
1186: {
1187: int i;
1188: uint16_t limit;
1189:
1190: switch (data[0]) {
...
1201: case 2:
1202: if (len == 1)
1203: return 4;
1204:
1205: if (len == 4)
1206: return 4 + (read_u16(data, 2) * 4);
- -----------/
当VNC服务器接收到由\x02\x00\x00\x00组成的消息时,read_u16()函数会返回0。由于调用该函数的len参数总为4,这就会触发死循环。
Fabrice Bellard QEMU 0.9.1
Qumranet KVM 79
Qumranet KVM 36
厂商补丁:
Fabrice Bellard
---------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
<a href=http://fabrice.bellard.free.fr/qemu/ target=_blank>http://fabrice.bellard.free.fr/qemu/</a>
Qumranet
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
<a href=http://kvm.qumranet.com/kvmwiki/Front_Page target=_blank>http://kvm.qumranet.com/kvmwiki/Front_Page</a>
暂无评论