Top Banner
I SO M OD : A Module System for Isolating Untrusted Software Extensions Philip W. L. Fong [email protected] Department of Computer Science University of Regina Regina, Saskatchewan, Canada S4S 0A2
38

ISOMOD: A Module System for Isolating Untrusted Software Extensions

Feb 03, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ISOMOD: A Module System for Isolating Untrusted Software Extensions

I SOM OD: A Module System forIsolating Untrusted Software

ExtensionsPhilip W. L. Fong

[email protected]

Department of Computer Science

University of Regina

Regina, Saskatchewan, Canada S4S 0A2

Page 2: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Overview

1. Motivation: Name Visibility Management

2. The ISOMOD Architecture and Policy Language

3. Sample Applications

4. On-going Work

ISOMOD: Carleton 2006 – p.1/34

Page 3: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Name Visibility Management

ISOMOD: Carleton 2006 – p.2/34

Page 4: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Secure Cooperation of Mutually Suspicious Code

The Challenge of Secure CooperationProtecting mutually suspicious code units from oneanother while they are executing in the same run-timeenvironment.

[Schroeder 1972, Rees 1996]

ISOMOD: Carleton 2006 – p.3/34

Page 5: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Dynamically Extensible SystemsDynamically-loaded software extensions

ProcessCode Producer

ProcessCode Consumer

Resource

ISOMOD: Carleton 2006 – p.4/34

Page 6: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Dynamically Extensible SystemsDynamically-loaded software extensions

ProgramFragment

P

Code ConsumerProcess

Code ProducerProcess

Resource

ISOMOD: Carleton 2006 – p.5/34

Page 7: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Dynamically Extensible SystemsDynamically-loaded software extensions

ProcessCode Producer

Process

ProgramFragment

P

Code Consumer

Resource

▽ISOMOD: Carleton 2006 – p.6/34

Page 8: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Dynamically Extensible SystemsDynamically-loaded software extensions

ProcessCode Producer

Process

ProgramFragment

P

Code Consumer

Resource

ExamplesMobile code platforms

Scriptable applications

Systems with plug-in architecture

▽ISOMOD: Carleton 2006 – p.6/34

Page 9: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Dynamically Extensible SystemsDynamically-loaded software extensions

ProcessCode Producer

Process

ProgramFragment

P

Code Consumer

Resource

ExamplesMobile code platforms

Scriptable applications

Systems with plug-in architecture

Challenge: Secure Cooperation!

ISOMOD: Carleton 2006 – p.6/34

Page 10: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Language-Based SecurityEncode untrusted extensions in safe language

Run untrusted code in secure run-time environment

Protection mechanisms based on programminglanguage technologies:

type systems

program rewriting

execution monitoring

ExamplesJava Virtual Machine (JVM)

Common Language Runtime (CLR)

ISOMOD: Carleton 2006 – p.7/34

Page 11: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Language-based Access Control

1. Low-level: Encapsulation via visibility controle.g., public, protected, private

2. High-level: Execution monitoring via interpositione.g., stack inspection, inlined reference monitors

ISOMOD: Carleton 2006 – p.8/34

Page 12: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Direct InterpositionExecution monitoring via interposition:

System Call Denial

Monitor

Accepted System CallReference

Access Control Policy

System Call Request

Stack inspection [Wallach et al 2000]Guard code examines call chain leading to the request

to avoid Confused Deputy [Hardy 1988]

Problems:lack of declarative semanticsbrittle in the face of evolving system configurations• guard code hard-coded into system

ISOMOD: Carleton 2006 – p.9/34

Page 13: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Inlined Reference MonitorsInlined Reference Monitors [Erlingsson & Schneider 2000]

Guard code is weaved into untrusted code by a trusted binaryrewriter.

Rewriter

SecuredCode

UntrustedCode

SecurityPolicy

Binary

Pros:Policy maintained separately from system codeGood for evolving system configurations

Cons:Non-trivial run-time overhead[Wallach et al 2000, Erlingsson & Schneider 2000]

ISOMOD: Carleton 2006 – p.10/34

Page 14: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Question

Don’t always need full-fledged execution monitoringtracking of execution history is not always needed

Confused Deputy is not always the major concern

Can execution monitoring be complemented by aprotection mechanism with the following properties?

lightweight

declarative characterization

copes with evolving system configuration gracefully

ISOMOD: Carleton 2006 – p.11/34

