Slashdot Mirror


GPU Malware Can Also Affect Windows PCs, Possibly Macs

itwbennett writes: A team of anonymous developers who recently created a Linux rootkit that runs on graphics cards has released a new proof-of-concept malware program that does the same on Windows. A Mac OS X implementation is also in the works. The problem the developers are trying to highlight lies not with the operating systems, such as Windows or Linux, nor with the GPU (graphics processor unit) vendors, but rather with existing security tools, which aren't designed to scan the random access memory used by GPUs for malware code.

49 comments

  1. using the OpenCL APIs is *noisy* by flowerp · · Score: 3, Informative

    I question why anyone would go that route for writing malware. When you start using the OpenCL APIs, your graphics cards will clock up and leave their low power states. The graphics card resource utilization (compute, memory transfers, memory usage) is shown by monitoring tools such as GPU-z and command line tools such as nvidia-smi. You can't hide anything on the GPU.

    --
    --- Eat my sig.
    1. Re:using the OpenCL APIs is *noisy* by Anonymous Coward · · Score: 5, Insightful

      They go that way because its there, obviously. Malware writers find the blindspot and that is a blindspot.

      If the malware writers don't find that then the NSA hackers will. Remember the hard disk flash is used by that NSA malware not the hard disk? That may in turn have had help from the hard disk vendors, by providing the NSA with the code for their hard disks:

      http://www.stuff.co.nz/technology/digital-living/66279485/NSA-hiding-Equation-spy-program-on-hard-drives

      Or that the NSA phone spyware that installs/runs itself in the modem chip of the mobile phone, not the computer of the mobile phone. That is easier because there are fewer modem makers than mobile phone makers. Qualcom LTE being common among many handsets.

      Or that spyware that runs inside the USB driver flash chip not the computer?

      If you don't notice the activity on your CPU why would you notice it on your GPU?

    2. Re:using the OpenCL APIs is *noisy* by Anonymous Coward · · Score: 0

      Last I checked, most games don't even utilize the GPU to any exhausting extent unless it came out in the past few years.

      Something so small could easily run on it and look like random spikes of use from the OS itself.
      We aren't running a videogame here. Just a simple ("simple") small program.

      It would probably go unnoticed on most peoples machines even if they listen for it.

    3. Re:using the OpenCL APIs is *noisy* by Anonymous Coward · · Score: 0

      Unless you have a dual GPU system, your gpu is working all the time (but not really hard). GPU temperature (and how fast your gpu fans spin) depends mainly on the load (just as in the CPU), so keep your code with low utilization (add a sleep() between opencl calls) and your temperature/noise problem is solved.

    4. Re:using the OpenCL APIs is *noisy* by Blaskowicz · · Score: 1

      There's many ways it could be quiet, in the audible way, at least on the desktop :
      - you use a fanless graphics card. duh!
      - your GPU is integrated into the CPU, and the combination is low power enough or a big enough heatsink and fans are installed
      - you got a low power midrange graphics card with a dual slot design and big enough heatsink and/or fan(s)
      - you messed with the fan profile, clocks, BIOS etc. to keep it quiet
      - certain high end cards are conservatively clocked to stay quiet (Quadro, Titan)

      On laptop :
      - you use a fanless laptop
      - most laptops are shit, but perhaps there exists a good one

      That's for stuff that would cause high utilization of the GPU.

    5. Re:using the OpenCL APIs is *noisy* by gstoddart · · Score: 3, Interesting

      Honestly, it's an attack vector.

      Assuming that a particular attack vector couldn't ever happen sounds rather shortsighted.

      What's more likely ... this takes more work, but people will do it because of the same reasons they always write malware? Or that they'll just throw up their hands?

      Because if there's money to be made, or fun to be had ... why the hell wouldn't they exploit anything they can?

      --
      Lost at C:>. Found at C.
    6. Re:using the OpenCL APIs is *noisy* by kiddygrinder · · Score: 1

      the amount of people who would be able to tell if they're gpu is being used if they're not using it is probably below half a percent. hell before this article i'd probably have chalked it up to some poorly coded program i'd installed on purpose or just dust buildup on the heat sink

      --
      This is a joke. I am joking. Joke joke joke.
    7. Re: using the OpenCL APIs is *noisy* by O('_')O_Bush · · Score: 1

      I sincerely doubt you could tell the difference between utilisation from malware and... say... the Windows Aero interface.

      --
      while(1) attack(People.Sandy);
    8. Re: using the OpenCL APIs is *noisy* by fuzzyfuzzyfungus · · Score: 1

      You might notice if someone is tacky enough to run a hash cracker on the target machine's GPU; but GPUs are ever so good at very, very, fast memory access without straining themselves much or bothering the CPU at all. The 'ooh, antivirus isn't scanning your VRAM!!!' issue is practically irrelevant compared to the fact that you've got a more or less flexibly programmable secondary processor that can, in most systems, do whatever the hell it wants to pretty much all the RAM.

      The only saving grace is that it's probably pretty easy to accidentally crash the system if you poke around too aggressively; but that's a weak defense.

    9. Re:using the OpenCL APIs is *noisy* by mlts · · Score: 1

      You may notice that, as well as most Slashdotters... but how many users actually know anything about performance baselines or know/care about that?

      Most users will just complain that their laptop's battery life is shorter and that their laptop runs hotter, maybe blaming the PC maker on the topic.

      You can't really hide GPU usage, but most users or AV software are not going to be looking at that subsystem. Think Life of Bryan and the Roman legions searching one house multiple times. They won't check what is holding up the lampshade.

    10. Re:using the OpenCL APIs is *noisy* by Anonymous Coward · · Score: 0

      If you can't see it in task manager most people won't know there's something running on the GPU.

      "Must be just Windows acting up again" or something and it is ignored mostly afterwards.

  2. Load of overhyped bullshit. by Anonymous Coward · · Score: 5, Informative

    The linux rootkit doesn't "run on GPUs".
    It allocates a buffer on the GPU and then stores strings in that buffer.
    So they've demonstrated that ... you can store data in RAM.
    Whoop-dee-fucking-doo.

    1. Re:Load of overhyped bullshit. by phantomfive · · Score: 1

      What......RAM is vulnerable too? I didn't realize!!

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Load of overhyped bullshit. by Anonymous Coward · · Score: 0

      Time to unplug those RAM sticks and burn them with fire!!11

  3. Good idea by Anonymous Coward · · Score: 1

    I think this is a solid idea and worth doing.

  4. You mischaracterize the problem. by Anonymous Coward · · Score: 0

    IT DOES rely on vendors making insecure devices.

    Most (if not all) GPUs do not use an IOMMU.

    Without an IOMMU to control the device, it can always scan the entire physical memory - and change things at any time. That is why USB devices can usually do the same thing. It is the SAME problem.

    1. Re:You mischaracterize the problem. by Anonymous Coward · · Score: 0

      IT DOES rely on vendors making insecure devices.

      Most (if not all) GPUs do not use an IOMMU.

      Without an IOMMU to control the device, it can always scan the entire physical memory - and change things at any time. That is why USB devices can usually do the same thing. It is the SAME problem.

      USB devices can't do that. Firewire and Thunderbolt devices can.

  5. Found the link by Anonymous Coward · · Score: 3, Informative

    The are lots of OSs in your computer that are hacked already. The wireless keyboard software or the wifi modem, or the ethernet card software running there. Even on an Apple HDMI *CABLE*, there was an ARM chip (doing re coding) that happens to be upgradeable, i.e. hackable by malware. The vendors leave the OS flashable since it might need a bug fix later, but in doing so they leave it exposed to malware.

    Apples HDMI cable is an ARM chip that can be 'upgraded':
    http://www.theverge.com/2013/3/1/4055758/why-does-apples-lightning-to-hdmi-adapter-have-an-arm-computer-inside

    Phone SIM Card OS hacked, yes the sim card even has an OS:
    http://www.extremetech.com/computing/161870-the-humble-sim-card-has-finally-been-hacked-billions-of-phones-at-risk-of-data-theft-premium-rate-scams

    The modem in the OS hacked:
    http://www.extremetech.com/computing/170874-the-secret-second-operating-system-that-could-make-every-mobile-phone-insecure

    1. Re:Found the link by Anonymous Coward · · Score: 0

      To add to the list:
      SD cards also have CPUs in them
      http://www.bunniestudios.com/blog/?p=3554

    2. Re:Found the link by Anonymous Coward · · Score: 0

      I think you have zero clue as to what an OS is.

      OS - Operating System. Like Windows, DOS, Linux, OSX.

      What is on your Sim card and in embedded chips is FIRMWARE that is a single program doing a single thing. No operating system at all in there.

    3. Re:Found the link by jedidiah · · Score: 1

      As soon as you acknowledge DOS an a proper OS then you've opened the door to pretty much anything.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    4. Re:Found the link by brainnolo · · Score: 2

      On a SIM Card you have a real OS, which runs several applications. One of these happens to be the USIM application which does the authentication to the network and handles the file system containing configuration files, primitive databases (SMS, Addressbook), etc. Applications can be native or Javacard based depending on the card. You can install new applications (or delete them) on the SIM card by SMS or IP-based connections if you have the needed keys. The mobile network operators do this to provide additional services to their clients. Heck they even have a sort of GUI Toolkit to build menus and simple dialogs. On most phones you can find the SIM Menu if you look for it to see some examples of this.

  6. Wrong path, anyone? by Anonymous Coward · · Score: 1

    While it is true that antivirus stuff currently tends not to peek at GPU address space; given the frankly shit job that AV managed with its current access to RAM and HDD, the implied "let Norton GPU 2015 protect you!" Message seems like it might eat a lot of expensive memory bandwidth for very little reward. How about CPU vendors(especially looking at you, Intel) stop pretending that an IOMMU is some kind of fancy enterprise feature, rather than virtually essential to not being caught with your pants down when basically every peripheral on the PCIe bus is a remarkably capable little computer in its own right and allowed to DMA its merry way all over your address space.

    1. Re:Wrong path, anyone? by Anonymous Coward · · Score: 0

      A virus scanner is not supposed to scan memory anyway. It is supposed to scan files and stop the attempt before the virus is even loaded.

      Also, the OS is supposed to guard hw, not allowing "just anything" to run on a GPU. That is why you have driver sw for the GPU.

  7. Question about this? by Anonymous Coward · · Score: 0

    Anyone know if you can possible prevent this from being exploited by turning off hardware acceleration in a browser? I think all browsers have GPU acceleration
    turned on by default in most cases. I can't remember where I had read a couple years ago that someone had said with the advent of the GPU becoming more then just a graphics processor that the potential existed for it to be used for an attack.

  8. Matrox is safe! by Lumpy · · Score: 0

    Wow, a complete fud story on this.

    nothing runs on the video card, they are string data there only.

    Shashdot now taking stories from WIRED?

    --
    Do not look at laser with remaining good eye.
  9. It is a GPU vendor issue by Anonymous Coward · · Score: 0

    If the graphics cards aren't flushing RAM on reboot, how is that not a problem?

  10. Mcafee by goarilla · · Score: 1

    I really don't want mcafee or norton scanning my GPU's ram and "quarantining" the (false) positives.

  11. Anti malware... by Anonymous Coward · · Score: 0

    Is a big joke... Those companies are rubbish..

    They should have written their software to scan all writeable memory, audit all hardware firmware long long ago

    1. Re:Anti malware... by AqD · · Score: 1

      It's not those companies are rubbish. They just scan what all existing malwares write to and what they write. As soon as GPU malwares become common, they'd start to scan it too. The entire tech their softwares based on is stupid (signature recognizance) and extremely easy to avoid (most malwares actually want to be found) and unfortunately there is little they can do to change it without seriously fucking up your PC.

      Auditing critical areas is far more useful in protecting your system, but mobile apps have shown to us that you can just steal everything important without elevation or hacking, or anything advanced at all.

  12. Sigh. by ledow · · Score: 4, Informative

    1) It's misleading. The code is not executing on the GPU, it's just stored there.

    2) It's obvious. If you're just storing code as data, it doesn't matter what OS you use to do that.

    3) It's blatant pandering to media. Two stories (at least) on this, no extra content besides the bleeding obvious.

    4) It's a symptom of stupidity. If your only safety comes from being able to scan RAM or storage devices and find a "signature" amongst them of a known virus, you're an idiot. It's a stupid, pointless waste of time and computing resources. That there's an area of RAM available that DOESN'T have live protection built into existing antivirus is not shocking at all. Hell, you could store string stuff in the TPM chip, or in the HPA of a hard drive, or in an onboard EEPROM or anywhere else that antivirus can't scan. They'll be unable to "certify" it as safe (as if they could anyway!) and will have to rely on somehow spotting the loader program before execution no matter what variant of it is used, or how the actual data payload is encrypted. (Hint: They can't. Antivirus is exclusively "after the horse has bolted" security.

    5) Really, Slashdot?

    1. Re:Sigh. by chihowa · · Score: 1

      WRT 4) It's not really a symptom of stupidity as much as a matter of limited choices. The OS can, and should, be hardened to prevent privilege escalation by malicious programs, but there's no universal and foolproof way to identify a user-run malicious program. A database of blacklisted known viruses isn't ideal, but it's not a bad approach. Especially if it's coupled with a whitelist of assumed benign programs (code signing). Without completely locking everything down and turning the general purpose computer into an appliance, how do you keep a user from running a program that fucks up their data?

      It's better described as "after somebody else's horse has bolted" security. That's a valid approach if your horse isn't the first to bolt.

      --
      If you want a vision of the future, imagine a youtube comments section scrolling - forever.
    2. Re:Sigh. by mlts · · Score: 1

      When cleaning PCs of malware, almost all of them have either perfectly functioning AV programs, or appear to do so. AV is useful on a legal eagle standpoint [1].

      As a usable tool of defense, I'd say that adblocking, blocking by IP address, using a hosts file, virtualization, and putting the web browser in a container/sandbox/VM will go far further in keeping malware at bay than any AV program. That, and not running randomly downloaded executables.

      We have had oddball places to store code since early on. In the early 1990s, System 6 and 7 would rely on a stub of code coming from a SCSI device as a driver, unless the code was furnished via an extension. One could easily hide code in there, which would be one of the first things loaded on an internal SCSI drive, and couldn't be bypassed. Just plugging the drive into another Mac would get the hard disk driver to load and run that code on the second Mac. That combined with WDEF or CDEF made for a nasty infection vector... just insert a floppy, and the machine was pwned. Thankfully nobody made a virus that infected the Mac hard disk driver (at best, there was code that would check if a program was running and hide the drive from the system, as with Highware's FileGuard, Kent-Marsh's NightWatch, or Kent-Marsh's Folderbolt.)

      [1]: Even on AIX LPARs, having McAfee run from two cron tasks... one to fetch definitions, the second to scan the filesystem, is good enough to check that "all computers have AV installed on them" box.

  13. thank you... by Anonymous Coward · · Score: 0

    Thank you, for making my pc so slow, and now, you want to slow down my graphics performance also, and at the same time, increase power usage of my pc, and noise of my graphics cards... Thank you very much... I hope you will die a horrible long and painful death.... Oh and f**k you slashdot, for only allowing me to post from my ip and only 2 posts a day with account...

  14. ...with no memory protection. by DrYak · · Score: 3, Interesting

    except that with big vendors like Nvidia, there is no memory protection (no good IOMMU support yet).

    So they've demonstrated that ... you can store data in RAM.
    Whoop-dee-fucking-doo.

    Except that, due to the above, that *RAM* happens to be accessible to anyone who might give a try.

    CPU:
    Imagine you have a software in which you are editing your *super secret* document.
    Imagine that there's a different software running in user space.
    That software can't access your document - there's a MMU on the CPU enforcing memory protection. A piece of software can't reach out to a memory block it doesn't have explicit access granted.

    GPU:
    Now imagine that the editor displays your document on the screen. It goes through the compositor onto a buffer on the graphic card (either GPU RAM, or RAM accessed by the GPU), before finally getting assembled for displaying on the screen (that's a normal behaviour).
    Now imagine you're also running a 3D game on the same computer. That game uses OpenCL to compute its physics. ...but...
    one of the shader run on the GPU is actually a trojan: instead of reading from some buffer used for the physics computation, it reads using a pointer to the location of CPU RAM where the display buffer of the first program is.
    It shouldn't be allowed to do so, but it does anyway. (e.g.: Nvidia's proprietary drivers) The request goes through and the game can siphon the output of the super secret editor. There's is (currently) nothing to enforce such memory protection and prevent one GPU shader to peek into buffers from another applications. Currently any shader running on the GPU can peek from any location it wants to.

    Nvidia and AMD need to properly implement support for IOMMU & the MMU inside the GPU itself.

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:...with no memory protection. by Anonymous Coward · · Score: 3, Informative

      except that with big vendors like Nvidia, there is no memory protection (no good IOMMU support yet).

      So then why not demonstrate that instead of "look mommy, I can store data in a buffer I own"?

      Currently any shader running on the GPU can peek from any location it wants to.

      Go ahead, try it. Hint: it won't work.

      Nvidia and AMD need to properly implement support for IOMMU & the MMU inside the GPU itself.

      They did. About 8 years ago.

    2. Re:...with no memory protection. by Anonymous Coward · · Score: 0

      Uh, there is memory protection. Read the paper. They are forced to use a kernel component to find the key input buffer and map that into the usermode process so that the GPU kernel initiated from that process has access to that buffer.

      Any GPU kernel only has access to the memory space of the process that initiated it.

    3. Re:...with no memory protection. by LoRdTAW · · Score: 1

      Nvidia and AMD need to properly implement support for IOMMU & the MMU inside the GPU itself.

      The IOMMU solved this by even giving each IO device its own virtual IO memory space. So no, the GPU can't randomly read protected memory. Nvidia and AMD don't have to implement anything as this is the job of the IOMMU, not the endpoint device itself.

      This was the same problem with the Firewire DMA exploit. Essentially before the IOMMU it was possible for any PCI card to randomly read any memory it wanted to. Firewire being a memory mapped serial bus, easily allowed DMA access to a running or crashed machine. It was used for Linux kernel debugging because even if the kernel crashed taking out the machine, the other I/O subsystems were still functional. You could still dump the contents of RAM to another PC to analyze what went wrong.

  15. NSA is *everywhere* by Anonymous Coward · · Score: 0

    Unless we go back to live in the cave, whatever we use has NSA's thumbprints all over

    The one thing that this world truly needs is to have a device (or two) that can defeat NSA's implants throughout our homes --- not necessarily have to destroy the implants, if that device can generate enough disruptions to the embedded implants that'll be good enough

    But then ... who are we kiddin'?

    Even devices from Huawei --- supposed to be a branch of the Chinese red army --- came complete with NSA bugs

    1. Re:NSA is *everywhere* by Anonymous Coward · · Score: 0

      Even devices from Huawei --- supposed to be a branch of the Chinese red army --- came complete with NSA bugs

      No, they were intercepted in shipment and then bugged. In some cases they may have also had a vulnerability (what off the shelf software doesn't have a vulnerability these days?) that allowed malicious code to be inserted.

    2. Re:NSA is *everywhere* by Anonymous Coward · · Score: 0

      Unless and until the NSA starts doing tangible damage to average citizens (i.e. makes the nightly news), I'll continue to not worry about them. They can snoop my data as much as they want, as long as they don't do anything with it.

    3. Re:NSA is *everywhere* by Anonymous Coward · · Score: 0

      I don't get your logic. "they can mine my data unless they try to use it against me" How would you stop the NSA from fucking your life over?

    4. Re:NSA is *everywhere* by PPH · · Score: 2

      How would you stop the NSA from fucking your life over?

      By not having a life.

      --
      Have gnu, will travel.
    5. Re:NSA is *everywhere* by Woeful+Countenance · · Score: 1

      Right. As long as they leave me alone and stick to harassing people like Martin Luther King, why should I care?

  16. No its an OS by Anonymous Coward · · Score: 2, Interesting

    No not at all. These are not dedicated devices, they're typically a stock processor, with an OS core that can load and update some software parts and those software parts do the function. In the case of the Sim card is a java machine used to provide services from the phone company to the phone.

    If you call it firmware does it make it better?

    These devices are programmable, have CPU and can be late programmed to change that firmware, in other words hacked to take over a computer.
    GPU for example has DMA access to the main processor memory giving it free range over a lot of the system.

    The update was how the NSA hacked the hard drivers, simply using the update facility to add their own software.
    That was how they hacked Dell Server BIOSs, intercepting the BIOS update and sending their own updates instead.
    For the modem they piggybacked their own software in the modem code.
    For the sim card it was an update sent from network to the provided services.

  17. IOMMU is still missing. by DrYak · · Score: 2

    The IOMMU solved this by even giving each IO device its own virtual IO memory space. So no, the GPU can't randomly read protected memory. Nvidia and AMD don't have to implement anything as this is the job of the IOMMU, not the endpoint device itself.

    ...except that their drivers don't use it. Yes, there's a IOMMU in modern CPU. No, current GPU drivers don't use it fully. (According to several source about this proof-of-concept neither Nvidia's nor AMD's drivers do properly use IOMMU to isolate de GPU. They basically just grant the device wholesale access to the memory).

    Also, at least modern GPU form Nvidia have a MMU on the graphic card (doing the same job, but from the perspective of the GFX card: prevents 2 shaders from 2 different 3D applications from reading each-others data).
    I've only read about this being used in GPGPU servers. I haven't heard about it being used in Nvidia OpenGL for games (maybe Nvidia has been just silent about that).

    This was the same problem with the Firewire DMA exploit. Essentially before the IOMMU it was possible for any PCI card to randomly read any memory it wanted to.

    Yes, and modern firewire drivers in linux correctly use iommus so only the necessary buffer is made available to the firewire controller.
    But currently, that's not yet the case with GPU driver. Binary drivers by AMD and Nvidia, as reported in several articles about GPU malware, do not use iommus to specifically map only that sub-part of the memory that the GPU must have access to.

    Though that could probably change in the future for AMD once their driver starts running above AMDGPU opensource kernel module. Somebody is bound to write proper support for that.

    Also a IOMMU is only a shield between the RAM managed by the CPU and the access of a PCI-express card to it. (e.g.: between a firewire forensic device and the Linux PC).
    A IOMMU doesn't have the slightest idea about what is happening outside, in the device it self.
    (e.g.: it will protect the Linux machine from a rogue Firewire dongle plugged into a firewire hub. It won't prevent the rogue dongle from siphonning information directly from a harddisk plugged in the same hub, nor from another Windows machine plugged in the same hub. Firewire is multimaster / peer-2-peer, all trafic isn't necessarily routed through the Linux machine.)

    Same with GPU :
    - a IOMMU can prevent a GPU reading a pieces of RAM that it wasn't granted access to. (it won't steal your password by directly reading the data of the keyboard driver).
    - a IOMMU doesn't have the slightest idea what is happening inside the card
    - thus a shader sent for execution from a trojan, could have a broken pointer reading from the pixel buffer inside the video ram of another unrelated application. (it might be able to take screenshot, by peeking into the texture memory of the desktop compositor inside the VideoRAM).
    That would require a MMU inside the GPU enforcing protection between the various pieces of shader code running on the GPU. modern GFX card do have them, but I've only read about them being used in the context of GPGPU servers.
    - as far as I know (I'm not an OpenGL expert), the language used for graphics shader (GLSL) doesn't provide a facility to do so.
    - but in my experience with GPGPU language (CUDA, and according to docs, the C subset provided by OpenCL) *do* have pointers (because that's how the hardware underneath works)
    - so a badly written compute shader could end up reading a wrong memory location. (or a malicious 3d application could voluntary corrupt the cached pre-compiled graphics shader).

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:IOMMU is still missing. by LoRdTAW · · Score: 1

      ...except that their drivers don't use it. Yes, there's a IOMMU in modern CPU. No, current GPU drivers don't use it fully. (According to several source about this proof-of-concept neither Nvidia's nor AMD's drivers do properly use IOMMU to isolate de GPU. They basically just grant the device wholesale access to the memory).

      I misunderstood you due to bad verbiage: "No, current GPU drivers don't use it fully." The driver has nothing to do with enabling the IOMMU.
      The IOMMU automatically maps a device into its own virtual address space. This prevents a random device from reading arbitrary memory outside of its virtual space. The kernel then uses a table provided by the IOMMU to figure out where things actually are in physical address space. BUT if a driver for that device allows it to read random memory locations, then there is a problem. I assume this stems from the newer GPGPU and HSA functionality which aims to reduce overhead by allowing the video card to read certain memory locations directly instead of copying.

      The driver does not have to enable the IOMMU, that is automatic. The driver lives in kernel space and from there can do what it damn well pleases in terms of reading/writing memory if the developer inserts such functionality. The driver isn't disabling the IOMMU or failing to enable it, it is allowing the malicious code to read arbitrary memory through vulnerabilities at the kernel level. This bypasses the IOMMU, not disables it. The only protection would be to better enforce memory access privileges in the kernel and/or remove the arbitrary memory access problem.

      A good analogy would be a quarantine facility with individual outer doors for each room, each of which is occupied by a single patient (a device). Patients can come and go as they please using their doors. But inside the facility, there is a hall which connects all of the rooms via a locked door for each room (IOMMU). Patients cant open that door but someone with a key can (the kernel). From the hall, a nurse can visit any patient(driver). But a patient can not leave the room through the locked door without that nurse. This isolates the patients from each other. *BUT* if the patient fools the nurse into allowing them into the hall, or the nurse allows them to wander out of the door, then all bets are off. That is what is happening here, the malicious code running on the GPU is fooling the nurse (driver) into leaving the room and wandering into another.

      The kernel is the weak spot of any OS. It marshals userspace code and prevents it from reading arbitrary memory and segments users. But once inside the kernel, code can do whatever the kernel allows which is pretty much anything. I can write a module that allows arbitrary memory access from userspace if I wanted.

  18. At The Conference Near You by Anonymous Coward · · Score: 0

    At the next supercomputing conference the GPGPU results are shown as-is, with ECC, and with anti-virus. Damn you Symantec for spilling all over my precious registers and texture cache!