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>
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>