Page 15: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Name Visibility ManagementIntuition If the name of a service isn’t visible then it can’t be

accessed.

⇒ Run untrusted code in a name space that enforces namevisibility policy

Name Visibility Policy

what names are visible

to whom they are visible

to what extent they are visible

Goal To investigate the degree to which name visibility managementcan serve the purpose of access control when full-fledgedexecution monitoring is not necessary.

ISOMOD: Carleton 2006 – p.12/34

Page 16: ISOMOD: A Module System for Isolating Untrusted Software Extensions

I SOM OD

A module system for Java that manages the visibilityof names in run-time name spaces

ISOMOD name visibility policies are:1. enforced at class loading time

⇒ no run-time overhead

2. declarative and separately maintained⇒ disentangled from core system code

3. expressive⇒ captures a rich family of access control policies

ISOMOD: Carleton 2006 – p.13/34

Page 17: ISOMOD: A Module System for Isolating Untrusted Software Extensions

The ISOM OD Architecture andPolicy Language

ISOMOD: Carleton 2006 – p.14/34

Page 18: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Delegation-Style Class Loading in Java

Import

Name Space

ChildName Space

Parent

class loader = run-time name space

name space partitioning

names from a parent name space are implicitlyimported into its child name spaces

ISOMOD: Carleton 2006 – p.15/34

Page 19: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Dynamically Extensible Systems

Import

Name Space

UntrustedExtensions

TrustedApp Core

ChildName Space

Parent

core application services are exposed to untrustedextensions via implicit import of names

ISOMOD: Carleton 2006 – p.16/34

Page 20: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Enter I SOM OD

IsoMod

Name Space

UntrustedExtensions

TrustedApp Core

ChildName Space

Import

Parent

ISOMOD is a custom class loader . . .

configured with user-defined name visibility policy

enforces visibility restrictions on:1. imported names2. locally defined names

ISOMOD: Carleton 2006 – p.17/34

Page 21: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Now You See It. . . Now You Don’t

Visibility control can be exercised to:1. control which locally defined class may “see” a

name, and2. present an alternative, restricted view of the entity

to which a name is bound.

ISOMOD: Carleton 2006 – p.18/34

Page 22: ISOMOD: A Module System for Isolating Untrusted Software Extensions

I SOM OD Policy

Scan classfile at load time to identify accesses

access = 〈subject , right , object〉

e.g., 〈method A.m, invoke, method B.n〉

A class is loaded into a name space only if its accesses aregranted by the policy of the name space.

An ISOMOD policy is a list of policy clauses:

O (grant |deny ) {r1, . . . , rk} [ to S ] [ (when |unless ) c ]

O and S may be universally quantified variables.

Condition c specifies a static relation between O and S.

ISOMOD: Carleton 2006 – p.19/34

Page 23: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Sample Applications

ISOMOD: Carleton 2006 – p.20/34

Page 24: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Sample Applications

1. Selective Hiding of System Services

2. Systematic Control of Reference Acquisition

3. Discretionary Capability Confinement

ISOMOD: Carleton 2006 – p.21/34

Page 25: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Selective Hiding of System Services (1)

Simulating the getClassLoader permission of theJava 2 platform:

class ClassLoader

method getParent

deny { invoke }method getSystemClassLoader

deny { invoke }class Class

method getClassLoader

deny { invoke }method forName(String,boolean,Classloader)

deny { invoke }

ISOMOD: Carleton 2006 – p.22/34

Page 26: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Selective Hiding of System Services (2)

Most BasicPermissions defined in Java 2 can besimulated by ISOMOD.

Finer-grained than BasicPermission:Example: What if we want to . . .

disallow the use of the Reflection API to invoke methods,access fields, and create class instances, butpermit the use of the Reflection API to examine classinterface

ISOMOD: Carleton 2006 – p.23/34

Page 27: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Systematic Control of Reference Acquisition (1)

Rethinking the getClassLoader permission . . .What if the Java API is changed in the next release?

What if a platform extension library is installed?

What if an evolving application core exposes more ways toleak ClassLoader references?

⇒ exhaustive code audit to avoid leaking ClassLoaderreferences.

▽ISOMOD: Carleton 2006 – p.24/34

Page 28: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Systematic Control of Reference Acquisition (1)

Rethinking the getClassLoader permission . . .What if the Java API is changed in the next release?

What if a platform extension library is installed?

