web application security issues - world wide web consortium (w3c)

94
Web Application Security Issues

Upload: others

Post on 12-Sep-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web Application Security Issues - World Wide Web Consortium (W3C)

Web Application Security Issues

Page 2: Web Application Security Issues - World Wide Web Consortium (W3C)

What happens when people start building security critical applications on top ofHTML+CSS+JavaScript?

Page 3: Web Application Security Issues - World Wide Web Consortium (W3C)

What can we learn from that for the technologies that we design?

Page 4: Web Application Security Issues - World Wide Web Consortium (W3C)

1. Widgets

2. Mash-ups

Page 5: Web Application Security Issues - World Wide Web Consortium (W3C)

<1>Widgets

Page 6: Web Application Security Issues - World Wide Web Consortium (W3C)

e.g., MacOS Dashboard

Page 7: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 8: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 9: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 10: Web Application Security Issues - World Wide Web Consortium (W3C)

convenientsafe

secure

Page 11: Web Application Security Issues - World Wide Web Consortium (W3C)

convenientsafe

secureFAIL

Page 12: Web Application Security Issues - World Wide Web Consortium (W3C)

http://flickr.com/photos/good-karma/571971015/

Page 13: Web Application Security Issues - World Wide Web Consortium (W3C)

XMLHttpRequest

to any destinationwith cookies

Page 14: Web Application Security Issues - World Wide Web Consortium (W3C)

widget.system

arbitrary shell scripts

Page 15: Web Application Security Issues - World Wide Web Consortium (W3C)

Widget plugins: Extending what

JavaScript can do.

Page 16: Web Application Security Issues - World Wide Web Consortium (W3C)

A Widget can control your system.

Page 17: Web Application Security Issues - World Wide Web Consortium (W3C)

Your system’s security depends on the correctness of JavaScript code.

Page 18: Web Application Security Issues - World Wide Web Consortium (W3C)

Attacker’s goal:Control the Widget’s

DOM.

Page 19: Web Application Security Issues - World Wide Web Consortium (W3C)

Controlling the DOM means executing arbitrary code.

Page 20: Web Application Security Issues - World Wide Web Consortium (W3C)

Code Quality?

Page 21: Web Application Security Issues - World Wide Web Consortium (W3C)

Parsing a number.

Page 22: Web Application Security Issues - World Wide Web Consortium (W3C)

featured download in January 2008

Page 23: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 24: Web Application Security Issues - World Wide Web Consortium (W3C)

update checks: JSON

Page 25: Web Application Security Issues - World Wide Web Consortium (W3C)

JavaScript Object

Notation

Page 26: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 27: Web Application Security Issues - World Wide Web Consortium (W3C)

this._checkVersion (transport. responseText. evalJSON());

Page 28: Web Application Security Issues - World Wide Web Consortium (W3C)

sanity checks turned off by

default

Page 29: Web Application Security Issues - World Wide Web Consortium (W3C)

eval()

Page 30: Web Application Security Issues - World Wide Web Consortium (W3C)

this._checkVersion (transport. responseText. evalJSON());

Page 31: Web Application Security Issues - World Wide Web Consortium (W3C)

Executing arbitrary code retrieved through HTTP.

Page 32: Web Application Security Issues - World Wide Web Consortium (W3C)

Executing arbitrary code retrieved through HTTP.FAIL

Page 33: Web Application Security Issues - World Wide Web Consortium (W3C)

Writing a string to the

user interface.

Page 34: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 35: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 36: Web Application Security Issues - World Wide Web Consortium (W3C)

privileged

Page 37: Web Application Security Issues - World Wide Web Consortium (W3C)

.innerHTML

Page 38: Web Application Security Issues - World Wide Web Consortium (W3C)

Script injection through e-mail

possible.

Page 39: Web Application Security Issues - World Wide Web Consortium (W3C)

Just put HTML into a Subject.

Page 40: Web Application Security Issues - World Wide Web Consortium (W3C)

Script injection through e-mail

possible.FAIL

Page 41: Web Application Security Issues - World Wide Web Consortium (W3C)

Code Quality?

Page 42: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 43: Web Application Security Issues - World Wide Web Consortium (W3C)

Code Quality?FAIL

Page 44: Web Application Security Issues - World Wide Web Consortium (W3C)

Widgets enable

creativity

Page 45: Web Application Security Issues - World Wide Web Consortium (W3C)

Widgets enable

creativityGOOD!

Page 46: Web Application Security Issues - World Wide Web Consortium (W3C)

But: We need security

despite bad code quality.

Page 47: Web Application Security Issues - World Wide Web Consortium (W3C)

What do APIs invite

programmers to do?

Page 48: Web Application Security Issues - World Wide Web Consortium (W3C)

<2>Mash-ups

Page 49: Web Application Security Issues - World Wide Web Consortium (W3C)

Client-side code processes confidential

data.

Page 50: Web Application Security Issues - World Wide Web Consortium (W3C)

