Top Banner
Jed Liu Andrew C. Myers 3 rd Conference on Principles of Security and Trust 7 April 2014 Defining and Enforcing Referential Security
32

Defining and Enforcing Referential Security

Mar 23, 2016

Download

Documents

saskia

Defining and Enforcing Referential Security. Referential security. Distributed systems span multiple trust domains Natural to have cross-domain references e.g., hyperlinks (web), foreign keys (DBs), CORBA, RMI, JPA+JTA, Fabric. Referential security. - PowerPoint PPT Presentation
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: Defining and Enforcing Referential Security

Jed Liu Andrew C. Myers

3rd Conference on Principles of Security and Trust7 April 2014

Defining and EnforcingReferential Security

Page 2: Defining and Enforcing Referential Security

Referential security• Distributed systems span multiple

trust domains• Natural to have cross-domain

references– e.g., hyperlinks (web), foreign keys

(DBs),CORBA, RMI, JPA+JTA, Fabric

Jed Liu – Defining and Enforcing Referential Security

Page 3: Defining and Enforcing Referential Security

Referential security• Distributed systems span multiple

trust domains• Natural to have cross-domain

references– e.g., hyperlinks (web), foreign keys

(DBs),CORBA, RMI, JPA+JTA, Fabric

• Problem: references introduce dependencies– Can create security & reliability

vulnerabilities• New class of referential security

vulnerabilities• First step towards programming

model for writing code without these vulnerabilities

Jed Liu – Defining and Enforcing Referential Security

Page 4: Defining and Enforcing Referential Security

Referential security• Distributed systems span multiple

trust domains• Natural to have cross-domain

references– e.g., hyperlinks (web), JPA+JTA

(distributed DBs)• Problem: references introduce

dependencies– Can create security & reliability

vulnerabilitiesJed Liu – Defining and Enforcing Referential Security

Contributions• Formalized three referential security goals• Static analysis (type system) to enforce them• Soundness proof

Page 5: Defining and Enforcing Referential Security

Directory example

Jed Liu – Defining and Enforcing Referential Security

A Balice

Lyon

bob

docs photos docs photos

Page 6: Defining and Enforcing Referential Security

Referential integrity

Jed Liu – Defining and Enforcing Referential Security

Referential security goals1.Ensure referential integrity

A Balice bob

docs photos docs

?

Page 7: Defining and Enforcing Referential Security

Referential integrity

Jed Liu – Defining and Enforcing Referential Security

• Known to be important (e.g., Java, databases)• Not universal (e.g., web “404” errors)

A double-edged sword• Enforcing referential

integritycreates other security vulnerabilities

Page 8: Defining and Enforcing Referential Security

Accidental persistence

Jed Liu – Defining and Enforcing Referential Security

1.Ensure referential integrity2.Prevent accidental persistence

Referential security goals

Aalice

docs photos

1GB

1GB

1GB

1GB

summary

Page 9: Defining and Enforcing Referential Security

Storage attacks

Jed Liu – Defining and Enforcing Referential Security

Referential security goals

A

1GB

1GB

1.Ensure referential integrity2.Prevent accidental persistence3.Prevent storage attacks

alice

docs photos

1GB

1GB

Page 10: Defining and Enforcing Referential Security

A framework for referential security• Static analysis for enforcing

referential security:

• Presented as type system of λpersist language

• λpersist extends λ with:– objects (mutable records)– references (immutable references to

records)Jed Liu – Defining and Enforcing Referential Security

1.Ensure referential integrity2.Prevent accidental persistence3.Prevent storage attacks

Page 11: Defining and Enforcing Referential Security

Preventing accidental persistence• Persist by policy, not by reachability• Each object has a

persistence policy p

policylevels

persistent

transient

Jed Liu – Defining and Enforcing Referential Security

1.Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

Page 12: Defining and Enforcing Referential Security

Preventing accidental persistence• Persist by policy, not by reachability• Each object has a

persistence policy p

policylevels

⊤ =

= {alice,bob}

{alice} {bob}

Node-set interpretation:Who can delete object?

1.Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

Jed Liu – Defining and Enforcing Referential Security

Page 13: Defining and Enforcing Referential Security

Ensuring referential integrity• Type system ensures all persistence

failures are handled

– Factors out failure-handling codetry e1 catch p: e2

Jed Liu – Defining and Enforcing Referential Security

Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

policylevels

⊤ =

= {alice,bob}

{alice} {bob}

Who can delete object?

Page 14: Defining and Enforcing Referential Security

Ensuring referential integrity• Type system ensures all persistence

failures are handled

– Factors out failure-handling code• Typing judgement:

– H = failures handled by context– X = possible failures produced by e– Invariant: X H

try e1 catch p: e2

Jed Liu – Defining and Enforcing Referential Security

Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

policylevels

⊤ =

= {alice,bob}

{alice} {bob}

Who can delete object?

Page 15: Defining and Enforcing Referential Security

Directory example

policylevels

⊤ =

= {alice,bob}

{alice} {bob}

Who can delete object?

A

p = {alice}

B

p = {bob}

alice

Lyon

bob

docs photos docs photos

• Programs must be ready to handle failure:

Jed Liu – Defining and Enforcing Referential Security

try Lyon.show () catch bob: … Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

Page 16: Defining and Enforcing Referential Security

Directory example

Jed Liu – Defining and Enforcing Referential Security

Who is the adversary?Alice? Bob? Someone else?

Page 17: Defining and Enforcing Referential Security

• Assume adversary controls some nodes in system

• Adversary modelled as a point a on lattice– Cannot affect objects having policies at

or above a

Modelling the adversary

a = {alice, bob}

{chuck}

⊤ =

= {alice, bob, chuck}

{bob}

{bob, chuck}

{alice}

{alice, chuck}

Node-set interpretation:a = set of nodes not controlled

by adversary

Jed Liu – Defining and Enforcing Referential Security

Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

Adversary cannot affect

Page 18: Defining and Enforcing Referential Security

Preventing storage attacks• Each object has a creation

authority policy a– Authority policy for short– Restricts ability to create new refs– Taken from same lattice as

persistence policies

policylevels

no one can create ref

anyone can create refJed Liu – Defining and Enforcing Referential Security

Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

Page 19: Defining and Enforcing Referential Security

Preventing storage attacks• Each object has a creation

authority policy a– Authority policy for short– Restricts ability to create new refs– Taken from same lattice as

persistence policies

policylevels

⊤ =

= {alice,bob}

{alice} {bob}

Node-set interpretation:Who can create reference?

Jed Liu – Defining and Enforcing Referential Security

Ensure referential integrity Prevent accidental persistence3.Prevent storage attacks

Page 20: Defining and Enforcing Referential Security

Preventing storage attacks• Each object has a creation

authority policy a– Authority policy for short– Restricts ability to create new refs– Taken from same lattice as

persistence policies• What if you don’t have authority?

– (Hard) References have referential integrity,require authority

– Soft references do not

policylevels

⊤ =

= {alice,bob}

{alice} {bob}

Host-set interpretation:Who can create reference?

Jed Liu – Defining and Enforcing Referential Security

Ensure referential integrity Prevent accidental persistence Prevent storage attacks

Page 21: Defining and Enforcing Referential Security

Example

Jed Liu – Defining and Enforcing Referential Security

hard refsoft ref

A

p = {alice}

B

p = {bob}

itinerary

a = {alice,bob}

alice

a = {alice}

Lyon

a = {bob}

bob

a = {bob}docs

a = {alice}

photos

a = {alice}

docs

a = {bob}

photos

a = {bob} policylevels

⊤ =

= {alice,bob}

{alice} {bob}

Who can create reference?

Page 22: Defining and Enforcing Referential Security

Integrity• Adversary controls some nodes

– Can modify some objects affect program state

– Can affect decision to create references

• To enforce authority, type system tracks:– Integrity of values– Integrity of control flow

• pc bounds authority of references created by e

Jed Liu – Defining and Enforcing Referential Security

if L then x.f = o

Page 23: Defining and Enforcing Referential Security

Policies on reference types• Reference types have policies too

– Persistence policy • Lower bound on persistence of referent• Ensures persistence failures are handled

when using ref– Authority policy

• Upper bound on authority required by referent

• Prevents storage attacks: need authority to copy ref

• Subtyping contravariant on , covariant on

Jed Liu – Defining and Enforcing Referential Security

Page 24: Defining and Enforcing Referential Security

lpersist

• soft e – creates soft ref out of hard ref• exists v as x: e1 else e2

– checks whether soft ref still valid(if yes, promotes to hard ref)

• try e1 catch p: e2 – persistence-failure handler

Jed Liu – Defining and Enforcing Referential Security

Page 25: Defining and Enforcing Referential Security

lpersist

• Operational semantics– Machine configuration: <e, M>

– Small step: <e1, M1> <e2, M2>• Includes model of garbage collector

partially evaluated programprogram memory• maps typed locations mS to recordsor to if deleted

Jed Liu – Defining and Enforcing Referential Security

Page 26: Defining and Enforcing Referential Security

Power of the adversary• Between program steps, adversary can

arbitrarily:– Create new objects

• Objects must have low integrity & low persistence

– Assign into low-integrity fields– Delete low-persistence objects

• Matches assumption: adversary has total control over its nodes

Jed Liu – Defining and Enforcing Referential Security

Page 27: Defining and Enforcing Referential Security

Proving referential security• Idea: execution with adversary

should be “equivalent” to execution without adversary

• But memory locations may not match up– Relate traces using homomorphism f on

typed locationsProperties of f• Partial• Injective• Type-preserving• Isomorphic when restricted to:

– high-integrity locations– high-persistence locations– high-integrity locations

– high-persistence locations

with adversary without adversaryf

Jed Liu – Defining and Enforcing Referential Security

Page 28: Defining and Enforcing Referential Security

Security relation• For expressions:

– Expressions are equivalent when locations are transformed by f

Jed Liu – Defining and Enforcing Referential Security

Page 29: Defining and Enforcing Referential Security

Security relation• For expressions:

– Expressions are equivalent when locations are transformed by f

• For memories:

m1

m2

f(m1) f( )

f(m2) where m2 is high-authorityand high-persistence

with adversary without adversary

where m1 is mapped by f

Jed Liu – Defining and Enforcing Referential Security

Page 30: Defining and Enforcing Referential Security

Referential security• Theorem:

Security relation is preserved by computation

(assuming ei well-typed and certain well-formedness conditions)

• Lemma: Adversary cannot cause more high-authority locations to become non-collectible

<e1, M1> <e’1, M’1>a

<e2, M2> <e’2, M’2>*

f,a f’,awith adversary

without adversary

Jed Liu – Defining and Enforcing Referential Security

Page 31: Defining and Enforcing Referential Security

Related work• System mechanisms (orthogonal to lang.

model)– e.g., improving referential integrity of hyperlinks

• Liblit & Aiken– Type system for distributed data structs (no

security)• Riely & Hennessey

– Type safety in distributed system w/ partial trust• Chugh et al.

– Dynamically loading untrusted JavaScript• Information flow: non-interference

Jed Liu – Defining and Enforcing Referential Security

Page 32: Defining and Enforcing Referential Security

Defining and EnforcingReferential Security

Jed Liu Andrew C. Myers

Referential security goals1.Ensure referential integrity2.Prevent accidental persistence3.Prevent storage attacks

lpersist