Vulnerabilities inside and out
- 22 October, 2007 07:00
I've often said in my columns how client-side attacks should be most administrators' No. 1 exploit worry. It's less and less common for attackers to break in through the front door. If I want to steal from a company over the Internet, it's much harder (these days) to find an exploit on the company's Web site or back-end database server. This is not to say that these types of attacks don't happen; they do, as any day's headlines will reveal. But it's not the most common way my clients are reporting. It's more likely that an end-user accidentally launched a worm or a bot that led to the compromise.
Spam a hundred malicious e-mails to an entity's employees and you're almost guaranteed to get a client-side execution. All the end-user education in the world still doesn't work if the spam e-mail looks authentic enough (that is, spear phishing). The end-user executes the client-side code or inputs their network credentials into a phish Web site, and the remote hacker has a backdoor tunnel that bypasses firewalls, IPSs, and all other security controls. Maybe you think you're safe because your end-users aren't logged on as admin or root. No worry: Standard end-users usually have more than enough access to let the hacker get what they want.
Why rob a bank with a gun when you're only going to get a few thousand dollars at most, along with an exploding dye pack and a guaranteed 5-to-25 years in prison? Instead, buy a spamming bot for a few hundred dollars, spend a few hours customizing your attack, and steal tens of thousands to millions. Your risk of getting caught is almost nil. And if you're one of the very few, unfortunate criminals that actually does get caught, you'll be hard-pressed to spend any time in jail. Usually the fines are less than what the criminal made in one day's haul.
If you're working on your company's computer security strategy, pay at least as much attention to your client-side protections as you do preventing malicious hackers coming through the front door.
In order to back up this assertion, I decided to do some research (I apologize ahead of time as I concentrated on only Microsoft Windows exploits). I wanted to find out how many exploits were client-side attacks that required end-user interaction versus remotely exploitable attacks requiring no end-user interaction.
An example of the latter is when a remote hacker or worm runs a buffer overflow against a default installed, advertising service and gets complete control of the machine. MS-Blaster and Code Red are examples of this type of attack. Client-side, interactive exploits, on the one hand, require the user to click on or do something. Alternately, remote, non-interactive exploits are normally more dangerous than client-side attacks. An attacker can launch a single such attack, and it will break into millions of unpatched computers in a day. Client-side exploits, because they require end-user interaction, just don't spread as fast (although there are exceptions, such as the Melissa virus and Iloveyou worm).
For my research, I used my favorite vulnerability announcement site, Secunia, and compared it to Microsoft's own security bulletins and to the Mitre CVE database. I concentrated on Windows XP Pro SP2 and later Windows OSes, and any vulnerability announced capable of running on those platforms (such as OS, IE, Windows Media Player, Microsoft Office, and so on), focusing on the years 2006 and 2007. I ended up reviewing 270 separate CVE-rated vulnerabilities in 136 security bulletins.
I found that 86 percent of all announced vulnerabilities were client-side attacks requiring end-user interaction, and 14 percent were noninteractive remote exploits.
Of the noninteractive, remote exploits (39 out of the 270), 79 percent required no authentication to work, while 21 percent required an authenticated user account connection or even an administrator connection (much more likely with Windows Server 2003).
Even if I pull out all the end-user application vulnerabilities (IE, Office, and so on), the overall conclusions are the same: Client-side vulnerabilities are far more prevalent than remote attacks. Most malicious attacks require the end-user to click on a link or file.Â
What does it mean? IT shops should spend at least as much time blocking client-side attacks as they do on preventing remote attacks (using firewalls, IPSs, and more). The biggest threat to your environment isn't the external hacker or the internal intruder; it's the accidental insider who unknowingly infects their computer, compromises the entire network, and undoes all your hard work. Again, this is nothing new, but we have some facts and statistics to back it up this time.
My analysis is far from conclusive. For one, I didn't factor in severity information, whether or not the exploited component is installed by default, or whether the exploit was widely used against the general public. Those are big factors to ignore. I also included local privilege escalation attacks into the client-side attacks, simply to differentiate between the local and truly remote access needed to accomplish the attack. This slightly skews the results in favor of client-side attacks, but in reality, if an attacker has local user access on your system, it's pretty much "game over" anyway.
This analysis confirms that client-side attacks are indeed the No. 1 threat by a far margin. There's no surprise here, but now we have numbers versus warm fuzzies and gut feelings. If someone did the same analysis for Linux and OS X, I'm fairly confident the results would be the same.
Of course, most remote exploits against Internet-based servers occur because of human-coded application errors, such as SQL injection, inadequate permissions, and misconfigurations, which require an entirely different analysis altogether. What I wanted to show is how prevalent client-side attacks were versus completely remote exploits, requiring no end-user interaction.