http://flickr.com/photos/onaliencinema/298243188/http://flickr.com/photos/nickdawson/1484934955/

Page 51: Web Application Security Issues - World Wide Web Consortium (W3C)

http://flickr.com/photos/onaliencinema/298243188/http://flickr.com/photos/nickdawson/1484934955/

Page 52: Web Application Security Issues - World Wide Web Consortium (W3C)

http://flickr.com/photos/mwboeckmann/2313632431/

Page 53: Web Application Security Issues - World Wide Web Consortium (W3C)

<script>XMLHttpRequest

JSONRequestXDomainRequest

postMessage

Page 54: Web Application Security Issues - World Wide Web Consortium (W3C)

<script src=”http://good.foo/...”/>

<script src=”http://evil.foo/...”/>

Page 55: Web Application Security Issues - World Wide Web Consortium (W3C)

two sitesone DOM

Page 56: Web Application Security Issues - World Wide Web Consortium (W3C)

widely popular!

Page 57: Web Application Security Issues - World Wide Web Consortium (W3C)

<script src=”http://good.foo/...”/>

<script src=”http://evil.foo/...”/>FAIL

Page 58: Web Application Security Issues - World Wide Web Consortium (W3C)

XMLHttpRequest

place HTTP requests from browser-side

code

Page 59: Web Application Security Issues - World Wide Web Consortium (W3C)

cross-site requests:XMLHttpReq’ Level 2

access-control

Page 60: Web Application Security Issues - World Wide Web Consortium (W3C)

XML data

responseXML

Page 61: Web Application Security Issues - World Wide Web Consortium (W3C)

non-XML formats?

Page 62: Web Application Security Issues - World Wide Web Consortium (W3C)

responseTextresponseBody

Page 63: Web Application Security Issues - World Wide Web Consortium (W3C)

responseTextresponseBody

raw data!

Page 64: Web Application Security Issues - World Wide Web Consortium (W3C)

non-XML formats?FAIL

Page 65: Web Application Security Issues - World Wide Web Consortium (W3C)

JSONRequest

place HTTP request from client-side code

Page 66: Web Application Security Issues - World Wide Web Consortium (W3C)

application/jsonrequest

Page 67: Web Application Security Issues - World Wide Web Consortium (W3C)

anonymous

Page 68: Web Application Security Issues - World Wide Web Consortium (W3C)

GETPOST

Page 69: Web Application Security Issues - World Wide Web Consortium (W3C)

API: object is passed to call-back function.

Page 70: Web Application Security Issues - World Wide Web Consortium (W3C)

advanced RESTful APIs?

Page 71: Web Application Security Issues - World Wide Web Consortium (W3C)

advanced RESTful APIs?FAIL

Page 72: Web Application Security Issues - World Wide Web Consortium (W3C)

XDomainRequest

cross-site HTTP requests

Page 73: Web Application Security Issues - World Wide Web Consortium (W3C)

anonymous

Page 74: Web Application Security Issues - World Wide Web Consortium (W3C)

GETPOST

Page 75: Web Application Security Issues - World Wide Web Consortium (W3C)

advanced RESTful APIs?FAIL

Page 76: Web Application Security Issues - World Wide Web Consortium (W3C)

text/plain only

API string-based

Page 77: Web Application Security Issues - World Wide Web Consortium (W3C)

invites eval+JSON

Page 78: Web Application Security Issues - World Wide Web Consortium (W3C)

two sitesone DOM

Page 79: Web Application Security Issues - World Wide Web Consortium (W3C)

invites eval+JSONFAIL

Page 80: Web Application Security Issues - World Wide Web Consortium (W3C)

postMessage

cross-window communication

Page 81: Web Application Security Issues - World Wide Web Consortium (W3C)

cause a “message” event in another DOM

Page 82: Web Application Security Issues - World Wide Web Consortium (W3C)

“just strings”

Page 83: Web Application Security Issues - World Wide Web Consortium (W3C)

how about structured data?

Page 84: Web Application Security Issues - World Wide Web Consortium (W3C)

invites eval+JSON

Page 85: Web Application Security Issues - World Wide Web Consortium (W3C)

two sitesone DOM

Page 86: Web Application Security Issues - World Wide Web Consortium (W3C)

invites eval+JSONFAIL

Page 87: Web Application Security Issues - World Wide Web Consortium (W3C)

The good news: probably fixable

Page 88: Web Application Security Issues - World Wide Web Consortium (W3C)
Page 89: Web Application Security Issues - World Wide Web Consortium (W3C)

Lots of people write JavaScript code.

Page 90: Web Application Security Issues - World Wide Web Consortium (W3C)

Widgets, Mash-ups and Web Applications let

more people be creative.

Page 91: Web Application Security Issues - World Wide Web Consortium (W3C)

BUT

Page 92: Web Application Security Issues - World Wide Web Consortium (W3C)

They need sane and safe

APIs.

Page 93: Web Application Security Issues - World Wide Web Consortium (W3C)

Let’s consider that in spec

development.