I have been an administrator for a Host Intrusion Prevention System for a little over a year now on a network. I have been using the McAfee HIPs and ePO system and while for the most part I like it a lot, there are a few major downfalls of it that I feel that in the long run, the current path that vendors are following will not work in the long run. I feel that the idea is fundamentally flawed and I will explain why.
First, let me explain what HIPs is. HIPs is an idea that stands for Host Intrusion Prevention. The idea behind Network Intrusion Prevention has been around for a while, but Host Intrusion Prevention is about moving this same capability to the host. Instead of just monitoring network traffic most HIPs product monitor system calls, and the flow of applications. If the HIPs product sees something it doesn’t like as defined by the signatures it will try and prevent it. For example if Internet Explorer all of a sudden spawns a child process and makes the system call to exec “cmd.exe” you are probably owned through a browser exploit. The idea is that if we can control applications to not be able to perform system calls that are harmful to the system we can then create a safe environment for applications to run. The idea sounds great, but falls flat in two areas, transperency and testing.
Transparency is the first problem that any HIPs type application has. This has more to do with the Windows ecosystem then the HIPs itself. When an application is creating events that the system is blocking all you are often given is an event name and an event description. Sometimes the event description is helpful, but this is very rare. Is this event normal? No idea…. You could try to create a known clean box and try to recreate the situation which is both time consuming but still doesn’t give you an idea what is happening. I have seen one particular situation where HIPs was preventing users from adding a signature to their emails in Outlook. The event described a vulnerability in Visual Studio. How are these two related? I guess you could say Outlook was probably made with Visual Studio? No idea. This was affecting every machine on our network, so I assumed it was “normal”, I used a fresh built machine to test this and it still was doing this event, so what could I do? I disabled the event. There was nothing else I could do. Did I just open up our systems to some large gaping holes? Maybe. You really have no way of knowing. The nature of closed source prevents you from viewing what all your applications are doing. Unlike Network Intrusion Prevention Systems where I can see all the traffic, create a tcpdump of it and then study it in wireshark, I don’t have this luxury with HIPs type products. The closest I have found to this is using the SysInternals Suite to try and monitor what the system is doing (excellent FREE! product by the way).
To make matters worst, I still haven’t figured out how I can even view the signatures themselves! Unlike a product like the Snort NIPs product, where the majority of the rules are just plain text with a very clear and documented standard, I still haven’t found a way to do the same with McAfee HIPs (no idea if other HIPs products are the same). How can I make decisions as an IA professional on what is malicious and what is not when I don’t have access to the underpinnings of the system? That to me is crazy! Security products need to be transperent. Every day IA professionals are making decisions as to what is normal and what is abnormal, if we have no access to see the underpinnings then we can’t properly make these decisions and the product loses its value.
The next issue that I have with HIPs is testing. Any large company who creates a quality product is going to make their programs undergo rigorous testing. Organizations buy these products because they product has already been developed and properly tested. The organization has decided that buying product X would be cheaper then building their own. This is a simple IT concept and is why companies like Microsoft, Oracle and others have such successful products. The problem with HIPs is all that testing becomes useless once HIPs is introduced as vendors application’s paths are altered which can cause large issues that aren’t easily testable. HIPs products contends that the users need to test their applications with HIPs. This is done to a certain extent, but can an organization be expected to hit every single doohicky in every single application that they have deployed? Heck no! Microsoft Office alone would take months! So what do organizations do? They either turn off all events that are being triggered without properly investigating them or they just let things break, harming availability and making users frustrated, and fix issues as they come up. No test lab is ever going to be able to recreate everything possible your users can do.
If the purchaser of the product can’t properly test the products they use with HIPs who should the burden be on? The vendors of the application? Problem here is there are a large number of HIPs products. It isn’t Microsoft’s responsibility to their applications with every HIPs product and every single configuration of these products. Maybe the vendor’s of the HIPs products need to start testing their products with all the available applications on the market… Of course this is never going to happen as there are probably millions of applications out there, not counting all the custom applications that are available.
The reality is there is no good answer to this question with how current HIPs applications work! I have seen HIPs break applications after patches are applied. I have seen HIPs prevent patches from being applied. I have seen servers brought down (even though they worked fine for months) creating losses in availability for hours and more. HIPs comes at the expense of software availability and software reacting reliably every time.
What can be done to fix this issue? Well the first thing is to create software that doesn’t need HIPs. HIPs is really just a band aid solution to a larger problem. HIPs assumes software is going to have security vulnerabilities and that it needs to be monitored and controlled in such a way that prevents these issues from further damaging the system. If the software didn’t have holes this wouldn’t be required. Sounds great in theory, but is a pipe dream with the complexity of today’s software and the current tools available to create such software, so we are still stuck with HIPs.
The next thing that can be done to fix this issue is to standardize HIPs. If there was a standard to HIPs signatures and how their systems reacted software could be tested with HIPs enabled to verify their software works reliably. Opening up the signature sets and defining how HIPs products act with these signatures could fix the issue of testing as well as help the issue with transparency (not entirely because I doubt the software will ever of open source). Creating a single central repository that is shared by all vendors would lower the number of products that a software maker needs to test their products with as they could test it with one HIPs application and it should pertain to all other third party systems using the same signature set.
The other fix could be to have one vendor dominate the market similar to how SNORT is pretty much the undisputed champion of NIDs and NIPs devices (a lot of commercial products use SNORT as their base). This would allow vendors of software to only have to test one HIPs product to ensure their software doesn’t break at their customer site. It would also allow the vendor to draw up detailed documentation on how to turn off or tune specific signatures to allow their products to work (similar to how vendors usually specify the ports to open on the firewall). One way I could see this happening is if Microsoft were to integrate a HIPs type component into a future version of Windows. Not sure how great of a solution this would be, but it is a possibility.
If vendors want their HIPs products to be more widespread and create more happy customers then they need to fix these two issues. If you have any other suggestions let me know, I would be interested in hearing them!


