Software [In]security: Modern Malware
The problem of malware (shorthand for malicious software) has been growing like a teenager for the sixteen years I have been working in computer security. Today, the information systems that we depend on to make the world run are more interconnected than ever, with dependancies that are difficult to fathom. At the same time, software complexity, including the notion of extensibility designed into virtual machines like the Java Virtual Machine (JVM), leads to serious and widespread software vulnerability that lies at the root of the malware problem. It's no wonder that malware is a bigger problem every year.
So, where does modern malware stand and what are we going to do about it?
Ancient History
I got my start in computer security thinking about Java. When Java came out in 1995, the notion of Web-based software (and mobile code) was born. Though Java was supposedly designed to make running small Web applications (called applets) possible by ensuring security, the JVM was subject to all of the usual software problems and was riddled with both bugs and flaws. Java vulnerabilities exposed what many grey beards in computer security already understood — dependency on broken software was putting the modern world at risk. Eventually, my thinking about the causes of the Java security problem (that is, slipshod engineering) led me into software security where I have been working ever since.
Around the same time that Java security problems were coming to light, Microsoft found itself at the wrong end of the malware problem. Their complicated mess of an operating system gained Internet connectivity in the mid-'90s, exposing a gigantic pile of bugs and flaws to attackers bent on causing problems. At the time, exploiting these problems was mostly a game for virtual thrill seekers.
Code Red and NIMDA served as a wake-up call to Microsoft and helped to coalesce software security efforts in Redmond into the now-famous Trustworthy Computing Initiative. Today, Microsoft's much improved software security situation has caused attacks to shift to other unfortunate victims of broken software, most notably Adobe.
In 2000, Greg Morrisett and I published a paper called "Attacking Malicious Code: A Report to the Infosec Research Council" in IEEE Software. In that paper, we identified the Trinity of Trouble — connectivity, complexity and extensibility — as a set of major trends driving the malware problem. Eleven years later, connectivity is now ubiquitous for all software, software complexity is exacerbated by complicated middleware Frameworks such as J2EE that make building huge barely-working and incomprehensible systems easier than ever, and extensibility is something found in all modern software. As long as these trends continue unabated, the malware problem will be with us.
In the old days malware was built mostly by nefarious security experts to demonstrate vulnerability and burnish the reputation of the person who was outing the problem. (Well, either that or pimply-faced teenagers on a virtual joy ride.) These days, malware is written by cyber spies and criminals, financial gain is the driver, and the stakes are far more serious.
Modern Malware
The current malware situation is worse than ever. New high water marks in heinousity are set every year, with stuxnet well up the beach past the high tide mark.
A majority of discussions about malicious software, including Dasient's interesting new study, focus on Web malware, and there is good reason for this: Web-based software applications are an easy target (and have been since the Java days in 1995). The problem of "drive by downloads" directly leading to a set of attacks known as advanced persistent threats (APT) is growing at an astonishing rate with over one million web sites estimated to be infected in Q4 2010. (That's twice as many as in Q4 2009 for those of you counting.) The problem of what I like to call "bad ads" (known is some circles as malvertising) is also growing fast, doubling every quarter instead of every year.
The APT known as Zeus is an excellent example of modern Web-bourne malware. The Zeus Trojan takes control of a victim's Web browser and is then in a perfect position to carry out "attacker in the middle" attacks. Financial services firms bear the brunt of Zeus attacks when their legitimate users fall victim. The Zeus Trojan excels at finding, misusing, and exporting legitimate authentication credentials. Banks have a hard time determining whether their servers are dealing with a legitimate customer or a piece of malware masquerading as a legetimate customer.
Malware is by no means restricted to the Web. Any widespread piece of software in common use can and will become a target. Over the last couple of years, Adobe software has been particularly hard hit. Like Microsoft ten years ago, Adobe is doing what it can to improve its software security stance.
Then there is stuxnet, a piece of malware aimed not at commonly found consumer software like a Web browser or Adobe Flash, but rather at rarified control software of the sort found in nuclear power plants and particle accelerators. Malware has worked its way well past the front lines and into the vulnerable heart of the modern world.
Temporary Solutions and Other Chimera
Because the Web-based malware problem is growing so quickly, we can use all the help we can get with solutions. Two new startups, Dasient and Invicea, are taking complimentary approaches to the problem. There's the good old "walled garden" as well.
Invincea, a company born from DARPA-sponsored research (just as Fortify was), wraps commonly-found consumer software including the Web browser and popular Adobe software with an instrumented and hardened Virtual Machine. By buiding a complete VM image in which to run vulnerable software, the Invincea solution outclasses the kinds of "sandboxing" wrappers that Adobe and Google provide. User-mode sandboxes fall prey to the problem of dependencies. Even one defect in any of the hundreds of libraries used by the targeted program (usually a browser or some kind of Adobe software) makes a simple sandboxing solution fail. Though users protected by a sandbox will certainly be less vulnerable than those surfing without a net (by virtue of giving the potential attacker two hoops to jump through instead of one), the Invincea solution is based on what hard core paranoid security types already do. That is, running a separate VM for a browser and wiping the machine between sessions. The difference is that Invincea puts such technology within reach of normals.
Dasient concentrates on the other end of client-server communications — the server. Their solution monitors Web server software directly and quarantines any malicious software that wedges itself in to commit a drive-by-download. Because Web pages today include data and content from all over (especially when advertising is involved), keeping a wether eye out for bad ads and other malicious content that sneaks its way into or through a server is critical. The Dasient approach was built by ex-Googlers who worked two buildings away from the guys who constructed the Google black list. It's Dasient's job to make sure their customers never end up on it.
A third stopgap anti-malware measure is the latest iteration of the "walled garden" pioneered by AOL and Compuserve. Apple iPads only run those apps directly approved by Apple and purchased through their iTunes Web site. And as we all know, Apple devices don't support Adobe Flash content. By severly limiting the fuctionality of their devices and their interactivity on the Web, Apple buys some time in the malicious code wars. But the walled garden approach is certainly less than robust and is thus only a temporary reprieve from the storm.
Long Term Solutions and Wishful Thinking
You already know the long term solution that I espouse — building more secure software. Malicious code always requires a vulnerability in some target software to do its dirty work. In other words, malicious code depends on broken software. To make this concrete, the Dasient report mentions 20 specific software bugs currently targeted by bad ads and other Web-based malware. The defects are listed by CVE number.
With fewer bugs to target, malware writers will have to go back to the drawing board. Some may call the software security approach wishful thinking, but I think it is our only way out of the computer security problem we have created for ourselves. Fortunately, many leading firms, including Adobe and Microsoft, are taking a determined approach to software security and real results are coming in the form of more secure software and less vulnerability to malicious code.
Full disclosure: I am a Technical Advisor to both Dasient and Invincea.