Posts in Kudos, Opinions and Rants
Page Content
Using Virtual Machines to Defend Against Security and Trust Failures
According to the National Vulnerability Database (http://nvd.nist.gov), the number of vulnerabilities found every year increases: 1253 in 2003, 2343 in 2004, and 4734 in 2005. We take security risks not only by choosing a specific operating system, but also by installing applications and services. We take risks by browsing the web, because web sites insist on running code on our systems: JavaScript, Flash (ActionScript), Java, ActiveX, VBscript, QuickTime, and all the plug-ins and browser extensions imaginable. Applications we pay for want to probe the network to make sure there isn't another copy running on another computer, creating a vector by which malicious replies could attack us.
Games refuse to install in unprivileged accounts, so they can run their own integrity checkers with spyware qualities with full privileges (e.g., WoW, but others do the same, e.g., Lineage II), that in turn can even deny you the capability to terminate (kill) the game if it hangs (e.g., Lineage II). This is done supposedly to prevent cheating, but allows the game companies full access and control of your machine, which is objectionable. On top of that those games are networked applications, meaning that any vulnerability in them could result in a complete (i.e., root, LocalSystem) compromise.
It is common knowledge that if a worm like MyTob compromises your system, you need to wipe the drive and reinstall everything. This is in part because these worms are so hard to remove, as they attack security software and will prevent firewalls and virus scanners from functioning properly. However there is also a trust issue -- a rootkit could have been installed, so you can't trust that computer anymore. So, if you do any sensitive work or are just afraid of losing your work in progress, you need a dedicated gaming or internet PC. Or do you?
Company VMWare offers on their web site the free download of VMWare player, as well as a "browser appliance" based on Firefox and Ubuntu Linux. The advantages are that you don't need to install and *trust* Firefox. Moreover, you don't need to trust Internet Explorer or any other browser anymore. If a worm compromises Firefox, or malicious JavaScripts change settings and take control of Firefox, you may simply trash the browser appliance and download a new copy. I can't overemphasize how much less work this is compared to reinstalling Windows XP for the nth time, possibly having to call the license validation phone line, and frantically trying to find a recent backup that works and isn't infected too. As long as VMWare player can contain the infection, your installation is preserved. Also hosted on the VMWare site are various community-created images allowing you to test various software at essentially no risk, and no configuration work!
After experiencing this, I am left to wonder, why aren't all applications like a VMWare "appliance" image, and the operating system like VMWare player? They should be. Efforts to engineer software security have obviously failed to contain the growth of vulnerabilities and security problems. Applying the same solutions the same problems will keep resulting in failures. I'm not giving up on secure programming and secure software engineering, as I can see promising languages, development methods and technologies appearing, but at the same time I can't trust my personal computers, and I need to compartmentalize by buying separate machines. This is expensive and inconvenient. Virtual machines provide us with an alternative. In the past, storing entire images of operating systems for each application was unthinkable. Nowadays, storage is so cheap and abundant that the size of "appliance" images is no longer an issue. It is time to virtualize the entire machine; all I now require from the base operating system is to manage a file system and be able to launch VMWare player, with at least a browser appliance to bootstrap... Well, not quite. Isolated appliances are not so useful; I want to be able to transfer documents from appliance to appliance. This is easily accomplished with a USB memory stick, or perhaps a virtual drive that I can mount when needed. This shared storage could become a new propagation vector for viruses, but it would be very limited in scope.
Virtual machine appliances, anyone?
Note (March13, 2006): Virtual machines can't defend against cross-site scripting vulnerabilities (XSS), so they are not a solution for all security problems.
Didn’t we learn anything from WarGames?
My s.o. and I watched WarGames last night, and I enjoyed it not only for the kitschy nostalgia of an 8-inch floppy disk, but for some of the lessons of good information security practices that we still have trouble remembering:
- Don't write down your password. Matthew Broderick's character is able to break into his high school's computer system and alter his grades because he reads the password off the secretary's desk every couple weeks.
- Don't make high-security systems publicly accessible. The W.O.P.R. computer (wasn't that a great name?) that controls the launch of the US nuclear arsenal is accessed over a public phone line. Firewalls, anyone? Bueller?
It does seem like folks are generally getting a lot better with #2, but #1 seems to be a tougher nut to crack. It's understandable, because it's much more of a human behavior issue, but sometimes you just wonder, have we learned nothing in 20 years? :)
Managing Web Browser risks with the NoScript extension
It is very risky to enable all client-side scripting technologies when browsing the web (plugins/ActiveX/ JavaScript/Flash etc...). I installed the "NoScript" extension for Firefox, which allows JavaScript to run only on some whitelisted sites. It is a wonderful idea, except that it comes with a list of pre-enabled sites with some that you can't delete (the arrogance of dictating unerasable sites!), and the defaults are to not block Flash and other plugins. Moreover, it's only as secure as DNS, unless you require the "full addresses" option through which I presume you could require an https (SSL) url. Unfortunately there is no way to enable "base 2nd level domains" *and* require SSL, to say for example that I want to trust all *.purdue.edu sites that I contact through SSL and that have valid SSL certificates. It is better than nothing, but needs SSL support to be really useful. Most people don't understand the limitations and vulnerabilities of DNS, and the need for SSL, and will therefore have an unwarranted feeling of security while using this plugin.


