David said:
According to Bruce Schneier, a well known security expert, they can
https://www.schneier.com/blog/archives/2006/06/hacking_compute.html
Regards, Dave Hodgins
That is Autoruns, and not DMA.
Someone engineered Firewire, on purpose, to do RDMA (remote direct
memory access). I've never heard of such a feature with USB, and
it's unlikely to be present because USB is a host-peripheral
protocol and not a peer to peer protocol like Firewire is.
They make Firewire networking gear, which takes advantage
of the peer to peer capabilities.
(See Security Issues at the bottom of this, for a description...)
http://en.wikipedia.org/wiki/IEEE_1394
*******
Schneier is mentioning the presence of an autorun.inf file on
a USB stick, being used like we used to use autorun.inf on
installer CDs. An installer CD, when you inserted it, the
installer program would start to run and you'd see an
installer program appear magically on your screen. That
feature can be turned off, so that no inserted device can
work.
In fact, there are three levels of autoruns.
1) Autorun disabled on everything. Requires damaging
something so that it won't run. Not really a problem for
a user, as you can manually run "setup.exe" on an installer
CD, if you really need to install something. This automation
is really a crock.
2) The Microsoft recipe, is disable Autorun on USB flash, but
leave it enabled on CD. This notion makes me nervous,
in terms of attack surface. My system is set this way
currently. And I did that just recently, after someone
got Sality malware, and I started reading up on it.
Some USB keys have a CD-like storage section, so this
policy is a bit on the weak side. I think perhaps U3 sticks
can have two storage areas effectively inside. I never
buy anything with U3 branding on it...
3) With no modifications, both your USB flash stick and
your inserted CDs, could be using autorun.inf.
So for someone who takes this attack notion seriously (i.e.
that the CD path could be used), then (1) is the answer.
I did (2) because it was easy to do, and no side effects.
*******
USB is a *polled* protocol, where the polling is
done from the host side. You can't "jam something up
the spout" from the peripheral side, and expect anything
to happen. That means the driver instigates
a poll, and also prepares storage space for a returning
answer. It means the driver is in control of things,
in terms of DMA attack possibilities.
The BadUSB idea, seeks to trick the driver discovery
code, into making an endpoint for something like
a HID that should not be there.
Host
|
---------------------
|
(Bugged Peripheral)
|
Composite Device
| | |
Video Audio HID
In that example, perhaps the HID is not supposed to be
there. But by filling in the config details, the device
could be re-programmed such that the HID connection was
made. The automatic response of the OS, is to set up
the HID as another keyboard or mouse or whatever.
The user might not be watching what is going on.
The OS was not designed to check for inconsistent
sets of hardware, like a USB webcam with a keyboard
apparently inside it.
Paul