VMware VMsafe is a security technology for virtualized environments that can help to protect virtual infrastructures in ways not previously possible with physical machines. It has a lot of promise, but why limit VMsafe to ESX? Why not support similar hypervisor security APIs in a virtualization layer for workstations, laptops and mobile devices too? While this may sound extreme, I assure you there is good reason.
It's easiest to explain what I mean by illustrating one of VMsafe's capabilities, network introspection. Until recently there were only two vantage points to perform network introspection (host-based and physical appliances). With the advent of virtualization and VMsafe the landscape has changed. Now you have the following locations to perform packet filtration, deep packet inspection, network monitoring and more:
- Host-Based (NDIS/TDI/WPF)
- vNIC hook with tunnel to Virtual Appliance (e.g. VMsafe)
- vSwitch (e.g. Nexus 1000v)
- vSwitch bridging to Virtual Appliance (e.g. vShield Zones)
- Physical Network
I've listed these options in order of proximity to the application stack, or workload performed by the end-point. The distance from the application stack is an important factor. The further you are away, the less you see (for example node to node traffic on an internal network), yet the closer you are the more opportunity there is to subvert the introspection. It's a balance of visibility and resiliency.
If we look at network introspection as a problem where both the source and destination are untrusted environments, where is the most advantageous view point?
Locating network introspection on the host gives the highest degree of correlation with the actual workload. For instance a firewall can determine if packets should be passed based on the user or process. Unfortunately, host-based also happens to be the location most vulnerable to subversion. Malware routinely shuts down host-based controls, and drivers higher up the TCP stack can be blind to malware talking on raw sockets. It's also not uncommon for user agents to be disabled (temporarily of course). After all, when something goes wrong blame the [INSERT SECURITY PRODUCT NAME HERE].
Move one level outside the host to the new set of options provided by the virtualization layer, and you have a more complete and insulated view of the network traffic (at least until virtualization attacks are mainstream). When filtering at the vNIC or vSwitch level, the vantage point is similar to that of a network based physical appliance, with the exception that you have certainty as to the destination VM and can apply specific policies.
As we move further onto the network, policies are much harder to custom tailor to specific hosts. Physical network appliances rely on switch port, or the IP/MAC of the Ethernet frame if they need to perform specific filtration, neither of which can be guaranteed to be attached to the expected instance on the other end. End-point vendors and the Jericho Forum have been highlighting the ineffectiveness of perimeter security in an increasingly mobile world for years.
Imagine a spy on the tail of a notorious dictator who is driving to a meeting with potential buyers for some spare plutonium. If the spy gets too close they may call off the deal or worse, turn and attack. If he gets too far away he risks loosing them and seeing that all important hand-off of the merchandise. He needs to follow the car at just the right distance.
Network Introspection in the hypervisor (either the vSwitch or a vNIC hook) is a compromise between physical network and host-based that, while imperfect provides a resilient way to apply tight policies. We have this today in vSphere 4, but ESX and ESXi only run on specific hardware and are not suited to workstations, laptops and mobile devices.
VMware View provides a virtualization solution suitable for workstations and laptops. It provides for desktop consolidation, faster provisioning, and desktops independent of the device. On the hardware you install a client similar to a bootstrapper, where your desktop may then run on a server or be checked out locally to let you roam. When the desktop is running in the data center, it's protected by the various physical appliances, 3rd party vSwitches and virtual appliances. When the VM is checked out onto the laptop for roaming you lose this protection.
Base virtualization layers for all devices are coming. What I would like to see is VMsafe-like Security APIs built into virtualization solutions for user computing. When security is deployed at this layer it becomes resilient to end-users with administrator privileges and malware.
Take for example a firewall. Inside the OS it is vulnerable to alteration of the ACLs, subversion by unfiltered frame types, or being disabled by administrators or malware. Removed from this layer it becomes impervious to attempts to disable or bypass protection.
No doubt, there would be complications rolling out VMsafe-like APIs for this type of environment (especially if you extend the inspection abilities to memory, CPU and disk). For one, there would have to be a way to address this layer in order to update software or profiles. Running virtual appliances wouldn't be acceptable under the resources available on these devices so the entire security stack would have to be executed in the hypervisor layer. It would also require specialized support for hardware such as wireless cards.
I challenge VMware, Citrix or Microsoft to introduce a common technique for running security agents outside of the virtual machine where the policy and even the security software could be carried with the VM (in a OVF or similar). Extend this support to a wide range of physical hardware and delivery models (including IaaS) and we could have VMs of any nature (desktop or server) runnable in a wide variety of environments with closely coupled, but isolated security in tow.