Top Banner
An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis
28

An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Jan 02, 2016

Download

Documents

Kevin Davis
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

An Analysis Framework for Security in Web Applications

Gary Wassermann and Zhendong Su

University of California, Davis

Page 2: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Web Application Architecture

Web browser

Application

Database

User input Database query

Application generates query based on user input

Result setWeb page

Page 3: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Command Injection Attacks

String query = “SELECT * FROM users WHERE username = ‘” + strUName + “’ AND password = ‘” + strPasswd + “’;”;

Expected input: SELECT * FROM users

WHERE username = ‘John’ AND password = ‘JohnsPass’;

Result: John logs in

Page 4: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Command Injection Attacks

Malicious input: SELECT * FROM users

WHERE username = ‘’ AND password = ‘’ OR ‘’ = ‘’;

Result: Malicious user logs in as first user identified in the database. Frequently, the administrator!

String query = “SELECT * FROM users WHERE username = ‘” + strUName + “’ AND password = ‘” + strPasswd + “’;”;

Page 5: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Motivation

~60% of web applications are vulnerable

Found vulnerable sites easily in web search

Many ways to regulate user inputs

Limit length of input

Filter out “bad” strings

Escape quotes, etc.

Are the regulations sufficient?

Goal: Check whether any “dangerous” queries, not user inputs, exist

Page 6: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Example: change admin password

Attacker registers online:

Username: admin’--

Password: password

INSERT INTO users VALUES(‘admin’’--’, ‘password’)

Page 7: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Attacker changes password:

Username: admin’--

OldPass: password

NewPass: backdoor

Example: change admin password

Page 8: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Application checks correctness of old password:

sql = “SELECT * FROM users WHERE username = ‘admin’’--’ AND password = ‘password’”;

rso.open( sql, cn );

if (rso.EOF) {...}

Example: change admin password

Page 9: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Admin’s password gets changed:

sql = “UPDATE users SET password = ‘” + newpass + “’ WHERE username = ‘” + rso(“username”) + “’”;

UPDATE users SET password = ‘backdoor’WHERE username = ‘admin’--’

Example: change admin password

Page 10: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Overview of Analysis Framework

Abstract Model of Generated Programs

Structure Discovery

Access Control

Ex: “customer” deletes inventory data

Tautologies

Ex: malicious user bypasses authentication

Application code

query =… Table lists

Conditional expressions

Select statement

Page 11: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

String query = “SELECT * FROM stock WHERE ” + strID + “ = id”; for( int i = 0; i < dat.length(); i++)

query = query + “ AND ” + dat[i] + “ = “ + inp[i];

Example with cyclesString query = “SELECT * FROM stock WHERE ” + strID + “ = id”;

Page 12: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

String query = “SELECT * FROM stock WHERE ” + strID + “ = id”; for( int i = 0; i < dat.length(); i++)

query = query + “ AND ” + dat[i] + “ = “ + inp[i];

Example with cycles

from dropdown menu

year

min

dat

Page 13: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

String query = “SELECT * FROM stock WHERE ” + strID + “ = id”; for( int i = 0; i < dat.length(); i++)

query = query + “ AND ” + dat[i] + “ = “ + inp[i];

Example with cycles

from dropdown menu

from textbox

year

min

dat

2004

15

inp

Page 14: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

String query = “SELECT * FROM stock WHERE ” + strID + “ = id”; for( int i = 0; i < dat.length(); i++)

query = query + “ AND ” + dat[i] + “ = “ + inp[i];

Example with cycles

year

min

dat

2004

15

inpFiltered with {“delete”, “xp\_”, “=”, “from”, “or”}

Page 15: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

String query = “SELECT * FROM stock WHERE ” + strID + “ = id”; for( int i = 0; i < dat.length(); i++)

query = query + “ AND ” + dat[i] + “ = “ + inp[i];

Example with cycles

year

min

dat

2004

15

inp

SELECT * FROM stock WHERE

982 = id AND year = 2004 AND min = 15

Filtered with {“delete”, “xp\_”, “=”, “from”, “or”}

Page 16: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

String query = “SELECT * FROM stock WHERE ” + strID + “ = id”; for( int i = 0; i < dat.length(); i++)

query = query + “ AND ” + dat[i] + “ = “ + inp[i];

Example with cycles

min

min

dat

14

15)

inp

SELECT * FROM stock WHERE

NOT(1 = id AND min = 14 AND min = 15)

Filtered with {“delete”, “xp\_”, “=”, “from”, “or”}

Page 17: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

String Analysis (previous work)

)= zid=( x minANDNOT

stock

WHERE

FROMSELECT *

=minyε

SELECT * FROM stock WHERE

NOT(1 = id AND min = 14 AND min = 15)

Page 18: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Structure Discovery (previous work)

)= zid=( x minANDNOT

WHERE

=minyε

stockFROMSELECT *

Boolean expression

Page 19: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Tautology checking

)= zmin

WHERE

id=( x ANDNOT

=minyε

stockFROMSELECT *

NOT ( x = id and min = y and min = z )

Theorem: We discover a tautology over linear arithmetic iff the FSA accepts one.

Page 20: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Overview of Tautology Checking

Main idea: Generate finite number of validity queries from FSA

Challenges: Loops/cycles

Arithmetic

Boolean

Page 21: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Tautology Checking: Arithmetic Loops

W,X,Y,Z :

1 = W+X Æ X+W+Y = Y+Z Æ Z = 1

a,b,c

W×(a) + X×(b) + Y×(c) ≥ Z×(b+c)

+cb≥a

+c

bin = 1

W

X

Y

Z out = 1

{W,Y,Z ← 1; X ← 0}

b+c ≥ b+c

Page 22: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Tautology Checking: Boolean Loops

a

bb

OR

a

bb

a

bb

a

bb

a

bbOR OR OR

n+2 = 4

Page 23: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

UPDATE users SET password = ‘backdoor’WHERE username = ‘admin’--’

Earlier Example Revisited

--

= ‘password

WHERE

SETUPDATE users ’

=username

w

‘’x ’

Page 24: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

sql = “UPDATE users SET password = ‘” + newpass + “’ WHERE username = ‘”

+ rso(“username”) + “’”;

Earlier Example Revisited

This code may also generate a query with a tautology

UPDATE users SET password = ‘backdoor’ WHERE username = ‘’OR‘a’=‘a’;

Page 25: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Earlier Example Revisited

= ‘password

WHERE

SETUPDATE users ’

=username

w

‘ ’x = ‘ ’zOR ‘ ’y

UPDATE users SET password = ‘backdoor’ WHERE username = ‘’OR‘a’=‘a’;

Page 26: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Conclusions

Analysis Framework: Generate and analyze FSA model of all possible queries

Semantic analysis of generated programs

Not only types but values

Implementation in progress

Questions?

Page 27: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.
Page 28: An Analysis Framework for Security in Web Applications Gary Wassermann and Zhendong Su University of California, Davis.

Why n+2?