What if an evolving application core exposes more ways toleak ClassLoader references?

⇒ exhaustive code audit to avoid leaking ClassLoaderreferences.

Bad!

ISOMOD: Carleton 2006 – p.24/34

Page 29: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Systematic Control of Reference Acquisition (2)

class C

deny { new, cast, catch }when subclass(C, ClassLoader)

field F

deny { get, put }when subclass(field-type(F ), ClassLoader)

method M

deny { invoke }when subclass(return-type(M ), ClassLoader)

method M

deny { invoke }when exists A in argument-types(M ) :

subclass(A, ClassLoader)

ISOMOD: Carleton 2006 – p.25/34

Page 30: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Discretionary Capability Confinement (1)Discretionary Capability Confinement (DCC) is astatic type system for modeling capabilities in theJVM bytecode language. [Pending submission]

Under mild conditions, DCC enforces classicalconfinement properties:

No TheftNo Leakage

The two properties have been formally verified in theframework of Featherweight JVM . [Under review]

DCC type rules can be completely encoded in aISOMOD policy.

ISOMOD: Carleton 2006 – p.26/34

Page 31: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Discretionary Capability Confinement (2)Intuition: A statically typed reference specifies apair:

〈handle, access rights〉

⇒ Capability!

Trust and capabilities :

subsumed−by

Domains B

C

trusts

Acapability−of

Confinement

Write “C ⊲ B” to denote “C trusts B.”

ISOMOD: Carleton 2006 – p.27/34

Page 32: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Discretionary Capability Confinement (3)(DCC1). Unless B ⊲ A, A shall not invoke a static method declared in B.

(DCC2). The sole means by which a domain acquires a capability is through argumentpassing.

(DCC3). If A.m invokes B.n, and C is the type of a formal parameter of n, thenC ⊲ B ∨ A ⊲⊳ B ∨ (B ⊲ m ∧ C ⊲ m).

(DCC4). A method m may invoke another method n only if n ⊲ m.

(DCC5). If A <: B then B ⊲ A.

(DCC6). Suppose B.n is overridden by B′.n′.

1. n′ ⊲ n.

2. If the method return type is C, then C ⊲ B ∨ B ⊲⊳ B′.

3. If C is the type of a formal parameter, then C ⊲ B′ ∨ B ⊲⊳ B′.

(DCC7). Suppose neither A ⊲ B nor B ⊲ A. If A′ <: A and B′ <: B, then neitherA′ ⊲ B′ nor B′ ⊲ A′.

ISOMOD: Carleton 2006 – p.28/34

Page 33: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Discretionary Capability Confinement (4)

(DCC3). If A.m invokes B.n, and C is the type of a formalparameter of n, then C ⊲ B ∨A ⊲⊳ B ∨ (B ⊲ m ∧C ⊲ m).

class B

method n

deny { invoke } to A.m

when for C in argument-types(n) :trusts(C, B) or(trusts(A, B) and trusts(B, A)) or(trusts(B, m) and trusts(C, m))

ISOMOD: Carleton 2006 – p.29/34

Page 34: ISOMOD: A Module System for Isolating Untrusted Software Extensions

On-going Work

ISOMOD: Carleton 2006 – p.30/34

Page 35: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Implementation ExperienceMaster’s student: Simon Orr

Pure Java implementation of ISOMOD class loaderTo be open-sourcedExtensive built-in predicates, functions andaccess rightsUser-defined predicates/functionsXML encoding of ISOMOD policiesOver 200 Java classesEncouraging performance figures

ISOMOD: Carleton 2006 – p.31/34

Page 36: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Enforcing Communication Integrity

Master’s student: Jason ZhangEnsuring untrusted software extensions conformto the architectural constraints of the applicationcore.Architectural constraints under consideration:1. Encapsulation policies [Schärli et al 2004]2. Module systems3. Software architectures: components, ports and connectors4. Layers, facade, etc

Idea: compiling a high-level architecturaldescription language into ISOMOD policies.

ISOMOD: Carleton 2006 – p.32/34

Page 37: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Summary

ISOMOD

Discretionary Capability Confinement

Featherweight JVM

Communication Integrity via ISOMOD

ISOMOD: Carleton 2006 – p.33/34

Page 38: ISOMOD: A Module System for Isolating Untrusted Software Extensions

Thank You

ISOMOD: Carleton 2006 – p.34/34