FLAX: Systematic Discovery of Client-Side Validation Vulnerabilities in Rich Web Applications Prateek Saxena

advertisement
FLAX: Systematic Discovery of
Client-Side Validation Vulnerabilities
in Rich Web Applications
Prateek Saxena*
Pongsin Poosankam‡*
Steve Hanna*
Dawn Song*
* UC Berkeley
‡ Carnegie Mellon University
1
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
2
Rich Web Applications
• Lots of JS code
• Rich cross-domain interaction
APP 1
APP 2
APP 3
APP 4
3
Outline
• CSV Vulnerability Examples
• FLAX: Tool and Techniques
– Challenges & Key Idea
– Tool Architecture
– Design
• Real Attacks and Evaluation Results
• Related Work & Conclusion
4
Vulnerability Example (I):
Origin Misattribution
• Cross-domain Communication
– Example: HTML 5 postMessage
Sender
Receiver
facebook.com
cnn.com
postMessage
Origin: www.facebook.com
Data: “Chatuser: Joe, Msg: Hi”
Origin: www.evil.com
Data: “Chatuser: Joe, Msg: onlinepharmacy.com”
5
Vulnerability Example (II):
Code Injection
• Code/data mixing
• Dynamic code evaluation
Receiver
facebook.com
– eval
– DOM methods
……
• Eval also deserializes objects ……
– JSON
eval (.. + event.data);
Data: “alert(‘0wned’);”
6
Vulnerability Example (III):
Application Command Injection
• Application-specific commands
• Example: Chat application
“..=nba&cmd=addbuddy&user=evil”
http://chat.com/roomname=nba
Injected Command
Application
JavaScript
Join this room
XMLHttpReq.open (url)
http://chat.com?cmd=joinroom&room=nba
&cmd=addbuddy&user=evil
http://chat.com?cmd=joinroom&room=nba
Application
Server
7
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
8
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
9
Outline
• CSV Vulnerabilities
• FLAX: Tool and Techniques
– Challenges & Key Idea
– Tool Architecture
– Design
• Real Attacks and Evaluation Results
• Related Work & Conclusion
10
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
11
Challenges
End-to-end Web Application Analysis
• 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
12
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
Efficiency
of finding
– Implements TEBF
Bugs
– Handles reflected flow
using approximate tainting
Purely dynamic
Taint-tracking
TEBF
Syntax-driven fuzzing
Black-box fuzzing
False Positives
13
FLAX Tool Design
function acceptor(input)
Initial
{
Input
must_match = ’{]:],]:]}’;
re1 =/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
re2 =/"[ˆ"\\\n\r]*"|true|false|null|
Source
-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
re3 = /(?:ˆ|:|,)(?:\s*\[)+/g;
rep1 = input.replace(re1, "@");
rep2 = rep1.replace(re2, "]");
rep3 = rep2.replace(re3,"");
Transformation
Operations
if(rep3 == must_match) { return true; }
JavaScript
return
false;
Program
}
Execution Trace
Taint-tracking
SINKAWARE
FUZZER
Sink
EXPLOIT ?
Path
Constraints
Acceptor
Slice
14
FLAX Implementation
JAVASCRIPT
INTERPRETER
X = INPUT[4]
TAINT
ENGINE
ACCEPTOR
SLICE
GENERATOR
Y = SubStr(X,0,4)
Z = (Y==“http”)
PC = IF (Z) THEN
(T) ELSE (NEXT)
JASIL
EXECUTION
TRACE
15
Simplifying JavaScript
• JASIL : Our intermediate language
– A simple type system
– Small set of operations
• Enables string-centric, fine-grained taint tracking on JS
16
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
Emitted
JASIL
Instructions
INPUT
subString
R
convert
@
@
concat
@
@
@
@
OUTPUT
17
Outline
• CSV Vulnerabilities
• FLAX: Tool and Techniques
– Challenges & Key Idea
– Tool Architecture
– Design
• Attacks and Evaluation Results
• Related Work & Conclusion
18
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
19
Results (I)
• Summary
– Taint observed in 18 / 40 subjects
– FLAX found 11 previously unknown vulnerabilities
Vulnerability Type
Number of vulnerabilities
Code Injection
8
Origin Misattribution
1
Application Command Injection
1
Cookie Sink
1
TOTAL FOUND BY FLAX
11
• 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
20
Example Attacks: Gadget Overwriting
Legitimate URL bar
<Attack Link to IGoogle page>
Compromised
Gadget with
Overwritten Contents
21
Effectiveness
• Character-level precise taint-tracking helps fuzzing
• Reduction in input sizes
22
Effectiveness (II)
• Reduction in false positives, TEBF vs. pure taint-tracking
23
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
24
Contact
• Contact:
– Prateek Saxena (prateeks@cs.berkeley.edu)
• Please visit our project web site
– http://webblaze.cs.berkeley.edu
THANKS FOR
LISTENING
25
Download