深入探索QEMU漏洞利用与AWS安全机制
一、QEMU漏洞利用
1. 触发漏洞
在QEMU中,存在一个漏洞,通过发送wLength字段大于4096的SETUP数据包,可设置无效的 s->setup_len 。在数据阶段处理OUT数据包时,可能导致 s->data_buf 溢出。处理OUT数据包的QEMU函数是 do_token_out ,位于 /qemu/hw/usb/core.c 。
触发溢出的条件如下:
- 当 s->setup_state 为 SETUP_STATE_DATA 时,会调用 usb_packet_copy 。
- 处理损坏的SETUP数据包时, do_token_setup 在设置 s->setup_state 之前返回。可通过先发送另一个SETUP数据包来绕过此限制。
具体操作是发送两个连续的SETUP数据包(第一个包含有效wLength)和一个OUT数据包来触发缓冲区溢出。 usb_packet_copy 根据数据包的PID确定复制方向:SETUP或OUT数据包调用 iov_to_buf ,IN数据包调用 iov_from_buf 。
以下是触发溢出并覆盖缓冲区后32字节的概念验证代码(位于 /labs
超级会员免费看
订阅专栏 解锁全文
1076

被折叠的 条评论
为什么被折叠?



