GeForce Experience OS 命令注入

GeForce Experience OS 命令注入
最新回答
辣条大婶

2021-06-07 07:40:43

GeForce Experience(GFE)的命令注入漏洞(CVE-2019-5678)是版本号小于3.19的GFE中存在的远程代码执行漏洞,攻击者可利用该漏洞通过诱导用户交互实现主机控制。以下是具体分析:

漏洞背景与影响
  • 漏洞概述:该漏洞存在于GFE的本地服务“Web Helper”中,攻击者可通过构造恶意请求触发命令注入,执行任意系统命令。
  • 影响范围:所有版本号小于3.19的GFE均受影响,用户仅需访问攻击者控制的网站并执行少量键盘操作(如点击按钮),即可导致主机被控制。
  • 漏洞编号:CVE-2019-5678。
漏洞成因
  1. 本地API服务器设计缺陷

    GFE启动时会开启一个基于NodeJS Express框架的本地API服务器,路径为C:Program Files (x86)NVIDIA CorporationNvNode,源文件存储于该目录。

    服务器通过HTTP标头中的随机token验证请求合法性,token存储于%LOCALAPPDATA%NVIDIA CorporationNvNodenodejs.json中,文件路径和名称静态不变。

  2. CORS策略错误配置

    服务器在index.js:185中将Access-Control-Allow-Origin标头设置为*,允许所有域名发起跨域请求。

    攻击者可利用此配置,通过XHR请求发送自定义标头,结合泄露的token值构造恶意请求。

  3. 命令注入点

    在NvAutoDownload.js中,函数处理/gfeupdate/autoGFEInstall/端点的POST请求时,将请求内容直接插入req.text并通过childproc函数执行,未对输入进行过滤或验证。

    攻击者可通过修改POST请求内容(如calc.exe)触发命令执行。

攻击步骤
  1. 诱导用户上传token文件

    攻击者构造恶意网页,利用浏览器特性(如Chrome的CTRL+V+Enter组合键)将静态路径%LOCALAPPDATA%NVIDIA CorporationNvNodenodejs.json复制到剪贴板,并自动触发文件上传窗口。

    用户按下组合键后,文件被上传至攻击者服务器,token值泄露。

  2. 构造恶意请求

    攻击者将窃取的token值嵌入XHR请求标头,向/gfeupdate/autoGFEInstall/端点发送POST请求,请求内容为待执行的命令(如恶意脚本路径)。

  3. 执行任意命令

    GFE服务器接收请求后,直接执行攻击者指定的命令,导致主机被完全控制。

修复与防范措施
  1. 升级GFE版本

    NVIDIA已在3.19及以上版本中修复此漏洞,修复方式为删除存在命令注入的API端点。

    建议:用户立即升级至最新版本,并卸载不再使用的旧版GFE。

  2. 临时缓解措施

    若无法升级,可通过以下方式降低风险:

    限制GFE本地API服务器的网络访问权限,禁止外部连接。

    修改nodejs.json文件路径或权限,防止未授权访问。

  3. 长期安全建议

    NVIDIA未修复CORS策略错误配置和token文件静态存储问题,用户仍需保持警惕。

    建议:避免访问不可信网站,关闭浏览器自动执行脚本功能(如禁用JavaScript)。

漏洞总结
  • 用户交互需求低:攻击仅需用户执行少量键盘操作(如点击按钮),欺骗成本极低。
  • 漏洞利用链完整:结合CORS配置错误、token泄露和命令注入点,形成完整的攻击链。
  • 修复不彻底:NVIDIA仅删除危险端点,未解决根本问题,用户仍需依赖版本升级和主动防范。

参考链接

  • 原文漏洞分析
  • 概念验证代码(GitHub)