a data-centric web application security framework jonathan burket, patrick mutchler, michael weaver,...

42
A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia http://guardrails.cs.virginia.edu GuardRail s

Upload: elwin-oconnor

Post on 30-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

A Data-Centric Web Application Security Framework

Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans

University of Virginiahttp://guardrails.cs.virginia.edu

GuardRails

Page 2: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

2

Web applications are easier to create than ever!

Page 3: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

3

Securing web applications is not nearly as easy!

Page 4: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

4

Page 5: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

5

Page 6: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

6

Page 7: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

7

“><script>alert(document.cookie);</script>

Page 8: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

8

Page 9: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

9

Page 10: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

10

Page 11: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

11

Application

Page A

Page B

Page C

Page D

Data Object

WriteAppendRead

WriteRead

Delete

Read

Read

Page 12: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

12

Application

Page A

Page B

Page C

Page D

Data Object

WriteAppendRead

WriteRead

Delete

Read

Read

Output HTML

Data Object

Page 13: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

13

Application

Page A

Page B

Page C

Page D

Data Object

WriteAppendRead

WriteRead

Delete

Read

Read

Output HTML

Data Object

Page 14: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

14

Application

Page A

Page B

Page C

Page D

Data Object

WriteAppendRead

WriteRead

Delete

Read

Read

Proxy that EnforcesSecurity Policies

Page 15: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

16

Our Philosophy

Security policies should be attached to the data

Security policies should be enforced automatically

Page 16: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

17

Annotated Ruby on Rails Code

Secure Ruby on Rails Code

GuardRails

Page 17: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

18

Design GoalsTop Priority:

Automatically enforce security policiesOther Objectives:

Preserve application functionalityEasy for developers to use

Lesser Goals:Minimize performance cost

Page 18: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

19

Annotated Ruby on Rails Code

Secure Ruby on Rails Code

GuardRails

Access Control PoliciesFine Grained Taint-Tracking

Page 19: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

20

Annotated Ruby on Rails Code

Secure Ruby on Rails Code

GuardRails

Access Control PoliciesFine Grained Taint-Tracking

Page 20: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

21

Page 21: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

22

if include_subprojects && !active_children.empty? ids = [id] + active_children.collect {|c| c.id}

conditions = ["#{Project.table_name}.id IN (#{ids.join(',')})"]

Page 22: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

23

if include_subprojects && !active_children.empty? ids = [id] + active_children.collect {|c| c.id}

conditions = ["#{Project.table_name}.id IN (#{ids.join(',')})"]

Page 23: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

24

if include_subprojects && !active_children.empty? ids = [id] + active_children.collect {|c| c.id}

conditions = ["#{Project.table_name}.id IN (#{ids.join(',')}) AND #{Project.visible_by}"]

Page 24: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

25

application_helper.rb

4 Checks

project.rb

2 Checks

projects_controller.rb

3 Checks

acts_as_searchable.rb

1 Checks

# @ :read, :self, lambda{|user|self.is_public or user.memberships.include? self.id}

# @ :read, lambda{|user| self.is_public or user.memberships.include? self.id}

class Project < ActiveRecord::Base# Project statusesSTATUS_ACTIVE = 1…

1 GuardRails Annotation

In Project model file:

Page 25: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

26

Access Control Policy Annotations

# @ (policy_type, [target], [handler], mediator)

# @ :delete, :self, :admin

# @ :write, :password, lambda{|user|user.id == self.id }

# @ :append, :members, lambda{|user| user.belongs_to?(self)}

Page 26: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

27

Annotated Ruby on Rails Code

Secure Ruby on Rails Code

GuardRails

Access Control PoliciesFine Grained Taint-Tracking

Page 27: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

28

Dynamic Taint TrackingProtects against injection attacks

“SELECT profile FROM users WHERE username=‘” + user_name + “’”

“User: <a href=‘profile_page’>” + user_name + “</a>”

Good: user_name = “jazzFan26”

Bad: user_name = “’; DROP TABLE users--”

Good: user_name = “DrKevinPhillips”

Bad: user_name = “<script language=‘javascript’>alert(‘document.cookie’);</script>”

SQL Injection:

Cross-Site Scripting:

Page 28: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

29

Page 29: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

30

Application

Page A

Page B

Page C

Page D

Data Object

WriteAppendRead

WriteRead

Delete

Read

Read

Page 30: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

31

Application

Page A

Page B

Page C

Page D

Data Object

WriteAppendRead

WriteRead

Delete

Read

Read

Output HTML

Data Object

Page 31: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

32

Taint Propagation

ModelController

Database

Data Taint Status

View

URL Parameters

Form Data

Other User Input

Tainted HTML

SanitizationSafe HTML

Page 32: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

Expressive Taint Status“<a href=‘profile?id=184392’><evil>SoccerFan1985</evil></a>”

“<a href=“profile?id=184392”><evil>SoccerFan1985</evil></a>”

StringValue:

Taint:

Character Index

29

51

55

<Transformer::Identity>

<Transformer::Default>

<Transformer::Identity>

DifferentChunks

33

Page 33: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

Transformers

{:HTML => { “//script” => NoDisplay, :default => NoHTMLAllowed }, :SQL => SQLSanitize, :Ruby_eval => NoDisplay}

The Default Transformer

Use Context

Appropriate Sanitization Routine

34

Page 34: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

Transformers

Raw String Chunk 1 Transformer 1

Raw String Chunk 2 Transformer 2

Raw String Chunk 3 Transformer 3

Use Context

Sanitized Chunk

Sanitized Chunk

Sanitized Chunk

Sanitized String

35

Page 35: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

36

Transformer Annotations

# @ :taint, :username, {:HTML => AlphaNumericOnly}

# @ :taint, :full_name, {:HTML =>

{TitleTag => LettersAndSpacesOnly,:default => NoHTML}}

# @ :taint, :profile, {:HTML =>

{"//script” => Invisible,:default => BoldItalicUnderlineOnly}}

# @ taint, target, transformer

Page 36: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

37

Page 37: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

38

Page 38: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

39

Page 39: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

40

Test Application Application Type

Image Gallery(680 lines)

E-Commerce(5556 lines)

Project Management(30747 lines)

E-Commerce(11561 lines)

Page 40: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

41

Performance Notes

Onyx Redmine PaperTracks0

1

2

3

4

5

6

7

10.7Original ApplicationAccess Control OnlyTaint Tracking OnlyFull System

Rela

tive

Tran

sacti

on T

ime

(Nor

mal

ized

)

Page 41: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

42

Try GuardRails

Alpha Release Now Available!Our Web Page: http://guardrails.cs.virginia.eduFull source code can be downloaded from GitHub

Contact Info: [email protected]

Page 42: A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver, Muzzammil Zaveri, and David Evans University of Virginia

43

Questions?

Alpha Release Now Available!Our Web Page: http://guardrails.cs.virginia.eduFull source code can be downloaded from GitHub

Contact Info: [email protected]