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

Transcript of A Data-Centric Web Application Security Framework Jonathan Burket, Patrick Mutchler, Michael Weaver,...

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]