NVIDIA GeForce Experience漏洞分析:从任意文件写入到命令执行
字数 1145 2025-08-29 08:32:09
NVIDIA GeForce Experience漏洞分析:从任意文件写入到命令执行
漏洞概述
本漏洞(CVE-2019-5674)存在于NVIDIA GeForce Experience(GFE)软件中,该软件默认安装在运行NVIDIA GeForce产品的系统上。漏洞允许攻击者通过任意文件写入实现权限提升,最终可能导致系统完全被控制。
受影响的软件
- NVIDIA GeForce Experience (GFE) 3.18之前版本
- 相关进程:
- nvcontainer.exe
- NVDisplay.Container.exe
漏洞发现过程
初始观察
- 使用Process Monitor(Procmon)工具监控NVIDIA相关进程
- 发现以下进程以SYSTEM权限写入日志文件:
- nvcontainer.exe
- NVDisplay.Container.exe
关键发现
- 日志文件位置:
C:\ProgramData\NVIDIA Corporation\下的多个子目录 - 权限问题:Everyone用户组对这些日志文件有完全控制权限
- 写入行为:SYSTEM权限进程向这些文件写入数据
漏洞技术细节
任意文件写入漏洞
-
漏洞原理:
- 普通用户可以修改日志文件
- 可以创建指向系统关键文件的硬链接或符号链接
- SYSTEM进程会跟随链接写入目标文件
-
利用工具:
- 使用James Forshaw的symboliclink-testing-tools创建符号链接
-
利用步骤:
1. 创建从日志文件(如C:\ProgramData\NVIDIA Corporation\nvstapisvr\nvstapisvr.log) 到系统文件(如C:\windows\test.file)的符号链接 2. SYSTEM进程写入日志文件时,实际写入目标系统文件
数据控制漏洞
-
发现点:
C:\ProgramData\NVIDIA Corporation\NvStreamSrv\settings.txt文件内容会被写入日志- 用户可以修改此文件内容
-
注入方法:
- 在settings.txt中注入恶意命令
- 切换GameStream服务状态触发日志写入
完整利用链
-
符号链接创建问题:
- 目标目录必须为空才能创建符号链接
- 解决方案:
- 进入安全模式
- 结合DoS漏洞使服务崩溃释放文件锁
-
权限提升方法:
1. 将命令注入settings.txt 2. 清空目标目录 3. 创建从日志文件到启动目录文件(如C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\cmd.bat)的符号链接 4. 触发日志写入 5. 用户登录时执行恶意命令 -
替代方案:
- 针对NVIDIA的恢复机制:
- 服务崩溃超过2次时会执行
C:\Windows下的批处理文件 - 将批处理文件作为符号链接目标
- 服务崩溃超过2次时会执行
- 针对NVIDIA的恢复机制:
漏洞修复
- NVIDIA已在3.18及之后版本修复此漏洞
- 建议用户更新至最新版本
教学总结
-
关键知识点:
- 不安全的文件权限配置
- 符号链接攻击
- 日志注入
- 利用系统恢复机制
-
防御建议:
- 严格控制程序数据文件的权限
- 对日志写入进行完整性检查
- 限制符号链接的创建和使用
- 及时更新软件
-
研究价值:
- 展示了如何将看似有限的漏洞(任意文件写入)转化为完整攻击链
- 强调了权限配置和输入验证的重要性