Information flow control for standard OS abstractions

  • Authors:
  • Maxwell Krohn;Alexander Yip;Micah Brodsky;Natan Cliffer;M. Frans Kaashoek;Eddie Kohler;Robert Morris

  • Affiliations:
  • MIT, Cambridge, MA;MIT, Cambridge, MA;MIT, Cambridge, MA;MIT, Cambridge, MA;MIT, Cambridge, MA;UCLA, Los Angeles, CA;MIT, Cambridge, MA

  • Venue:
  • Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
  • Year:
  • 2007

Quantified Score

Hi-index 0.02

Visualization

Abstract

Decentralized Information Flow Control (DIFC) is an approach to security that allows application writers to control how data flows between the pieces of an application and the outside world. As applied to privacy, DIFC allows untrusted software to compute with private data while trusted security code controls the release of that data. As applied to integrity, DIFC allows trusted code to protect untrusted software from unexpected malicious inputs. In either case, only bugs in the trusted code, which tends to be small and isolated, can lead to security violations. We present Flume, a new DIFC model that applies at the granularity of operating system processes and standard OS abstractions (e.g., pipes and file descriptors). Flume was designed for simplicity of mechanism, to ease DIFC's use in existing applications, and to allow safe interaction between conventional and DIFC-aware processes. Flume runs as a user-level reference monitor onLinux. A process confined by Flume cannot perform most system calls directly; instead, an interposition layer replaces system calls with IPCto the reference monitor, which enforces data flowpolicies and performs safe operations on the process's behalf. We ported a complex web application (MoinMoin Wiki) to Flume, changingonly 2% of the original code. Performance measurements show a 43% slowdown on read workloadsand a 34% slowdown on write workloads, which aremostly due to Flume's user-level implementation.