CSAIL Research Abstracts - 2005 link to http://publications.csail.mit.edu/abstracts/abstracts05/index.html link to http://www.csail.mit.edu
bullet Introduction bullet Architecture, Systems
& Networks
bullet Language, Learning,
Vision & Graphics
bullet Physical, Biological
& Social Systems
bullet Theory bullet

horizontal line

The Asbestos Operating System

Petros Efstathopoulos (UCLA), Cliff Frey, M. Frans Kaashoek, Eddie Kohler (UCLA), Maxwell Krohn, David Mazières (NYU),
Robert Morris, Michelle Osborne (NYU), Steven VanDeBogart& David Ziegler

Problem Statement

Today's computer systems have an undeniably bad track record in security. We routinely hear of Web servers and other systems experiencing catastrophic breaches that divulge tens or hundreds of thousands of people's private information. End users suffer from viruses and spyware that, through various applications, infiltrate their operating systems, leak clickstream data, send spam, participate in denial of service attacks, and perform other malicious actions.

Most of these problems can be attributed to two factors: exploitable flaws in software, and users' willingness to run malicious code disguised as legitimate software or documents. Unfortunately, neither factor appears likely to improve significantly in the near future. Thus, the most viable means of improving security in practice may be designing systems that accommodate these threats. For example, an email reader should be able to confine an executable attachment by only giving it access to a display window and perhaps a temporary file system. A Web site should be able to ensure that one user's private data cannot be sent to another user's browser by a buggy Web server.

Confining processes and limiting information flow require the ability to enforce nondiscretionary security policies. To date, most operating system support for nondiscretionary policies has taken the form of multi-level secure (MLS) systems suitable for military-style classification policies. MLS systems primarily allow security administrators to impose external constraints on existing software. The nondiscretionary access control mechanisms in these systems typically cannot be used by ordinary users to craft their own policies, cannot help developers restructure applications to tolerate breaches, and cannot be applied at a fine granularity to protect large numbers of users' data, as would be required for a typical Web site. Language-based information flow systems can support somewhat more decentralized policies [1], but there are significant advantages to implementing flow control at the OS level---not least the smaller trusted computing base and hardware support for protection. Furthermore, even these systems may not support the dynamic, decentralized creation of principals. On the other hand, capability-based operating systems offer some attractive features, including dynamic principal creation and fine-grained access control but give up explicit control of information flow.

Motivated by the difficulty of writing secure code for today's operating systems, and believing that a clean-slate design would more likely lead to advances that could eventually be mapped back to more conventional OSes, we are working on a new operating system, Asbestos, that combines the advantages of capability-based and nondiscretionary-access systems. Asbestos access control is based on a single simple primitive, Asbestos labels, that can implement both discretionary and nondiscretionary access policies, in a completely decentralized fashion. Any process may create an access control space, represented by a handle, and control the policies applied relative to that space. Labels straightforwardly implement traditional capabilities, mandatory access control, and hybrid schemes.

But process-granularity labels themselves are not sufficient to build fast, secure applications. A Web service, for example, may speak concurrently to multiple users. The service author might like to enforce a policy in which no user could see or touch another user's data. Process labels would force such a service to be implemented with one process per user, at significant resource cost. Asbestos therefore supports finer-granularity access control, called label save/restore, that lets a service apply labels selectively to specific memory pages. The operating system ensures, with label checks and virtual memory operations, that pages for a given user are visible only during the processing of requests for that user. Even if one user's instance of the process is broken into, all other user data is safe. This primitive not only helps make applications more secure, it also might facilitate new types of services: users could safely be granted more control over the code running on their behalf, since labels ensure that other users' data will never be compromised.

Progress to Date

To date, we have developed a prototype version of Asbestos, running on real x86 hardware and capable of supporting real applications. A decent portion of our work has focused on the appropriate system call interface and how to expose our security primitives to application developers. The system we arrived at is a message-passing design. Applications communicate with the kernel and with each other via messages sent to communications endpoints, or handles. When applications send messages to handles, and receive messages on the handles they own, they can accumulate labels, which in turn, can restrict the ways in which they communicate. The kernel enforces these labeling operations, and an application usually cannot change its labels in a way that gives it more access to system resources. Application designers then must build software with the kernel's labeling rules in mind. In our experience, the labeling restrictions do not preclude the development of a complex piece of software running on behalf of many principles, such as a dynamic Web server.

Our implementation of Asbestos puts these labeling concepts into practice in a real operating system. Moreover, it applies them to fine-grained containment regions---virtual pages on the x86 architecture. Asbestos uses the standard x86 VMM system to restrict which pages a process can read or write on the basis of which labels it currently possesses. If an application is tainted with restrictive labels, many pages in the application's process space will be off limits. The kernel allows the application to flush these labels, but only after scrubbing any data written to memory that might potentially leak information.

In practice, this design means that one application can securely speak for many external users. When an application accepts a connection from an external principal (X), it is immediately tainted with X's labels. It can write to a pool of memory specifically allocated for X, but cannot read or write Y's pages. After serving X's request, the application flushes its labels and accepts a new connection from Z. At that point, the application can only access Z's memory pages, those from X being pushed out of scope by the label flush operation.

An actual implementation of a Web server that enforces such a policy exists for Asbestos. The Web server makes heavy use of Asbestos's labeling interface, supplemented with small trusted applications (tasked with applying the appropriate labels to incoming connections), so that the Web server could be entirely compromised without leaking data.

Future Work

Research on Asbestos is currently progressing in many different directions. Work is ongoing to make Asbestos perform better, and to support more hardware. In particular, we seek to optimize the virtual memory operations that must happen whenever an application flushes its labels and attempts to speak for a new user. Other work is dedicated to rethinking, and possibly simplifying the current Asbestos labeling scheme. For instance, page labeling can replace the need for memory-protection along process boundaries. Might it be possible to develop a similar operating system without the idea of a process? Other work is devoted to making more Asbestos applications. In keeping with our current emphasis on Web services, we are designing and implementing a database server for Asbestos that can assign different labels to tables, rows and even cells. The idea is that data imported to and exported from the database follow the same labeling rules as other aspects of the system. Finally, we are exploring programming-language techniques to simplify building applications on Asbestos: if a program might eventually induce a run-time label failure, then perhaps the offending operation should be discovered when the program is compiled.

References:

[1] A Decentralized Model for Information Flow Control. In Proceedings of the 16th ACM Symposium on Operating Systems Principles, Saint-Malo, France, October 1997.

horizontal line

MIT logo Computer Science and Artificial Intelligence Laboratory (CSAIL)
The Stata Center, Building 32 - 32 Vassar Street - Cambridge, MA 02139 - USA
tel:+1-617-253-0073 - publications@csail.mit.edu
(Note: On July 1, 2003, the AI Lab and LCS merged to form CSAIL.)