加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

对 Viper RGB 驱动多个缓冲区溢出漏洞的解析

发布时间:2021-11-14 15:09:53 所属栏目:安全 来源:互联网
导读:0x01 漏洞信息 漏洞类型:基于堆栈的缓冲区溢出[ CWE-121 ],暴露的IOCTL(访问控制不足)[ CWE-782 ] 影响:代码执行允许特权提升 远程可利用:否 本地可利用:是 CVE名称: CVE-2019-19452 0x02 漏洞描述 Patriot Memory是一家总部位于美国的技术公司,设
0x01 漏洞信息
 
漏洞类型:基于堆栈的缓冲区溢出[ CWE-121 ],暴露的IOCTL(访问控制不足)[ CWE-782 ] 影响:代码执行允许特权提升 远程可利用:否 本地可利用:是 CVE名称:  CVE-2019-19452
 
0x02 漏洞描述
 
Patriot Memory是一家总部位于美国的技术公司,设计和制造内存模块,闪存驱动器,移动配件和游戏设备。
 
在处理IoControlCode 0x80102040时,在Viper驱动程序RGB 1.1版中发现缓冲区溢出漏洞。本地攻击者可以利用此漏洞,因此获得NT AUTHORITY SYSTEM特权。
 
IOCTL代码0x80102050和0x80102054允许具有低特权的用户从IO端口读取或向其写入1/2/4字节。可以通过多种方式来利用它来最终以提升的特权运行代码。
 
0x03  安全建议
 
1.1版和所有以前的版本在每个受支持的Windows版本中都容易受到攻击(安装程序:Patriot Viper RGB v1.1.exe)
 
解决方案和解决方法:
 
Patriot Memory已发布版本MSIO_191231_v1.2,该版本已修复报告中的漏洞。
 
这些漏洞是由Core Security Exploit团队的Ricardo Narvaja和Lucas Dominikow发现的。
 
0x04  漏洞分析和利用验证
 
基于堆栈的缓冲区溢出特权提升
 
CVE-2019-19452
 
对版本1.0的漏洞的利用验证发现了溢出漏洞的存在,该溢出可以覆盖ZwOpenSection和ZwMapViewOfSection的参数。
 
1.0版和1.1版之间的二进制代码差异表明,尽管对这些函数的参数进行了检查,但先前的溢出漏洞仍存在未进行修补,而CoreLabs在随后研究中能够控制其大小。
 
可以在下面找到有关版本1.0的信息:
 
https://github.com/active-labs/Advisories/blob/master/ACTIVE-2019-012.md
 
https://www.activecyber.us/activelabs/viper-rgb-driver-local-privilege-escalation-cve-2019-18845
 
在版本1.1中,控制器分析IoControlCodes并到达此位置,将IoControlCode与0x80102040进行比较。
 
.text:0000000000001518 lea     rcx, aIrpMjDeviceCon ; "IRP_MJ_DEVICE_CONTROL"
.text:000000000000151F call    DbgPrint
.text:0000000000001524 mov     r11d, [rbp+18h]
.text:0000000000001528 cmp     r11d, 80102040h
.text:000000000000152F jz      loc_16D4
如果比较结果正确,则会调用由CoreLabs控制的MaxCount(要复制的大小)和SRC(源缓冲区)的memmove,没有进行验证以确保数据适合目标缓冲区,从而导致堆栈溢出。
 
.text:00000000000016E8 lea     rcx, [rsp+78h+Src] ; Dst
.text:00000000000016ED mov     r8, rbx         ; MaxCount
.text:00000000000016F0 mov     rdx, rsi        ; Src
.text:00000000000016F3 call    memmove
由于驱动程序尚未使用安全cookie保护函数的堆栈,因此可以成功执行任意代码。
 
可以通过调用CreateFileA来获取驱动程序的句柄,然后通过发送受控数据来调用DeviceIoControl来实现此功能。下面将使用针对Windows 7 SP1 x64设计PoC,演示针对x64版本驱动程序的代码执行。该代码将需要改编为其他Windows版本。

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读