In my last posting I promised to explain the concept of Application Whitelisting. But before we get to that there is another reactive aspect of computer security I failed to mention...software vulnerabilities.
Viruses and malware don't just take advantage for trusting users to infect systems. Frequently these programs exploit vulnerabilities in your computer's operating system and applications. And once infected other vulnerabilities can be used to spread the infection on your network.
Security researchers work tirelessly to find these flaws and alert the software makers before the bad guys figure out how to use them. But even if a flaw is discovered and disclosed before an exploit is developed, it takes time for the software vendors to build patches to fix the problem. A patch does not help until it is actually applied which falls on users and IT shops. Even the best IT shops struggle to keep their systems patched. It is a never ending battle and as this reactive cycle plays out, your computers are left vulnerable.
As the number of bad programs grows, the reactive process of detecting, processing and tracking them becomes more inefficient. So what is an organization to do? Application whitelisting is a change of approach in computer security from the ways of antivirus. Instead of trying to figure out all the programs in existence you don't want to run on your computer, you specify what programs you DO want to run. And more advanced whitelisting applications can go a step further and prevent the programs you allow to run from doing things they aren't supposed to when a vulnerability is exploited.
There are many different approaches to tracking what software is approved.
· Simple whitelisting programs use the file name and/or path to determine if a program is allowed to run. These systems can be bypassed by changing the name of a file or move it to a different directory.
· A more advanced method is to use a hash of the file, a string of characters generated by processing the file through a mathematical algorithm. If even a single bit of the file is changed the hash will no longer match. The problem with this method is that if a program is updated the hash must also be updated.
· More reputable software vendors now "sign" their programs with digital certificates very similar to those used to secure web pages. This allows you to verify that the program was actually released by that company. Instead of using one of the above methods to approve of software, you can tell your whitelisting software to approve of any program signed by a particular vendor’s certificate. Unfortunately not all code is signed.
Frequently a combination of the above methods is required to build a whitelist. Once a whitelist has been created and applied to a computer it will prevent any program not specifically listed will be prevent from executing. This should prevent any malware from running, but if not done correctly it can also prevent legitimate software from running. The ability to manage a whitelist is almost as important as the ability to enforce it.
In the next post on this subject I’ll introduce a couple application whitelisting products and explore the differences in how they work.