1 flax: systematic discovery of client-side validation vulnerabilities in rich web applications...

25
1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn Song * Carnegie Mellon University * UC Berkeley

Upload: philip-sanders

Post on 16-Dec-2015

215 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

1

FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities

in Rich Web Applications

Pongsin Poosankam‡*

Prateek Saxena* Steve Hanna*

Dawn Song*

‡ Carnegie Mellon University

* UC Berkeley

Page 2: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

2

Client-side Validation(CSV) Vulnerabilities• A new class of input validation vulnerabilities• Analogous to server-side bugs

– Unsafe data usage in the client-side JS code– Involves data flows

– Purely client-side, data never sent to server– Returned from server, then used in client-side code

Page 3: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

3

Rich Web Applications

• Lots of JS code• Rich cross-domain interaction

APP 1

APP 2APP 3

APP 4

Page 4: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

4

Outline

• CSV Vulnerability Examples• FLAX: Tool and Techniques

– Challenges & Key Idea– Tool Architecture– Design

• Real Attacks and Evaluation Results• Related Work & Conclusion

Page 5: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

5

Vulnerability Example (I): Origin Misattribution

• Cross-domain Communication– Example: HTML 5 postMessage

facebook.com cnn.com

postMessage

Origin: www.facebook.comData: “Chatuser: Joe, Msg: Hi”

Origin: www.evil.comData: “Chatuser: Joe, Msg: onlinepharmacy.com”

Sender Receiver

Page 6: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

6

Vulnerability Example (II): Code Injection

• Code/data mixing• Dynamic code evaluation

– eval– DOM methods

• Eval also deserializes objects– JSON

Data: “alert(‘0wned’);”

…………

eval (.. + event.data);

Receiver

facebook.com

Page 7: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

7

Vulnerability Example (III): Application Command Injection

• Application-specific commands• Example: Chat application

ApplicationJavaScript

ApplicationServer

http://chat.com?cmd=joinroom&room=nba&cmd=addbuddy&user=evil

“..=nba&cmd=addbuddy&user=evil”

http://chat.com/roomname=nba

http://chat.com?cmd=joinroom&room=nbaXMLHttpReq.open (url)

Join this room

Injected Command

Page 8: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

8

Vulnerability Example (IV): Cookie Sink Vulnerabilities

• Cookies – Store session ids, user’s history and preferences– Have their own control format, using attributes

• Can be read/written in JavaScript

• Attacks – Session fixation– History and preference data manipulation– Cookie attribute manipulation, changes

Page 9: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

9

Summary of Goals

• Systematic discovery techniques– FLAX: An Automatic tool for discovery– A new hybrid technique for JavaScript analysis

• Evaluate prevalence in real code– An empirical evaluation of real-world applications– Find several unknown CSV vulnerabilities

Page 10: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

10

Outline

• CSV Vulnerabilities• FLAX: Tool and Techniques

– Challenges & Key Idea– Tool Architecture– Design

• Real Attacks and Evaluation Results• Related Work & Conclusion

Page 11: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

11

Problem Definition

• Definition– Unsafe usage of untrusted data in a critical sink

• Systematically discovery of CSV vulnerabilities• Two sub-problems

– Exploring program space– Finding bugs in some explored functionality

• Attacker Model– Web attacker (evil.com)– User-as-an-attacker

Page 12: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

12

Challenges

• JavaScript complexity– Highly dynamic language– String-heavy

• Parsing ops. indistinguishable from validation checks– Custom sanity routines are common

• Hidden server-side logic– Assumes no knowledge of the server– Handles reflected flows: data flows to server and back

End-to-end Web Application Analysis

Page 13: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

13

Key Insight

• Taint-enhanced black-box fuzzing (TEBF)– A simple idea– Combine benefits of taint-tracking & fuzzing– Requires no source code annotations– No false positives

• FLAX: An End-to-end System– Simplifies JS first– Implements TEBF– Handles reflected flow

using approximate tainting

False Positives

Efficiencyof findingBugs

Black-box fuzzing

Purely dynamicTaint-tracking

TEBF

Syntax-driven fuzzing

Page 14: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

14

FLAX Tool Design

Taint-tracking Execution Trace

JavaScript Program

Initial Input

Source

AcceptorSlice

Sink

SINK-AWAREFUZZER

EXPLOIT ?

function acceptor(input) {must_match = ’{]:],]:]}’;re1 =/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;re2 =/"[ˆ"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;re3 = /(?:ˆ|:|,)(?:\s*\[)+/g;

rep1 = input.replace(re1, "@");rep2 = rep1.replace(re2, "]");rep3 = rep2.replace(re3,"");

if(rep3 == must_match) { return true; }return false;}

Transformation Operations

Path Constraints

Page 15: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

15

FLAX Implementation

JAVASCRIPTINTERPRETER X = INPUT[4]

Y = SubStr(X,0,4)Z = (Y==“http”)

PC = IF (Z) THEN (T) ELSE (NEXT)

TAINT ENGINE

JASIL EXECUTION

TRACE

ACCEPTORSLICE

GENERATOR

Page 16: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

16

Simplifying JavaScript

• JASIL : Our intermediate language– A simple type system– Small set of operations

• Enables string-centric, fine-grained taint tracking on JS

Page 17: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

17

Simplifying JavaScript (II)

• Benefits of JASIL simplification to taint-tracking• Example: Taint semantics for replace are difficult!rep1 = INPUT.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@");

R

RsubString

convert@ @ @

concat

@ @ @

INPUT

OUTPUT

Emitted JASIL

Instructions

Page 18: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

18

Outline

• CSV Vulnerabilities• FLAX: Tool and Techniques

– Challenges & Key Idea– Tool Architecture– Design

• Attacks and Evaluation Results• Related Work & Conclusion

Page 19: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

19

Evaluation

• 40 Subjects– iGoogle gadgets– AJAX applications and web sites

• Setup – Untrusted sources

» All cross-domain channels» Text boxes

– Critical sinks» Code evaluation constructs» XHR url data» Cookies

Page 20: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

20

• Summary– Taint observed in 18 / 40 subjects– FLAX found 11 previously unknown vulnerabilities

• Examples– Origin Misattribution leading to XSS in Facebook Connect– Gadget Overwriting Attacks on Google/IG– Application Command Injection on AjaxIM– Code injection and cookie attribute manipulation via cookie sinks

Results (I)

Vulnerability Type Number of vulnerabilities

Code Injection 8

Origin Misattribution 1

Application Command Injection 1

Cookie Sink 1

TOTAL FOUND BY FLAX 11

Page 21: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

21

Example Attacks: Gadget Overwriting

Compromised Gadget with

Overwritten Contents

Legitimate URL bar

<Attack Link to IGoogle page>

Page 22: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

22

Effectiveness

• Character-level precise taint-tracking helps fuzzing• Reduction in input sizes

Page 23: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

23

Effectiveness (II)

• Reduction in false positives, TEBF vs. pure taint-tracking

Page 24: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

24

Conclusion

• A new class of vulnerabilities: CSV• Example attacks• A systematic discovery tool: FLAX

– No annotations, no false positives– Employs a simple TEBF techniques– Robust analysis using JASIL

• CSV vulnerabilities are actually prevalent today– Found 11 previously unknown vulns– Demonstrate proof-of-concept exploits

Page 25: 1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn

25

Contact

• Contact:– Prateek Saxena ([email protected])

• Please visit our project web site– http://webblaze.cs.berkeley.edu

THANKS FOR LISTENING