18th Annual Computer Security Applications Conference
December 9-13, 2002
Las Vegas, Nevada

Safe Virtual Execution Using Software Dynamic Translation

Kevin Scott and Jack W. Davidson
University of Virginia

Safe virtual execution (SVE) allows a host computer system to reduce the risks associated with running untrusted programs. SVE prevents untrusted programs from directly accessing system resources, thereby giving the host the ability to control how individual resources may be used. SVE is used in a variety of safety-conscious software systems, including the Java Virtual Machine (JVM), software fault isolation (SFI), system call interposition layers, and execution monitors. While SVE is the conceptual foundation for these systems, each uses a different implementation technology. The lack of a unifying framework for building SVE systems results in a variety of problems: many useful SVE systems are not portable and therefore are usable only on a limited number of platforms; code reuse among different SVE systems is often difficult or impossible; and building SVE systems from scratch can be both time consuming and error prone. To address these concerns, we have developed a portable, extensible framework for constructing SVE systems. Our framework, called Strata, is based on software dynamic translation (SDT), a technique for modifying binary programs as they execute. Strata is designed to be easily ported to new platforms and to date has been targeted to SPARC/Solaris, x86/Linux, and MIPS/IRIX. This portability ensures that SVE applications implemented in Strata are available to a wide variety of host systems. Strata also provides the opportunity for code reuse among different SVE applications by providing a common implementation framework. Using SDT, Strata provides a basic safe virtual execution engine. The base functionality provided by this engine is easily extended to implement specific SVE systems. In this paper we describe the organization of Strata and demonstrate its extension to build two SVE systems: system call interposition and stack-smashing prevention. To illustrate the use of the system call interposition extensions, the paper presents implementations of several interesting and useful security policies.


Read Paper Read Paper (in PDF)