Thwarting memory disclosure with efficient hypervisor-enforced intra-domain isolation

Y Liu, T Zhou, K Chen, H Chen, Y Xia - Proceedings of the 22nd ACM …, 2015 - dl.acm.org
Y Liu, T Zhou, K Chen, H Chen, Y Xia
Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications …, 2015dl.acm.org
Exploiting memory disclosure vulnerabilities like the HeartBleed bug may cause arbitrary
reading of a victim's memory, leading to leakage of critical secrets such as crypto keys,
personal identity and financial information. While isolating code that manipulates critical
secrets into an isolated execution environment is a promising countermeasure, existing
approaches are either too coarse-grained to prevent intra-domain attacks, or require
excessive intervention from low-level software (eg, hypervisor or OS), or both. Further, few of …
Exploiting memory disclosure vulnerabilities like the HeartBleed bug may cause arbitrary reading of a victim's memory, leading to leakage of critical secrets such as crypto keys, personal identity and financial information. While isolating code that manipulates critical secrets into an isolated execution environment is a promising countermeasure, existing approaches are either too coarse-grained to prevent intra-domain attacks, or require excessive intervention from low-level software (e.g., hypervisor or OS), or both. Further, few of them are applicable to large-scale software with millions of lines of code. This paper describes a new approach, namely SeCage, which retrofits commodity hardware virtualization extensions to support efficient isolation of sensitive code manipulating critical secrets from the remaining code. SeCage is designed to work under a strong adversary model where a victim application or even the OS may be controlled by the adversary, while supporting large-scale software with small deployment cost. SeCage combines static and dynamic analysis to decompose monolithic software into several compart- ments, each of which may contain different secrets and their corresponding code. Following the idea of separating control and data plane, SeCage retrofits the VMFUNC mechanism and nested paging in Intel processors to transparently provide different memory views for different compartments, while allowing low-cost and transparent invocation across domains without hypervisor intervention.
We have implemented SeCage in KVM on a commodity Intel machine. To demonstrate the effectiveness of SeCage, we deploy it to the Nginx and OpenSSH server with the OpenSSL library as well as CryptoLoop with small efforts. Security evaluation shows that SeCage can prevent the disclosure of private keys from HeartBleed attacks and memory scanning from rootkits. The evaluation shows that SeCage only incurs small performance and space overhead.
ACM Digital Library