Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "1 FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Pongsin Poosankam ‡* Prateek Saxena * Steve Hanna * Dawn."— Presentation transcript:

1 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

2 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

3 3 Rich Web Applications Lots of JS code Rich cross-domain interaction APP 1 APP 2 APP 3 APP 4

4 4 Outline CSV Vulnerability Examples FLAX: Tool and Techniques –Challenges & Key Idea –Tool Architecture –Design Real Attacks and Evaluation Results Related Work & Conclusion

5 5 Vulnerability Example (I): Origin Misattribution Cross-domain Communication –Example: HTML 5 postMessage facebook.comcnn.com postMessage Origin: www.facebook.comwww.facebook.com Data: “Chatuser: Joe, Msg: Hi” Origin: www.evil.com Data: “Chatuser: Joe, Msg: onlinepharmacy.com”onlinepharmacy.com SenderReceiver

6 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

7 7 Vulnerability Example (III): Application Command Injection Application-specific commands Example: Chat application Application JavaScript Application Server 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=nba XMLHttpReq.open ( url ) Join this room Injected Command

8 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

9 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

10 10 Outline CSV Vulnerabilities FLAX: Tool and Techniques –Challenges & Key Idea –Tool Architecture –Design Real Attacks and Evaluation Results Related Work & Conclusion

11 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

12 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

13 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 Efficiency of finding Bugs Black-box fuzzing Purely dynamic Taint-tracking TEBF Syntax-driven fuzzing

14 14 FLAX Tool Design Taint-tracking Execution Trace JavaScript Program Initial Input Source Acceptor Slice Sink SINK- AWARE FUZZER 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

15 15 FLAX Implementation JAVASCRIPT INTERPRETER X = INPUT[4] Y = SubStr(X,0,4) Z = (Y==“http”) PC = IF (Z) THEN (T) ELSE (NEXT) TAINT ENGINE JASIL EXECUTION TRACE ACCEPTOR SLICE GENERATOR

16 16 Simplifying JavaScript JASIL : Our intermediate language –A simple type system –Small set of operations Enables string-centric, fine-grained taint tracking on JS

17 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 R subString convert @@@ concat @ @ @ INPUT OUTPUT Emitted JASIL Instructions

18 18 Outline CSV Vulnerabilities FLAX: Tool and Techniques –Challenges & Key Idea –Tool Architecture –Design Attacks and Evaluation Results Related Work & Conclusion

19 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

20 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 TypeNumber of vulnerabilities Code Injection8 Origin Misattribution1 Application Command Injection1 Cookie Sink1 TOTAL FOUND BY FLAX11

21 21 Example Attacks: Gadget Overwriting Compromised Gadget with Overwritten Contents Legitimate URL bar

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

23 23 Effectiveness (II) Reduction in false positives, TEBF vs. pure taint-tracking

24 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

25 25 Contact Contact: –Prateek Saxena (prateeks@cs.berkeley.edu) Please visit our project web site –http://webblaze.cs.berkeley.eduhttp://webblaze.cs.berkeley.edu THANKS FOR LISTENING


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

Similar presentations


Ads by Google