qemu-pwn cve-2019-6778 堆溢出漏洞分析
作者:raycp 原文来自安全客: https://www.anquanke.com/post/id/197639 漏洞描述 qemu-kvm 默认使用的是 -net nic -net user 的参数,提供了一种用户模式(user-mode)的网络模拟。使用用户模式的网络的客户机可以连通宿主机及外部的网络。用户模式网络是完全由QEMU自身实现的,不依赖于其他的工具(bridge-utils、dnsmasq、iptables等),而且不需要root用户权限。QEMU使用Slirp实现了一整套TCP/IP协议栈,并且使用这个协议栈实现了一套虚拟的NAT网络。SLiRP模块主要模拟了网络应用层协议,其中包括IP协议(v4和v6)、DHCP协议、ARP协议等。 cve-2019-6778这个漏洞存在于QEMU的网络模块SLiRP中。该模块中的 tcp_emu() 函数对端口113( Identification protocol )的数据进行处理时,没有进行有效的数据验证,导致堆溢出。经过构造,可实现以QEMU进程权限执行任意代码。 漏洞复现 首先是安装环境,根据 官方 描述,漏洞版本是 3.1.50 ,但是我在git中没有找到这个版本,于是使用的是 3.1.0 ,使用下面的命令编译qemu。 git clone git://git.qemu-project.org/qemu.git