When was the last time you reverse-engineered all the PCI devices on your motherboard?. . . Enters the game-changer: IOMMU (known as VT-d on Intel). With proper OS/VMM design, this technology can address the very problem of most of the hardware backdoors. A good example of a practical system that allows for that is Xen 3.3, which supports VT-d and allows you to move drivers into a separate, unprivileged driver domain(s). This way each PCI device can be limited to DMA only to the memory region occupied by its own driver.
On most PC-systems graphics card and for example your NIC also have firmware that loads during startup. The main BIOS does that before it loads the OS.
So that also needs to be disabled or adopted to only allow access to certain parts of the system. Which means you’ll need an open source BIOS.
I’m pretty sure at that stage using IOMMU/VT-d wouldn’t work.
So you would need to have your own implementation of the graphics card BIOS. The NIC can handled later by the OS I would think.
Anyway good luck getting an open BIOS for your graphics card 🙁
So there is probably only one solution for that: the open graphics project ?
They still seem to be at Phase I of their project.
The other solution is startup without graphics ofcourse…
you are right, but to deal with this people can (and do) just dump their bios to a file and use that. but this field is totally new and underdeveloped and underdocumented and undertested, so you have to be a hacker to deal with it. but there it is.
it is wonderful that the software and hardware exist now to run linux, passthrough your graphics card to windows, and play virtualized games at full speed. the bad part is nobody normal is allowed to do it. domain of the nerds and all.
I’ve been thinking some more about this and how does the “secure boot” UEFI deal with the graphics card firmware ?
I guess it uses some higher level interface ? Not the legacy one that needs a VGA-console.
So I was actually wrong.
I see that Linux 3.3 now also supports starting from EFI directly.
I checked, the firmware that needs to be loaded of the devices like NIC and graphics card are signed just like the OS with different private/public keypairs.
Link to a 3 years old article?!?
Sorry. Read it on HN today and found it interesting.
Hacker News?
I had never heard about this website, thanks for mentionning it.
do you know how to get the hacker news rss feed to go to directly to the hacker news page, like how reddit’s rss feed works? when i click on a hacker news article in my feed reader it goes directly to the linked page instead of the hacker news page with comments.
The article is still as relevant today as it was then. I thought it was a great read. Thanks for this.
It is interesting article.
Another interesting “fact” I’ve heard is that in many cases the IO-MMU was disabled because it was buggy.
I don’t know if this is still the case now, but that’s interesting, no?
Even if the CPU has an IO-MMU doesn’t mean that it is used..
Hardware security from backdoors has been a concern of mine for some time because if you travel to China (as every businessperson learns) you will find that your items are not secure. Many business travellers find malware planted on their machines and foreign companies often have very strict policies employees must follow to avoid loss of IP.
I’d like to buy a Lenovo laptop running Linux sometime but given this background….
Thanks for the link because my guess is there might come a time when suddenly everyone gets very interested in this topic.
Your best bet to get a laptop using CoreBoot to avoid the BIOS backdoors would be with begging the Linux only laptop companies like Zareason and System76. They would be the most likely to actually build specifically for maximum compatibility.
There are only very few laptops supported:
http://www.coreboot.org/Laptop
Your items are not secure anywhere, drop the silly China-bashing.
(me, I’d like to buy Intel or AMD based laptop, or any tech from UKUSA, but given such precedences… (pdf warning) “EUROPEAN PARLIAMENT […] REPORT on the existence of a global system for the interception of private and commercial communications (ECHELON interception system)” http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//NONSGML… )
Edited 2012-03-09 23:31 UTC
is the next big thing to hardware. It makes the uKernel designs easier and virtualization also is neater. I am eager to buy a motherboard+cpu with IOMMU. It seems expensive though. Hopefully we will se an Atom with IOMMU but it seems that they keep it for more expensive products. Personally I believe that IOMMU must become the norm (virtualization extensions come second).
I’m not sure if IOMMUs represent that big of a defense against hardware backdoors. Here is why :
Let’s say that I buy a laptop from a shady vendor. Like with any laptop, the hardware inside of it is pretty much a perfect black box to me. What makes me sure that all hardware on my motherboard will be connected to the memory bus through an IOMMU ? What prevents the laptop manufacturer (or someone else in the manufacturing chain) from just putting a “spy chip” directly on the memory bus, invisible to the OS ?
Now, I’m not saying that IOMMUs are useless for security. When using insecure external interfaces that let any peripheral access all physical memory, such as Firewire or Thunderbolt*, IOMMUs can prevent a simplistic and hot-pluggable “pen drive” from completely busting OS security. If you can trust your computer, then IOMMUs allow you not to trust what you plug in it, which is already something.
Also, security aside, IOMMUs are a great tool for virtualization.
* As far as I know, USB has no such vulnerability. Operating systems should, however, make sure that USB packets coming from devices are standard-compliant if they want to avoid the PS3’s tragic fate (more details here : http://www.scribd.com/doc/51635014/BlackHat-DC-2011-Larimer-Vulnera… )
Edited 2012-03-04 09:12 UTC