Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214...

42
Tel +41 55-214 41 60 Fax +41 55-214 41 61 [email protected] www.csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640 Rapperswil Bypassing Same Origin Policy Simon Egli, IT Security Analyst

Transcript of Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214...

Page 1: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

Tel +41 55-214 41 60Fax +41 55-214 41 [email protected] www.csnc.ch

Compass Security AGGlärnischstrasse 7Postfach 1628CH-8640 Rapperswil

Bypassing Same Origin Policy

Simon Egli, IT Security Analyst

Page 2: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 2www.csnc.ch

Page 3: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 3www.csnc.ch

Page 4: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 4www.csnc.ch

Page 5: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 5www.csnc.ch

Page 6: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 6www.csnc.ch

E-Banking

Page 7: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 7www.csnc.ch

Why?Separated Content

Restricted DOM Access

Access to Cookies

Page 8: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 8www.csnc.chSam

e O

rig

in P

olic

yS

am

e O

rig

in P

olicy

Same Origin Policy Same Origin Policy

Page 9: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 9www.csnc.ch

19901st Web Server1st Web Site1st Web Browser

Page 10: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 10www.csnc.ch

Page 11: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 11www.csnc.ch

1995

Page 12: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 12www.csnc.ch

1996JavaScriptSame Origin PolicyNetscape Navigator 2.0

Page 13: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 13www.csnc.ch

2003Web 2.0

think Web 2.0 is of course a piece of jargon, nobody evenknows what it means Tim Berners-Lee

Page 14: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 14www.csnc.ch

Page 15: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 15www.csnc.ch

1996

1998

1999

2001

2004

2005

2006

Page 16: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 16www.csnc.ch

Same Origin Policy

Page 17: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 17www.csnc.ch

Same Origin Followers

Restricted access to Cookies / DOM for: Java Script

XMLHttpRequest (XHR)

Adobe Flash

Java Applet

Microsoft Silverlight

ActiveX

Browser Extensions & Plugins

Page 18: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 18www.csnc.ch

Page 19: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 19www.csnc.ch

XMLHttpRequest (XHR)

Background HTTP requests from JavaScript

Invented by Microsoft in 2000 (Internet Explorer 5)

IE 5/6: COM/ActiveX object Microsoft.XmlHttp

IE 7, Firefox, Opera, Safari and other browsers:Native JavaScript object XmlHttpRequest

Page 20: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 20www.csnc.ch

XMLHttpRequest (XHR)

XMLHttpRequest

Page 21: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 21www.csnc.ch

And AJAX / XMLHttpRequest?

Non-origin requests are

not supported with XHR

var xmlHttp = new XMLHttpRequest();

var url = 'http://www.other.com/res/pub-data/';

