SPARTA ISSO

Finished Projects

Secure Execution Environments

Generic Software Wrappers for Security and Reliability

Problem
Today's large-scale information systems increasingly combine an array of independently developed Commercial Off-The-Shelf (COTS) software components such as programs, linkable code libraries, and network applets (e.g., CORBA or Java). Unfortunately, however, although conventional software composition mechanisms (e.g., network protocols, dynamic libraries, system APIs) supply the required "glue" for combining such components into large systems, they provide very weak inter-component boundaries. Consequently, an entire critical system may be vulnerable to failures or security compromises within a single component. One solution might be to base critical systems only on high-assurance trusted components, but such components rarely are available. SPARTA ISSO is investigating a very promising and practical potential security solution for large-scale systems comprising numerous individual COTS components.

Solution
Under DARPA funding, SPARTA ISSO is developing software "wrapping" technology to significantly increase the security and reliability of large software systems composed of standardized software components. These generic software wrappers intercept and augment component interactions to implement practical security (e.g., restricting, filtering) and reliability (e.g., redundancy, crash data recovery) policies.

Details
The figure below illustrates the architecture of a wrapper-enforcing system. Programs running "unwrapped" perform as usual; any system requests go directly to the operating environment. However, selected system requests from a wrapped program (step 1) are intercepted by a wrapper that understands the system API (step 2). This concrete wrapper may in turn generate events intercepted by a more abstract wrapper (step 3). If the event has not been denied, it passes down to the system's internal API (step 4).

A central feature of our approach is that highly abstract wrappers may directly express security policies of interest (e.g., Biba, Clark/Wilson) and that more concrete wrappers may translate a particular system's API or use by abstract wrappers. By placing wrapper logic primarily in abstract wrappers, our research seeks to make wrappers relatively reusable and portable between execution environments. Furthermore, by showing WDL wrappers that run in the UNIX and Windows prototype systems, our research seeks to demonstrate that WDL wrappers are not specific to a single system or architecture, but are suitable for increasing the security and reliability of large-scale heterogeneous software systems in general.

The figure below graphically depicts a wrapper written in WDL and traces its key behaviors. The wrapper specifies interception criteria that determine the events to be intercepted by the wrapper. For each event intercepted, an action is performed; for example, the event is denied, parameters are transformed, the event's functionality is supplemented (e.g., data is encrypted), or a new event is generated for a possible consumption by another wrapper.

Additionally, we have been focusing research on using wrappers to implement intrusion detection techniques. Wrappers provide better access to system data, including all system call parameters, for intrusion detection and the ability to respond faster, stopping attacks at the first system call at which they are detected. We have written wrappers that successfully implement specification-based and sequence-based intrusion detection concisely and with low overhead.