23
Secure Cooperative Sharing of JavaScript, Browser, and Physical Resources Benjamin Livshits UC Berkeley Leo Meyerovich, David Zhu

Secure Cooperative Sharing of JavaScript, Browser, and Physical Resources

  • Upload
    xanti

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Secure Cooperative Sharing of JavaScript, Browser, and Physical Resources. Leo Meyerovich , David Zhu. Benjamin Livshits. UC Berkeley. Web Application Security. l ipstick on a pig?. Not Your Mother’s Browser. browser kernels. JIT compilers. disk. jsvm , network , . - PowerPoint PPT Presentation

Citation preview

Page 1: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Secure Cooperative Sharing of JavaScript, Browser, and Physical Resources

Benjamin Livshits

UC Berkeley

Leo Meyerovich, David Zhu

Page 2: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Web Application Security

lipstick on a pig?

Page 3: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

JIT compilers

partitioned hardware

Not Your Mother’s Browserbrowser kernels

disk

jsvm, network, ...

Page 4: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Mashup Manifesto1. sharing requires control

2. sharing must be natural

3. sharing must be cheap

Page 5: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

1. <CoFrame src=http://gadget.com/page id=gadget 2. passthroughBrowser="html css js" 3. delegatePhysical=".1 cpu"/> ...4. var toggle = true; 5. delegateBrowser(“network”, gadget, "http://gadget.com", 6. function () { if (!toggle) throw ‘exn!’; }); 7. function getData() { 8. toggle = false; 9. return "profile data"; } 10. gadget.getData = getData; 11. aroundJS(gadget, getData, “execute”, 12. function proceed (continue) { return continue(); });

Page 6: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

JS Sharing with Cross-Principal Advice

function getData

Function.prototype

Alice Bob

__proto__

Page 7: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

JS Sharing with Cross-Principal Advice

function getData

Function.prototype

__proto__

Alice Bob

Page 8: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

JS Sharing with Cross-Principal Advice

function getData

Function.prototype

__proto__

function proceed

execute

function defaultDeny

Messagesexecuteset fld val get fldaddField fld valremoveField fld

Alice Bob

set, get, …aroundJS(Bob, getData, “execute”, function proceed (continue) { return continue(); })

function defaultDeny (continue) { throw ‘err’ }

Page 9: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

JS Sharing with Cross-Principal Advice

function getData

Function.prototype

__proto__

function proceed

execute

function defaultDeny

Messagesexecuteset fld val get fldaddField fld valremoveField fld

Alice Bob

set, …, get

Page 10: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

JS Sharing with Cross-Principal Advice

function getData

Function.prototype

__proto__

function proceed

execute

function defaultDeny

Messagesexecuteset fld val get fldaddField fld valremoveField fld

Alice Bob

execute, set, get, addField, removeField

set, …, get

Cornelia

set, …

Page 11: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

browser

Browser API Sharing with Non-Tampering Advice

facebook.com

gadget.com

gadget.com

delegateBrowser(“network”, gadget, "http://gadget.com", function () { if (!toggle) throw ‘exn!’; });

delegation: non-tampering advicefacebook.com

parser, DOM, CSS, ...

Page 12: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Physical Resource Sharing with ROS

disk

layout

render

layout

render

layout

render

… … …

Page 13: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Conclusion

• Abstractions for sharing browser, physical, and JavaScript resources

• Use the browser, OS/hardware, and language runtime

Page 14: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Mashup Manifesto1. sharing requires control

2. sharing must be natural

3. control must be cheap

Page 15: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Related Work

Physical Resource Sharing Resource Containers E Gazelle TessellationOS Chrome

JavaScript Sharing Caja MashupOS Object Views ConScript

Browser API Sharing OP Browser ConScript ServiceOS

Page 16: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

backup slides.

Page 17: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources
Page 18: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Sharing Browser APIs: Today

Facebook.comadvice

DOM (FFI)

Page 19: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

Sharing Browser APIs: Tomorrow

Facebook.com

DOM (FFI)

advice

browser

kernel

Page 20: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

The Times They Are A-Changin’method-based JIT

trace-based compilationstatic compilation

GPU rendering

parser generator

parallel layout

multicore CSS selectors

parallel parsing

hardware partitioning

hypervisor, microkernel,

browser JIT (C#, X86, …)

browser kernel

solver generator

Page 21: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

container.com

gadget.com

BROWSER

Page 22: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

container.com

gadget.com

gadget.com

BROWSER

gadgetfork

bomb!!!

YouTubepolicy?

Page 23: Secure Cooperative Sharing of  JavaScript, Browser, and Physical Resources

container.com

gadget.com

gadget.com

BROWSER

A New Hope