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

漏洞发现过程

初始观察

  1. 使用Process Monitor(Procmon)工具监控NVIDIA相关进程
  2. 发现以下进程以SYSTEM权限写入日志文件:
    • nvcontainer.exe
    • NVDisplay.Container.exe

关键发现

  1. 日志文件位置:C:\ProgramData\NVIDIA Corporation\下的多个子目录
  2. 权限问题:Everyone用户组对这些日志文件有完全控制权限
  3. 写入行为:SYSTEM权限进程向这些文件写入数据

漏洞技术细节

任意文件写入漏洞

  1. 漏洞原理

    • 普通用户可以修改日志文件
    • 可以创建指向系统关键文件的硬链接或符号链接
    • SYSTEM进程会跟随链接写入目标文件
  2. 利用工具

    • 使用James Forshaw的symboliclink-testing-tools创建符号链接
  3. 利用步骤

    1. 创建从日志文件(如C:\ProgramData\NVIDIA Corporation\nvstapisvr\nvstapisvr.log)
       到系统文件(如C:\windows\test.file)的符号链接
    2. SYSTEM进程写入日志文件时,实际写入目标系统文件
    

数据控制漏洞

  1. 发现点

    • C:\ProgramData\NVIDIA Corporation\NvStreamSrv\settings.txt文件内容会被写入日志
    • 用户可以修改此文件内容
  2. 注入方法

    • 在settings.txt中注入恶意命令
    • 切换GameStream服务状态触发日志写入

完整利用链

  1. 符号链接创建问题

    • 目标目录必须为空才能创建符号链接
    • 解决方案:
      • 进入安全模式
      • 结合DoS漏洞使服务崩溃释放文件锁
  2. 权限提升方法

    1. 将命令注入settings.txt
    2. 清空目标目录
    3. 创建从日志文件到启动目录文件(如C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\cmd.bat)的符号链接
    4. 触发日志写入
    5. 用户登录时执行恶意命令
    
  3. 替代方案

    • 针对NVIDIA的恢复机制:
      • 服务崩溃超过2次时会执行C:\Windows下的批处理文件
      • 将批处理文件作为符号链接目标

漏洞修复

  • NVIDIA已在3.18及之后版本修复此漏洞
  • 建议用户更新至最新版本

教学总结

  1. 关键知识点

    • 不安全的文件权限配置
    • 符号链接攻击
    • 日志注入
    • 利用系统恢复机制
  2. 防御建议

    • 严格控制程序数据文件的权限
    • 对日志写入进行完整性检查
    • 限制符号链接的创建和使用
    • 及时更新软件
  3. 研究价值

    • 展示了如何将看似有限的漏洞(任意文件写入)转化为完整攻击链
    • 强调了权限配置和输入验证的重要性

参考资源

  1. 原始漏洞报告
  2. PoC代码
  3. NVIDIA安全公告
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创建符号链接 利用步骤 : 数据控制漏洞 发现点 : C:\ProgramData\NVIDIA Corporation\NvStreamSrv\settings.txt 文件内容会被写入日志 用户可以修改此文件内容 注入方法 : 在settings.txt中注入恶意命令 切换GameStream服务状态触发日志写入 完整利用链 符号链接创建问题 : 目标目录必须为空才能创建符号链接 解决方案: 进入安全模式 结合DoS漏洞使服务崩溃释放文件锁 权限提升方法 : 替代方案 : 针对NVIDIA的恢复机制: 服务崩溃超过2次时会执行 C:\Windows 下的批处理文件 将批处理文件作为符号链接目标 漏洞修复 NVIDIA已在3.18及之后版本修复此漏洞 建议用户更新至最新版本 教学总结 关键知识点 : 不安全的文件权限配置 符号链接攻击 日志注入 利用系统恢复机制 防御建议 : 严格控制程序数据文件的权限 对日志写入进行完整性检查 限制符号链接的创建和使用 及时更新软件 研究价值 : 展示了如何将看似有限的漏洞(任意文件写入)转化为完整攻击链 强调了权限配置和输入验证的重要性 参考资源 原始漏洞报告 PoC代码 NVIDIA安全公告