LibVM: an architecture for shared library sandboxing
- 10 November 2014
- journal article
- research article
- Published by Wiley in Software: Practice and Experience
- Vol. 45 (12) , 1597-1617
Abstract
Summary: Many software applications extend their functionality by dynamically loading libraries into their allocated address space. However, shared libraries are also often of unknown provenance and quality and may contain accidental bugs or, in some cases, deliberately malicious code. Most sandboxing techniques that address these issues require recompilation of the libraries using custom tool chains, require significant modifications to the libraries, do not retain the benefits of single address space programming, do not completely isolate guest code, or incur substantial performance overheads. In this paper, we present LibVM, a sandboxing architecture for isolating libraries within a host application without requiring any modifications to the shared libraries themselves, while still retaining the benefits of a single address space and also introducing a system call inter‐positioning layer that allows complete arbitration over a shared library's functionality. We show how to utilize contemporary hardware‐virtualization support towards this end with reasonable performance overheads, and, in the absence of such hardware support, our model can also be implemented using a software‐based mechanism. We ensure that our implementation conforms as closely as possible to existing shared library manipulation functions, minimizing the amount of effort needed to apply such isolation to existing programs. Our experimental results show that it is easy to gain immediate benefits in scenarios where the goal is to guard the host application against unintentional programming errors when using shared libraries, as well as in more complex scenarios, where a shared library is suspected of being actively hostile. In both cases, no changes are required to the shared libraries themselves. Copyright © 2014 John Wiley & Sons, Ltd.Keywords
This publication has 19 references indexed in Scilit:
- A Hardware Virtualization Based Component Sandboxing ArchitectureJournal of Software, 2012
- Codejail: Application-Transparent Isolation of Libraries with Tight Program Interactions2012
- Native ClientCommunications of the ACM, 2010
- Sealing OS processes to improve dependability and safetyACM SIGOPS Operating Systems Review, 2007
- A comparison of software and hardware techniques for x86 virtualizationACM SIGARCH Computer Architecture News, 2006
- User-Level Device Drivers: Achieved PerformanceJournal of Computer Science and Technology, 2005
- Improving the reliability of commodity operating systemsACM SIGOPS Operating Systems Review, 2003
- DiscoACM Transactions on Computer Systems, 1997
- Efficient software-based fault isolationACM SIGOPS Operating Systems Review, 1993
- Pointer swizzling at page fault timeACM SIGARCH Computer Architecture News, 1991