2021-06-07 07:40:43
GeForce Experience(GFE)的命令注入漏洞(CVE-2019-5678)是版本号小于3.19的GFE中存在的远程代码执行漏洞,攻击者可利用该漏洞通过诱导用户交互实现主机控制。以下是具体分析:
漏洞背景与影响本地API服务器设计缺陷:
GFE启动时会开启一个基于NodeJS Express框架的本地API服务器,路径为C:Program Files (x86)NVIDIA CorporationNvNode,源文件存储于该目录。
服务器通过HTTP标头中的随机token验证请求合法性,token存储于%LOCALAPPDATA%NVIDIA CorporationNvNodenodejs.json中,文件路径和名称静态不变。
CORS策略错误配置:
服务器在index.js:185中将Access-Control-Allow-Origin标头设置为*,允许所有域名发起跨域请求。
攻击者可利用此配置,通过XHR请求发送自定义标头,结合泄露的token值构造恶意请求。

命令注入点:
在NvAutoDownload.js中,函数处理/gfeupdate/autoGFEInstall/端点的POST请求时,将请求内容直接插入req.text并通过childproc函数执行,未对输入进行过滤或验证。
攻击者可通过修改POST请求内容(如calc.exe)触发命令执行。

诱导用户上传token文件:
攻击者构造恶意网页,利用浏览器特性(如Chrome的CTRL+V+Enter组合键)将静态路径%LOCALAPPDATA%NVIDIA CorporationNvNodenodejs.json复制到剪贴板,并自动触发文件上传窗口。
用户按下组合键后,文件被上传至攻击者服务器,token值泄露。
构造恶意请求:
攻击者将窃取的token值嵌入XHR请求标头,向/gfeupdate/autoGFEInstall/端点发送POST请求,请求内容为待执行的命令(如恶意脚本路径)。

执行任意命令:
GFE服务器接收请求后,直接执行攻击者指定的命令,导致主机被完全控制。
升级GFE版本:
NVIDIA已在3.19及以上版本中修复此漏洞,修复方式为删除存在命令注入的API端点。
建议:用户立即升级至最新版本,并卸载不再使用的旧版GFE。
临时缓解措施:
若无法升级,可通过以下方式降低风险:
限制GFE本地API服务器的网络访问权限,禁止外部连接。
修改nodejs.json文件路径或权限,防止未授权访问。
长期安全建议:
NVIDIA未修复CORS策略错误配置和token文件静态存储问题,用户仍需保持警惕。
建议:避免访问不可信网站,关闭浏览器自动执行脚本功能(如禁用JavaScript)。
参考链接: