/
Extending the Extending the

Extending the - PowerPoint Presentation

trish-goza
trish-goza . @trish-goza
Follow
427 views
Uploaded On 2016-04-25

Extending the - PPT Presentation

Mashic Compiler Enforcing Security Policies in the Presence of Malicious Advertisements Jos é Fragoso Santos Equipe Project INDES INRIA Sophia Antipolis Méditerranée Combine data andor code from multiple origins ID: 292352

integrator gadget script security gadget integrator security script html listener proxy iframe var gadgets type object code dom page information function mashic

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Extending the" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Extending the

Mashic Compiler

Enforcing Security Policies in the Presence of Malicious Advertisements

José Fragoso SantosEquipe Project INDESINRIA Sophia Antipolis MéditerranéeSlide2

Combine

data and/or code from multiple origins

to create a

new service

Mashups...

GadgetsSlide3

Not all gadgets are equal

Two major types of gadgets

Gadgets that manipulate the integrator state directly

Gadgets that provide an interface for the integrator

Advertisements

External Services

Type I

Type IISlide4

Not all gadgets are equal

There are two major types of gadgets

Type I

Type II

Integrator.js

Gadget C

Integrator.js

Gadget C

Communication happens from the gadget to the integrator

Communication happens from the integrator to the gadgetSlide5

Type I –

A simple example

<html>

<head>

<title>Web Page with Simple Banner</title>

<script type=“text/

javascript

src

=“http://www.A.com/banner”/>

<script type=“text/

javascript

”>

… </script>

</head>

<body onload=“

iniatialize

()”> <h1>Page with Simple Banner</h1>

<div id=“bannerAd

”></div>

<textarea

>Write your remark here</textarea

>

<button onclick=“

btnFunction()”>Submit Remark!</button>

</body>

</html>

Integrator Code

function

updateBanner

(){

var

taArray

=

document.getElementsByTagName

("

textarea

");

var

str

= "";

for(

var

i

=0;

i

<

taArray.length

;

i

++)

str

+=

taArray

[

i

].value;

var

index =

isAbout

(

str

);

var

div =

document.getElementById

("

bannerAd

");

removeChildNodes

(div);

div.appendChild

(anchors[index]);

};

Gadget Code

The gadget is accessing integrator information that does not belong to him to select which ad to present

ADSlide6

Type II –

A simple example

<html>

<head>

<title>Google Maps Hello World</title>

<script type=“text/

javascript

src

=“http://maps.google.com/maps/api”/>

<script type=“text/

javascript

”>

var initialize = function() { …

} <script>

</head>

<body onload=“

iniatialize()”>

<h1>My Map</h1> <div id=“map”></div>

</body> </html>

Gadget Code

var

latlng

= new

google.maps.LatLng

(36, -76);

var

options = {

zoom: 12,

center:

latlng

,

mapTypeId:google.maps.MapTypeId.ROADMAP

};

var

mdiv

=

document.getElementById

("map");

var

map = new

google.maps.Map

(

mdiv

, options);

Integrator CodeSlide7

Including External Gadgets…

dom

integrator.html

Internal script that combines the external content

Gadget A

<script>

Gadget A

<script>

Integrator.js

<script>

External Code

Gadget C

<

iframe

>Slide8

Including External Gadgets…

dom

Gadget A

<script>

Gadget A

<script>

Integrator.js

<script>

<script> Tag

Gadget C

<

iframe

>

<

iframe

> Tag

“A page within a page”

integrator.htmlSlide9

<

iframe> versus <script>

dom

Gadget A

<script>

Gadget A

<script>

Integrator.js

<script>

Gadget C

<

iframe

>

Gadgets included using the script tag can

read/write

page information directly

Gadgets included within an

iframe

cannot access the external page directly

integrator.htmlSlide10

<script>:

Security Vulnerabilities

dom

Integrator.js

Gadget A

Gadget B

Gadget C

Gadgets included using the script tag can circumvent the integrator code!!!

integrator.htmlSlide11

<script>:

Security Vulnerabilities

dom

Integrator.js

Gadget A

Gadget B

Gadget C

Confidentiality

Integrity

integrator.htmlSlide12

<script>:

Security Vulnerabilities

External gadgets represent real threats to existing

mashups

!!!

“Readers of the New York Times were greeted with by an animated image of a fake virus scan”

“Members of Facebook were presented with ads deceptively portraying private images of their family and friends”

2009

These threats are

real!

External

gadgets

cannot

be

trusted

in

security

sensitive

mashupsSlide13

integrator.html

<

iframe> and PostMessage

dom

Gadget A

<script>

Gadget A

<script>

Integrator.js

<script>

Gadget C

<

iframe

>

PostMessage

Only strings can be passed between frames

integrator.html

Interframe

communication is asynchronousSlide14

Same Origin Policy

A script cannot read the content of a document from a different

ORIGIN

than the page that contains the script

dom

page

A

.html

src: www.

A

.com

Integrator

Gadget I

dom

page

B

.html

Gadget I

Integrator

src: www.

B

.com

Gadget I

www.

A

.com

Domain Name

App Layer Protocol

Port numberSlide15

Mashup Security Problem

Gadgets with the script tag

Gadgets with the iframe tag

Communication

Security

Security Issues

Communication

Programmers resign security for the sake of functionality!!!Slide16

Mashup

Isolation: a recipe

dom

integrator.html

Integrator.js

Gadget C

Proxy Interface

Part of the

dom

for gadget interaction

Gadget C

Listener Interface

iframe

Messages via

PostMessage

API

Attacks on

Javascript

Mashup

Communication

Adam Barth

and

Colin

Jackson

and

William Li

Web

2.0 Security and Privacy 2009Slide17

Mashup

Isolation:

A Recipe

dom

integrator.html

Integrator.js

Gadget C

Proxy Interface

Gadget C

Listener Interface

iframe

N1: A

N2

The gadget exposes function

f

and the integrator wants to compute

f

(A) and store its value on N2 whenever N3 is clicked

N3 is clicked

N3

Click!

The integrator reads the value stored in N1.

A

The integrator proxy marshals A as a string and invokes the respective function of the

gadget listener library.

m

A

The gadget listener function

demarshals

m

A

and invokes the appropriate gadget function. The integrator awaits blocked.

f(A) = B

The gadget listener function marshals B as a string and sends it to the integrator via

PostMessage

.

m

B

The integrator

demarshalls

B from

m

B

and updates node N2.

N2

B

N2: BSlide18

Mashic:

Automating Mashup Isolation

Automatically secure mashups

Correctness

and

Security

guarantees!

Goals

How?

Apply a

CPS transformation

to the

integrator code

Use

Opaque Object Handles (OOH)

Integrator can refer to objects that are defined inside the gadget...

An unique number associated with

an object in a frame.

Mashic

Compiler

Zhengqin

Luo

and

Tamara

Rezk

CSF 2012Slide19

Mashic:

Soundness and Security

Benign Gadget: Type II Gadget

Assumption

The compiled mashup preserves the original semantics

Theorem

Theorem

After

Mashic

compilation, the malicious gadget cannot read/write information belonging to the integrator.

Correcteness

SecuritySlide20

Extending Mashic

Challenge

Handle Type I Gadgets

How?

The same way the integrator is allowed to access the objects belonging to the gadget

Apply a

CPS transformation

to the gadget code

Use

Opaque Object Handles (OOH)

on the gadget side

Recalling…

Almost!Slide21

Supporting Type I Gadgets

Integrator.js

Gadget A

iframe

Page.html

Allow two-sided communication

Current

Mashic

Goal

Add proxy and listener libraries to both the gadget

iframe

and to the integrator code

Listener

Proxy

Listener

Proxy

Control the communication from the gadget to the integrator

Uncontrolled

ControlledSlide22

Controlling

Gadget – Integrator Com.

Integrator.js

Gadget A

iframe

Page.html

How?

Listener

Proxy

Listener

Proxy

Uncontrolled

Controlled

1

Establish a lattice of security levels

2

Assign a security level

to each integrator resource

4

Check all the gadget – integrator accesses at

runtime

3

Assign a security level to

each gadget

Confidentiality

Integrity

L

c

L

I

L

c

x

L

I

v

l

where

l

is

in

L

c

x

L

I

: Gadgets →

L

c

x

L

I

5

Track Information Flow in the integrator Slide23

Controlling

Gadget – Integrator Com.

Integrator.js

Gadget A

iframe

Page.html

The gadget wants to

acess

the property p of the object o

Listener

Proxy

Listener

Proxy

1

The gadget proxy library sends a request to the integrator listener library with the id of the object and the name of the property

{

o

id

,p

}

2

The integrator listener

checks if gadget C has permission to read property

p of object o

Γ

(o[p])|

C

<=

(

Gadget

A

)|

C

?

3

If yes, the integrator listener builds a response and sends

it to the gadget proxy

{4}Slide24

Tracking

IF in the Integrator

Keep track of the information that can be sent to each gadget!

Why?

Instrument

integrator code with IF

tracking

operations

Label

runtime

values

with

security

levels

How?

Because the integrator is

TRUSTED

!

Highly

DYNAMIC

approach

!

Slide25

Labeling

Runtime Values

Information

Flow

Security

for a Core

of

JavaScript

Daniel

Hedin

and

Andrei

Sabelfeld

CSF 2012

Original

Object

Runtime

Labeling

p

1

: v

1

p

2

: v

2

p

3

: v

3

p

n

:

v

n

Labeled

Object

p

1

: v

1

p

2

: v

2

p

3

: v

3

p

n

:

v

n

l

1

: l

1

l

2

: l

2

l

3

: l

3

l

n

:

l

n

l

o

: l

Stubs

Original

Properties

of

the

object

and

respective

values

Security

Level

of

the

object

Security

levels

of

the

object

properties

Stubs

to

mediate

the

interaction

with

the

labeled

objectSlide26

Expressing Security Policies

AdJail

: Practical Enforcement of Confidentiality…

Mike

Ter

Louw

et al

USENIX Security Symposium 2010

The

programmer

has

to

specify

the

security

level

of

each

integrator

resource

1

Label the original

dom

in a separate configuration file

dom

2

Label values that occur directly in integrator code

Object

Literals

and

priimitive

values

var

names

= {P1: “

vader

”, P2: “

luke

”};

var

secretPins

= {P1: “

father

”, P2: “force”};

var

names

= {P1: “

vader

”, P2: “

luke

”};

var

secretPins

=

new

ObjEnv

(

{P1: “

father

”, P2: “force”},

{P1: “

secret

”, P2: “

secret

”},

secret

”);

3

Label other sources/sinks of information

XmlHTTPRequest

…Slide27

Integrator

Instrumentation

Source Integrator Code

if(x) {

y = y + x;

} else {

alert(“hello world”)

}

Source Integrator Code

if(

x.value

)

{

l

pc

=

x.level

˅

l

pc

;

y.value

=

y.value

+

x.value

;

y.level

=

x.level

˅

y.level

˅

l

pc

;

} else {

alert(“hello world”)

}

On-the-fly Inlining of Dynamic

Security

Monitors

Jonas

Magazinius

,

Alejandro

Russo,

Andrei

Sabelfeld

COSE 2011

IFlow

TrackerSlide28

Tracking

IFlow

Why track information flow

dynamically

instead of

statically

enforcing a pre-established policy?

Javascript is TOO dynamic!!!

function f(x)

{

if(h) {

eval

(“

var

l”);

}

l = 0

}

var

l = 1;

f(3)

Abstruse scoping rules

if(h) {

g = function() { l = 1};

} else {

g = function() { l = 0};

}

Higher order functions

var

x = f();

if(h) { o[x] = 0 }

Dynamic properties

And MANY

MANY

more…Slide29

Ext Mashic:

Soundness and Security

Benign Gadget: A gadget that only tries to access integrator information compatible with its security level

Assumption

The compiled mashup preserves the original semantics

Theorem

Theorem

After

Mashic

compilation, the malicious gadget can only read/write integrator information compatible with its security level.

Correcteness

SecuritySlide30

Controlling

Integrator – Gadget Com.

Integrator.js

Gadget A

iframe

Page.html

Communication Integrator-Gadget is not verified

Listener

Proxy

Listener

Proxy

Uncontrolled

Controlled

Why?

Because the gadget is trusted!

However…

The programmer can make mistakes

The integrator can

declassify/endorse

whatever he wants

A model for delimited information

release

Andrei

Sabelfeld

and Andrew Meyers

ISSS 2003Slide31

Controlling

Integrator – Gadget Com.

Integrator.js

Gadget A

iframe

Page.html

The integrator wants to invoke gadget function f with

arg

o.p

Listener

Proxy

Listener

Proxy

1

The integrator proxy library verifies if the argument o can be seen by the gadget

{v}

Γ

(o,p)|

C

<=

(

Gadget

A

)|

C

?

{

o

id

, f}

2

If it can the integrator proxy

constroys

a message with the identifier of the object and the name of the function to invoke and sends it to the gadget

iframe

3

After computing f(o) the gadget sends the result value to the integrator

4

Upon receiving v the integrator

encapsules

it in an envelop with the security level of gadget A

Γ

(v) :

=

(

Gadget

A

)

Slide32

Conclusions – Our Goals

Type

II

Integrator.js

Gadget C

Type I

Integrator.js

Gadget C

Provide a solution for Web Ads based on

Mashic

1

Browser Independent

2

To be applied to existing

mashups

3

Correctness

and

Security

guaranteesSlide33

Related Work

IFlow

in JS

IFlow

Secure

Mashups

IF

Secuirity

for Core JS

Hedin

et

al

, CSF’12

Staged

Iflow

for

Js

Jhala

et

al

, PLDI’09

Efficient

Purely-Dynamic IF

Analysis Flanagan et al

, PLAS’09

An

Empirical Study of Privacy-Violating

Information

Flows in JavaScript Web

Applications

Jang

et al

, CCS’10

A

model

for

delimited

Information

release

Sabelfed

et

al

, ISSS’03

On-the-fly

inlining

of

dynamic

Security

monitors

Magazinius

et

al

, COSE’11

AdJail

Pratical

Enforcement

of

Confidentiality

and

Integrity

Policies

Louw

et

al

, USENIX’10 AdSafety – Type Based

Verification of

JS

SandBoxing Politz

et al, USENIX’11 Mashic

: Automated Mashup

Sandboxing

Luo et

al

, CSF’12

Slide34

Thank you!