Showing posts with label challanges. Show all posts
Showing posts with label challanges. Show all posts

Wednesday, June 01, 2011

USB Security Challenges


When we think about “USB Security” cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are lots of things that come to mind...

First cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physical attacks that could be conducted with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 help of USB devices. These are generally not so interesting, because if one includes physical attacks in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 threat model, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it really opens up lots of possibilities of various attacks, and generally a physical attacker always wins. Still, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are a few very cheap and easy physical attacks that one would like to avoid, or make harder, such as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attacks or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Cold Boot Attacks. Strictly speaking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are not problems inherent to USB itself, but racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with lack of Trusted Boot, or OS not cleaning properly secrets from memory upon shutdown. They are just made simple thanks to bootable USB sticks.

Much more interesting USB-related physical attacks are those that take advantage of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specifics of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB standard. One example here would be a malicious USB device that exposes intentionally malformed info about itself in order to exploit a potential flaw in a USB Host Controller driver that processes this info upon each new USB device connect. Or a malicious USB device that would trick cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS (Windows at least) into downloading a known buggy USB driver (or even an intentionally malicious driver, legally submitted to WHQL by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n exploit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 driver.

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r class of physical attacks made possible by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB specification are malicious USB devices that pretend to be a keyboard or mouse. The input devices, such as keyboard, are actually cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most security sensitive devices, because an attacker who controls cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keyboard can do everything cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user can do, which basically means: can do everything, at least with regards to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's data.

Finally, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 names stands, is a bus interconnect, which means all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB devices sharing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same USB controller are capable of sniffing and spoofing signals on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bus. This is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key differences between USB and PCI Express standards, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latter uses a peer-to-peer interconnect architecture.

Ok, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se all above were physical attacks. Let's now look at, much more fatal, software attacks.

The infamous class of attacks exploiting various autorun or auto-preview behaviors is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most known example, but also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 easiest, at least in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory, to protect against.

Much more interesting are software attacks that attempt to exploit potential flaws in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB stacks – similarly like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physical attacks mentioned above, just that this time not requiring any hardware-level modifications to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB device. Exposing a malformed partition table is a great example of such an attack. Even if we have all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 autorun mechanisms disabled, still, when we're inserting a storage medium cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS always attempts to parse cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 partition table in order to e.g. create devices symbolizing each partition/volume (e.g. /dev/sdbX devices).

Now, this is really a problematic attack, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malformed partition table can be written onto a fully legitimate USB stick by malware. Imagine e.g. you have two physically separated machines (air-gapped), belonging to two different security domains, and you want to transfer files from one to anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. You insert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB stick into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first machine, copy files, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n insert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second machine. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first machine was compromised, it could have altered cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 partition table on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB stick, and now when this stick is inserted into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r machine its malformed partition table might exploit a buffer overflow in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code used by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second OS to parse cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick's partition information. Air-gapped systems, huh? We avoid this attack vector in Qubes by using a special inter-domain file copy mechanism that doesn't require any metadata parsing.

A variation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above attack would be to expose a malicious file system metadata, but this time cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target OS would have to actually mount cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 partition for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack to work (and, of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re would have to be bugs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS file system parsing code, although cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se  seem to be quite common on most OSes).

Having quickly summarized cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB security-related threats, let's now think about how we could design an OS to mitigate most of those attacks, and at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software-based attacks. This is, in fact, precisely cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge we've been facing in Qubes, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 divagations below necessarily focus mostly on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes architecture.

First we should realize that USB devices, unlike PCI Express devices, cannot be independently delegated to different domains (VMs). This is because IOMMU technologies, such as Intel VT-d, operate only on PCIe device granularity. This means we can only delegate a whole USB controller to a domain, including all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB devices connected to this controller/hub.

Imagine now two internal devices, both connected via internal USB bus: a keyboard, and a 3G wireless modem. Chances are high that you will have those two devices connected to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same USB controller – usually one controller is used for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 internal devices, like those I just mentioned, plus camera, fingerprint reader, etc, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r controller is used for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 externally visible USB connectors (at least this is true for modern systems: Intel Series 5 chipsets and newer).

We would like to be able to delegate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 3G modem to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NetVM (an untrusted domain on Qubes where all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 networking drivers and stacks are kept; it's considered untrusted because its compromise is equivalent to a compromise of a WiFi network or home router, or some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r router, and any reasonable person always assumes that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network is compromised, and deals with that using crypto, such as SSL or SSH). But assigning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB controller, to which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 3G modem is connected to, to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NetVM, would also assign cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB keyboard to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NetVM! And this is precisely what we don't want to do, because control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keyboard is equivalent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole system!

Currently, in Qubes Beta 1, we keep all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB controllers assigned to Dom0. This, however, causes two annoyances:

First, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user cannot use any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB-connected networking devices, such as 3G modems (because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no networking in Dom0).

Second, if somebody connects a USB disk and later delegates it to some domain (this could easily be done via block-attach mechanism, supported by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same backend that handles storage virtualization for domains), and this domain turns out to be compromised, it might alter e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick's partition table and later attack Dom0 as explained above.

We can eliminate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second problem by modifying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Dom0's kernel to not parse cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 partition table of any removable devices automatically, and instead expect some kind of explicit consent from user to actually do that (we still must allow to mount USB disks in Dom0 to allow easy backups of all domains at once).

To allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of USB-connected networking devices in NetVM, we could use a PVUSB backend that can virtualize single USB devices without moving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole USB controller to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domain. But that would require introducing a whole lot of new code to Dom0 – code that would be directly reachable from VMs (in ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words that would be processing lots of untrusted input coming from untrusted domains).

So anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r option is to delegate all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 non-security-critical USB controllers, i.e. those controllers that don't have any security-sensitive USB devices connected, such as keyboard, to a dedicated “USB” domain, and later share cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB devices via PVUSB backend from this USB domain. This time, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extra PVUSB backend runs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB domain, not in Dom0, so we don't worry that much about potential bugs in this backend. Of course, this way you cannot delegate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB controller to which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keyboard, and potentially also ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r security-critical devices, such as camera, are connected to, which in practice rules out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 integrated3G modem. Fortunately many modern laptops do not use USB-connected keyboard and touchpad (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y use PS/2-connected keyboards instead), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 face camera can be easily disabled with a piece of sticker (although that sucks, because it means we cannot really use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 camera).

With this approach (a dedicated USB domain) you can now delegate your 3G modem to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NetVM, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r USB devices, such as removable disks to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r domains, e.g. for file exchange. This seems cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most reasonable setup, although it requires that eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r 1) your laptop doesn't have USB-connected keyboard, or 2) you don't use internal USB devices connected to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same controller that your USB keyboard/touchpad from ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r domains than Dom0 (in practice: no 3G modem in NetVM).

As we can see proper handling of USB devices is quite a challenge for OS architects. It might have been much less of a challenge if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 engineers designing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB, chipsets, and mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rboards were a bit more security-conscious. Even such simple practice as never mixing security critical devices (keyboard, touchpad, camera, fingerprint reader), with non-security ones (3G modem), onto cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same USB controller, would help tremendously. Or ability to somehow dynamically configure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir connectivity, e.g. in BIOS?