Are GPUs vulnerable to spectre/meltdown attacks, since they have most of what makes CPUs attackable? Is there any information in the VRAM, that would cause trouble if it was stolen?
First of all you would not normally expect kernel memory to be mapped in a GPU. Even if you did modern GPU's generally don't have much in the way of support for sharing memory between processes.
There have certainly been research papers on speculative execution inside of a GPU - Speculative Execution on GPU: An Exploratory Study; Liu, Eisenbeis, Gaudiot - but I don't believe it is actively done at a hardware level by any existing devices.
So whilst theoretically there is nothing to stop you building a GPU/OS setup that may allow it I doubt this is possible on any existing products.
A GPU (Graphical Processing Unit) is not vulnerable to spectre/meltdown attacks.
This is due to various reasons:
- A GPU is a completely differently designed processor.
- It does not run privileged code (e.g. kernel code).
- It does not run the OS.
- It is optimized for Vector calculations.
- Its micro code is build completely differently.
- It (most often) does not have protection for privileged code (like the execution rings on a CPU).
- It does not have access to the CPU's registers (directly), it does have DMA (Direct Memory Access) but so do a lot of other devices.
- There is only limited research on this done by security experts, so no one is sure if it's not vulnerable.
- As for having the same parts, those parts are either shared between many devices or nowhere similar in design. a GPU's memory or example is differently mapped than a CPU's memory (although they share an electrical standard).
- The DMA access should be limited to the current execution level, since the Graphics card is normally controlled by the Kernel, no user level application can directly access it. Or send code to it. (Drivers exist to facilitate user level access and to limit what they can do. As to maximize the usable features. And not blow the card up (by setting illegal settings for example).
- Code that can run on the GPU is highly limited in what it can execute (instruction set is limited) DMA is for example only allowed indirectly (first load it into the Graphics cards memory than access is granted and visa versa).
tldr; GPUs are not CPUs and are not designed to be multi-user / application. They have some protection against abuse but most of this is not yet tested by security experts.
Nvidia has released updates today dealing with the issues. So I would assume there are risks since they have created updates.
Table 2.1 Security Updates for NVIDIA Software Vulnerabilities CVE ID NVIDIA Issue Number Description CVE-2017-5753 1975134 Computer systems with microprocessors utilizing speculative execution and branch prediction may allow unauthorized disclosure of information to an attacker with local user access via a side-channel analysis. For more information on this issue, see the NVIDIA GPU security updates for speculative side channel Security Bulletin posted on the NVIDIA Product Security page
And specifically mentions GeForce in the aforementioned post http://nvidia.custhelp.com/app/answers/detail/a_id/4611
Affected Products Product | OS GeForce, Quadro, NVS | Windows, Linux, FreeBSD, Solaris Tesla | Windows, Linux
Fundamentally Meltdown and Spectre are side channel attacks which exploit the weaknesses of unprivileged and privileged processes sharing the same resources, the availability of resources being unprotected information, and where the unprivileged side can trick the privileged side into consuming resources in a way that depends on a secret, even though and because the request is ultimately canceled or rejected. The GPU certainly shares resources and unprivileged processes can run code there. If that code can detect resource conflicts and request data it's not supposed to (and won't) receive, I wouldn't rule out the possibility of similar attacks involving the GPU.