modular program monitors david walker princeton university (joint work with lujo bauer and jay...

21
Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Upload: horace-rose

Post on 17-Dec-2015

217 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Program Monitors

David WalkerPrinceton University

(joint work with Lujo Bauer and Jay Ligatti)

Page 2: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Program Monitors

• A program monitor is a coroutine that runs in parallel with an untrusted application– monitors process security-relevant actions

• decide to allow/disallow application actions• may terminate or suspend application execution

– monitors detect, prevent, and recover from erroneous or malicious applications at run time

Page 3: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Simple Monitor Structure

• Monitors have 3 components– set of security-relevant application

actions– security state– computation

a

Access Control Monitor

fopenfclose

actions

acl

state computation

acl lookup

Page 4: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Polymer Project

• Polymer– An extension of Java designed to

simplify construction of run-time program monitors

• Design methodology– A formula for producing well-

structured, easy-to-understand, easy-to-modify monitors

Page 5: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Policy Architecture: The Problem

Java corePolymer language extensions

HostSystem(Java)

Program Monitor Definition

Untrusted application

Page 6: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Policy Architecture: Simple Policies

Java corePolymer language extensions

HostSystem(Java)

SimplePolicyDef.

systeminterface

Page 7: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

class limitFiles extends Policy { private int openFiles = 0; private int maxOpen = 0; limitFiles(int max) { maxOpen = max; }

....

}

A Simple Polymer Policy

private policy state,protected from malicious applications

policy constructor

Page 8: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

class limitFiles extends Policy { private int openFiles = ... private int maxOpen = ...

private ActionSet actions = new ActionSet( new String[] {“fileOpen(String)”, “fileClose()”} ); ....

}

A Simple Polymer Policy Continued

set of policy-relevant methods

Page 9: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

class limitFiles extends Policy { private ActionSet actions = ... private int openFiles = ... private int maxOpen = ... Suggestion step(Action a) { aswitch (a) { case fileOpen(String s) : if (++openFiles <= maxOpen) return Suggestion.OK(); else return Suggestion.Halt(); case fileClose() : ...

A Simple Polymer Policy Continued

policybehaviour

Page 10: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

class limitFiles extends Policy { private ActionSet actions = ... private int openFiles = ... private int maxOpen = ... Suggestion step(Action a) { aswitch (a) { case fileOpen(String s) : if (++openFiles <= maxOpen) return Suggestion.OK(); else return Suggestion.Halt(); case fileClose() : ...

A Simple Polymer Policy Continued

Page 11: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

class limitFiles extends Policy { private ActionSet actions = ... private int openFiles = ... private int maxOpen = ... Suggestion step(Action a) { aswitch (a) { case fileOpen(String s) : if (++openFiles <= maxOpen) return Suggestion.OK(); else return Suggestion.Halt(); case fileClose() : ...

A Simple Polymer Policy Continued

Page 12: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

class limitFiles extends Policy { private ActionSet actions = ... private int openFiles = ... private int maxOpen = ... Suggestion step(Action a) { aswitch (a) { case fileOpen(String s) : if (++openFiles <= maxOpen) return Suggestion.OK(); else return Suggestion.Halt(); case fileClose() : ...

A Simple Polymer Policy Continued

Page 13: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Realistic Monitors

• Protect complex system interfaces– interfaces replicate functionality in many

different places– method parameters communicate

information in different forms– eg: Java file system interface

• 9 different methods to open files• 4 different methods to close files• filename strings, file objects, self used to

identify files

Page 14: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Policy Architecture: Abstract Actions

Java corePolymer language extensions

HostSystem(Java)

AbstractActionDef.

concrete systeminterface

abstract systeminterface

SimplePolicyDef.

Page 15: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Abstract Action Definitions

java.lang.io

FileReader(String fileName);FileReader(File file);RandomAccessFile(...);...

FileReader.close();RandomAccessFile.close();...

fileOpen(String n);

fileClose();

Page 16: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Realistic Monitors

• Combine simple policies defined over a variety of different resources– eg: sample applet policy

• file system access control• bounds on bytes written and number of

files opened• restricted network access

– no access after file system read– communication with applet source only

Page 17: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Policy Architecture:Complex Policies

Java corePolymer language extensions

HostSystem(Java)

AbstractActionDef.

SimplePolicyDef.

PolicyComb.Def.

Complex, System-specific Policy

concrete systeminterface

abstract systeminterface

Page 18: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Policy Combinators

• Conjunction, Disjunction, Chinese wall,...

s1 s2

Conjunctive Policy

P1 P2

s

Page 19: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Related Work

• Aspect-oriented programming– New polymer features:

• first-class suggestions, abstract actions, action patterns, policy combinators, policy architecture, formal semantics

• Monitoring languages• Poet and Pslang, Naccio, Ariel, Spin Kernel

• Logical monitoring specifications• MAC (temporal logic), Bigwig (second-order

monadic logic)

Page 20: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

Summary: Polymer

• First steps towards the design of a modern language for programming modular run-time security monitors

• For future software releases & papers see– www.cs.princeton.edu/sip/projects/

polymer/

Page 21: Modular Program Monitors David Walker Princeton University (joint work with Lujo Bauer and Jay Ligatti)

Modular Run-time Program Monitors David Walker

End