Nvidia GeForce Experience Node.js security vulnerability
Sec Consult security researchers discovered a vulnerability in Nvidia's GeForce Experience software that allows attackers to bypass Windows application whitelisting.
Nvidia's GeForce Experience is a program that Nvidia installs by default in its driver packages. The program, initially designed to provide users with good configurations for computer games so that they run better on user systems, has been blown up since then by Nvidia.
The software checks for driver updates now, and may install those, and it enforces registration before its other functionality becomes available.
What's interesting about it is that it is not needed for making use of the graphics card, and that the video card works equally fine without it.
Nvidia GeForce Experience installs a node.js server on the system when it is installed. The file is not called node.js, but NVIDIA Web Helper.exe, and it is located under %ProgramFiles(x86)%\NVIDIA Corporation\NvNode\ by default.
Nvidia renamed Node.js to NVIDIA Web Helper.exe and signed it. What this means is that Node.js is installed on the majority of systems with Nvidia graphics cards, considering that drivers are installed automatically and not using the custom install option.
Whitelisting allows administrators to define programs and processes that may run on an operating system. Microsoft AppLocker is a popular whitelisting solution to improve security on Windows PCs.
Administrators may improve security further by using signatures to enforce code and script integrity. The latter is supported by Windows 10 and windows Server 2016 with Microsoft Device Guard for instance.
The security researchers found two possibilities to exploit Nvidia's NVIDIA Web Helper.exe application:
- Use Node.js directly to interact with Windows APIs.
- Load executable code "into the node.js process" to run malicious code.
Since the process is signed, it will bypass any reputation-based checks by default.
From attacker perspective, this opens two possibilities. Either use node.js to directly interact with the Windows API (e.g. to disable application whitelisting or reflectively load an executable into the node.js process to run the malicious binary on behalf of the signed process) or to write the complete malware with node.js. Both options have the advantage, that the running process is signed and therefore bypasses anti-virus systems (reputation-based algorithms) per default.
How to resolve the issue
Probably the best option right now is to uninstall the Nvidia GeForce Experience client from the operating system.
First thing you may want to do is make sure that a system is vulnerable. Open the folder %ProgramFiles(x86)%\NVIDIA Corporation\ on the Windows PC and check if the directory NvNode exists.
If it does, open the directory. Find the file Nvidia Web Helper.exe in the directory.
Right-click on the file afterwards, and select properties. When the properties window opens, switch to details. There you should see the original file name and product name.
Once you have established that a Node.js server is indeed on the machine, it is time to remove it provided that Nvidia GeForce Experience is not required.
- You may use the Control Panel > Uninstall a Program applet for that, or if you use Windows 10 Settings > Apps > Apps & features.
- Either way, Nvidia GeForce Experience is listed as a separate program installed on the system.
- Uninstall the Nvidia GeForce Experience program from your system.
If you check the program folder afterwards again, you will notice that the entire NvNode folder is no longer on the system.