summary on s cript g ard automatic context-sensitive sanitization for large-scale legacy web...

18
Summary on SCRIPTGARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides from presentation of Prateek Saxena UC Berkeley

Upload: bathsheba-bishop

Post on 21-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

Summary on SCRIPTGARDAutomatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications

William NgNorthwestern University

Modified slides from presentation of Prateek

SaxenaUC Berkeley

Page 2: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

2

Sanitization in WebApplication

Small-Scale Apps

• Buggy Sanitizer• Missing Sanitization

– [Pixy’06, PhpTaint’06,Cqual’04,

Merlin’09,Securifly’05, PhpAspis’11, Saner’08, Bek’11]

Large-Scale Applications

String Img.RenderControl() {

Write(userimg);}

String Img.RenderControl() { Write(Sanitize(userimg));}

• New Sanitization Errors– [CCS’11]

• SCRIPTGARD

Page 3: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

3

Error #1: Context-Mismatched Sanitization(CMS)

Page 4: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

4

Error #1: Context-Mismatched Sanitization(CMS)

Page 5: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

5

Why Does Context-Mismatch Happen?

Output Sink

San Context is a Global

Path-Sensitive Property

But, developers select Sanitizers Locally

Page 6: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

6

23904

1207

1,207 (4.7%) are CMS errors!

Error #1: Context-Mismatched Sanitization(CMS)

Page 7: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

7

Error #2: Inconsistent Multiple Sanitization(IMS)

Output Sink

San 1

San 2

Attack Input

Safe? Safe?

San 1

San 2

Page 8: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

8

Inconsistent Multiple Sanitization(IMS):How does it happen?

• EcmaScriptStringEncode – transforms all characters that can break out of JavaScript string literals (like the “ character) to Unicode encoding \u0022 for “)

• HtmlAttribEncode - encodes characters (" for “)

Page 9: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

9

Inconsistent Multiple Sanitization(IMS):How does it happen?

Document.write(“<a href ='” + EcmaScriptStringEncode(HtmlAttribEncode( “xyz )) +”'></a>”)

Document.write(“<a href ='” + EcmaScriptStringEncode( &quotxyz) +”'></a>”)

Document.write("<a href ='" + \u0026quotxyz +“'></a>")

Document.write("<a href ='&quotxyz'></a>")

<a href =‘”xyz’></a>

Page 10: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

10

Inconsistent Multiple Sanitization(IMS):How does it happen?

Document.write("<a href =‘" + HtmlAttribEncode(EcmaScriptStringEncode( “xyz )) +"’></a>")

Document.write("<a href =‘" + HtmlAttribEncode( \u0022xyz ) +“’></a>")

Document.write("<a href =‘" + \u0022xyz +“’></a>")

Document.write("<a href =‘”xyz’></a>")

Big problem if xyz is);Onclick…

Document.write(“<a href =‘“);Onclick…”></a>’)

Page 11: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

11

21964

2960

285

285 (8%) of multiple sanitizations are errors!

Inconsistent Multiple Sanitization(IMS):Does it Really Happen?

Page 12: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

SCRIPTGARD Architecture

12

Page 13: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

SCRIPTGARD Analysis

13

1. Trace dynamic execution of application on test inputs

2. Identify all untrusted data embedded in application’s output

3. Map application trace to static program path

4. Map untrusted trace to the correct sequence of sanitizer to apply

5. Find out which part of string needs to be sanitized through positive taint analysis

6. If sequence doesn’t match, it add the correct sequence to sanitization cache

Page 14: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

SCRIPTGARD Analysis

14

1. Trace dynamic execution of application on test inputs

2. Identify all untrusted data embedded in application’s output

3. Map application trace to static program path

4. Map untrusted trace to the correct sequence of sanitizer to apply

5. Find out which part of string needs to be sanitized through positive taint analysis

6. If sequence doesn’t match, it add the correct sequence to sanitization cache

Page 15: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

Positive Taint analysis

15

X = Untrusted inputZ = unknown sourceA = safe inputY = XcZ = sanitize (Z)Write(X,Y,Z,A,cZ)

• Normal taint analysis kept track how the untrusted variable is used in the program, e.g. X, Y

• Positive taint analysis kept track of the safe data, e.g. A and cZ

• ScriptGard marks portion of server output which is not positively tainted e.g. X, Y, Z

• ScriptGard also records sequence of propagator and sanitizer applied

Page 16: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

SCRIPTGARD Runtime Auto-Correction

16

1. Apply the correct sanitizer sequence from the cache if analysis is done on the path

2. Administrator choice if analysis is not done on the path yet

Page 17: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

17

SCRIPTGARD: Performance

• Time to load first byte from URL increase by more than 100 times.

• Preferential path profiling can slightly reduce the overhead.

Page 18: Summary on S CRIPT G ARD Automatic Context-Sensitive Sanitization for Large-Scale Legacy Web Applications William Ng Northwestern University Modified slides

18

Questions?