|
|
|
| Non-WTF Job: Junior .NET Developer at West Monroe Partners (Chicago, IL) |
| « Just a Little Chilly | Breaking Broken » |
It's common knowledge that a security system is only as effective as its weakest point. You can install a reinforced steel door with a two-phase palm-print/retinal-scan entry to protect your home, but if you leave a first-floor window open, you're more vulnerable than your neighbor with a simple deadbolt. One of Nate's clients learned this lesson first hand with its e-commerce Web site. The operation didn't involve terribly sensitive data: there were no bank accounts, no Social Security numbers, nor even any credit card numbers. Pre-approved customers would simply sign in and place their orders. Accounts payable and fulfillment would take it from there.
Yet the Web site painted a different picture, featuring two-factor authentication, encrypted databases and a giant padlock graphic advertising "secure."
Before Nate's team arrived, hacking the Web site proved to be about as difficult as entering a house through an open, ground-floor window. The original developers managed to implement virtually every type of vulnerability:
Every time the Web site was hacked, the original developers insisted it was an infrastructure problem. They had the company buy a secure certificate. Then they added a separate database server. Then they installed a firewall to put between the servers. Then an intrusion detection server. And so on. Still, hackers waltzed right in.
Eventually, the company decided that enough was enough and hired Nate and his team to remediate the problems. But his hands were tied as the client insisted on dictating security requirements. And dictate they did:
Try as he might, Nate was unable to convince his client that such requirements provided only the illusion of security. Encryption is meaningless when the application dutifully jumps through all the decryption hoops and displays it to unauthorized users. And obfuscating column names only makes it slightly less convenient for a dedicated hacker; could a column filled with "someone@somewhere.com" be anything but e-mail addresses?
Nate, however, was able to break the tasks into two separate phases with the hope that the second one would never come. The first phase involved patching up the actual vulnerabilities (a task he had to fight for) and implementing the least-absurd security requirements from the customer. The second phase involved implementing the most ridiculous mandates, such as the rotating encryption keys.
It's been a solid year and a half since Phase One was deployed, and there hasn't been a single break-in. Nate says that Phase Two is still technically "planned, but not a priority." In the meantime, developers have learned to deal with the "obfuscated" database naming convention: SELECT emaNtsriF, emaNtsaL, sserddA, ytiC, etatS, rebmuNenohP ... FROM sremotsuC.
Secure This was originally published in Alex's DevDisasters column in the September 01, 2007 issue of Redmond Developer News. RDN is a free magazine for influential readers that provides insight into Microsoft's plans, and news on the latest happenings and products in the Windows development marketplace.
| « Just a Little Chilly | Breaking Broken » |