function callOtherDomain(){

if(xmlHttp) {

xmlHttp.open('GET', url, true);

xmlHttp.onreadystatechange = handler;

xmlHttp.send();

}

www.other.com www.origin.com

Page 22: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 22www.csnc.ch

Use Script from 3rd Party

JavaScript from 3rd party site IS

GENERALLY DENIED to access

the origin cookie because of the

SAME ORIGIN POLICY

3rd party site Origin site

Page 23: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 23www.csnc.ch

Origin Determination Rule

= Protokoll (http/https)

+ Host (www.csnc.ch)

+ Port (:80)

Page 24: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 24www.csnc.ch

Origin Example

Referenz URL: http://www.csnc.ch/de/index.html

1. http://www.csnc.ch/en/index.html

2. https://www.csnc.ch/de/index.html

3. http://csnc.ch/de/index.html

4. http://v1.www.csnc.ch/de/index.html

s

v1

Page 25: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 25www.csnc.ch

By-passing SOP?

Page 26: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 26www.csnc.ch

Why by-passing SOP?

www.mashup.com

Page 27: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 27www.csnc.ch

Why by-passing SOP?

www.mashup.com

Page 28: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 28www.csnc.ch

Use Script from 3rd Party

JavaScript from 3rd party site

IS ALLOWED to access the

origin cookie, if the script is

loaded from the origin site

with <script src=>

<script src=http://3rdpartysite/m.js>

3rd party site Origin site

Page 29: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 29www.csnc.ch

Example Google Analytics

Page 30: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

Tel +41 55-214 41 60Fax +41 55-214 41 [email protected] www.csnc.ch

Compass Security AGGlärnischstrasse 7Postfach 1628CH-8640 Rapperswil

A New Solution is Required!

You will loose control andauthority of your domain if youuse <script src tags!

Page 31: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 31www.csnc.ch

Cross-Origin Resource Sharing

CORS, a W3C Working Draft - 27 July 2010

Page 32: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 32www.csnc.ch

CORS Compatibility

XMLHttpRequest (XHR) XDomainRequest (XDR)

v3.5

V4.0

v2.0V8.0

Page 33: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 33www.csnc.ch

CORS Simple Request

var xmlHttp = new XMLHttpRequest();

var url = 'http://www.other.com/res/pub-data/';

function callOtherDomain(){

if(xmlHttp) {

xmlHttp.open('GET', url, true);

xmlHttp.onreadystatechange = handler;

xmlHttp.send();

}

www.other.com www.origin.com

Page 34: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 34www.csnc.ch

Simple Request ExampleClient Request:GET /resources/public-data/ HTTP/1.1Host: bar.otherUser-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre)Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Connection: keep-aliveReferer: http://foo.example/examples/access-control/simpleXSInvocation.htmlOrigin: http://foo.example

#1 Example Server Response:HTTP/1.1 200 OKDate: Mon, 01 Dec 2008 00:23:53 GMTServer: Apache/2.0.61 Access-Control-Allow-Origin: *Keep-Alive: timeout=2, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: application/xml

[XML Data]

#2 Example Server Response:HTTP/1.1 200 OKDate: Mon, 01 Dec 2008 00:23:53 GMTServer: Apache/2.0.61 Access-Control-Allow-Origin: http://foo.exampleKeep-Alive: timeout=2, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: application/xml

[XML Data]

Page 35: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 35www.csnc.ch

CORS Preflighted Request Example

www.other.com www.origin.com

1.) OPTIONS Request2.) GET / POST Request3.) Server sends data

1.

2.3.

Page 36: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 36www.csnc.ch

CORS Request with credentials

var xmlHttp = new XMLHttpRequest();

var url = 'http://www.other.com/res/pub-data/';

function callOtherDomain(){

if(xmlHttp) {

xmlHttp.open('GET', url, true);

xmlHttp.withCredentials = "true";

xmlHttp.onreadystatechange = handler;

xmlHttp.send();

}

www.other.com www.origin.com

Page 37: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 37www.csnc.ch

Request with CredentialsClient Request:GET /resources/public-data/ HTTP/1.1Host: bar.otherUser-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre)Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Connection: keep-aliveReferer: http://foo.example/examples/access-control/simpleXSInvocation.htmlOrigin: http://foo.exampleCookie: pageAccess=2

Server Response:HTTP/1.1 200 OKDate: Mon, 01 Dec 2008 00:23:53 GMTServer: Apache/2.0.61 Access-Control-Allow-Origin: http://foo.exampleAccess-Control-Allow-Credentials: trueKeep-Alive: timeout=2, max=100Connection: Keep-AliveContent-Type: application/xml

[XML Data]

Page 38: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 38www.csnc.ch

Mitigation

Page 39: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 39www.csnc.ch

Mitigation

CORS allowes to load cross-domain data from foreign domains

Server decides which origin is allowed to access the data

Separate critical / non-critical applications into different subdomains E.g. http://app1.mybank.com / http://app2.mybank.com

Host third-party scripts by yourself or trust the source

Load third-party scripts via local proxy

Cross origin resource sharing (CORS) Fully supported (XMLHttpRequest) by Firefox 3.5, Safari 4, Google Chrome 2

Proprietary implemented (XDomainRequest) by Internet Explorer 8

Page 40: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 40www.csnc.ch

Q/A Session

Page 41: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 41www.csnc.ch

Vielen Dank

Page 42: Bypassing Same Origin Policy - Hacking-Lab · 2010. 9. 7. · Tel +41 55-214 41 60 Fax +41 55-214 41 61 team@csnc.ch Compass Security AG Glärnischstrasse 7 Postfach 1628 CH-8640

© Compass Security AG Slide 42www.csnc.ch

References / Further Links

http://code.google.com/p/browsersec/w/list

http://www.w3.org/TR/cors/

https://developer.mozilla.org/En/HTTP_Access_Control

http://msdn.microsoft.com/en-us/library/cc709423(VS.85).aspx

http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/

http://www.nczonline.net/blog/2008/04/27/cross-domain-xhr-removed-from-firefox-3/