Presentation is loading. Please wait.

Presentation is loading. Please wait.

Context-Sensitive Auto-Sanitization In Web Templating Languages Using Type Qualifiers Prateek Saxena UC Berkeley Mike Samuel Google Dawn Song UC Berkeley.

Similar presentations


Presentation on theme: "Context-Sensitive Auto-Sanitization In Web Templating Languages Using Type Qualifiers Prateek Saxena UC Berkeley Mike Samuel Google Dawn Song UC Berkeley."— Presentation transcript:

1 Context-Sensitive Auto-Sanitization In Web Templating Languages Using Type Qualifiers Prateek Saxena UC Berkeley Mike Samuel Google Dawn Song UC Berkeley 1

2 Script Injection Vulnerabilities OWASP Top Ten Vulnerabilities – 2 nd in 2010 & 2011 Today Affects – Major Web Services – Client-side Libraries – Browser Extensions – Devices & Smartphones 2

3 Predominant Defense Practice Why Does it Fail? – Developers forget to Sanitize [ Pixy06, PhpTaint06,Cqual04, Merlin09,Securifly05, PhpAspis11 ] – Pick the wrong sanitizer [ CCS11 ] 3 String Div.Render () { print( ); print(userimg); print( ); } String Div.Render () { print( ); print(Sanitize(userimg)); print( ); } Sanitizer Library Sanitizer Library

4 Vision Eliminate Scripting Attacks – Make Applications Secure by Construction Developer Code Developer Code Application Code Application Code 4

5 Contributions A New "Push-Button" Defense Primitive – "Security By Construction" Approach Context-Sensitive Auto-Sanitization (CSAS) – New Challenge: Which Sanitizers To Place Where? – Targets Existing Web Templating Frameworks It is Practical Deployed Commercially – Google Closure Templates powers Google+ 5 FastAuditableCompatibleSecure

6 var o = new soy.StringBuilder(); imgRender({O: o, imglink: $_GET(extlink), name: [$_GET(name)] })); document.write(o); Web Templating Frameworks Templating Framework Compiler Java JS Application calls Target Language Code Template Application Code template imgRender($imgLink, $name) { print (<img src=\); print ($imglink); print \/>. $name. ; return; } Template Code Template Language does not have complex constructs 6 Explicitly Separates Untrusted Inputs

7 Talk Outline System Architecture & Features Challenges The CSAS Engine Design Implementation Evaluation & Deployment 7

8 CSAS System Architecture Compiler Java JS Application calls Instrumented Auto-Sanitization Template Sanitizer Library Sanitizer Library Static Error 8

9 CSAS Auditability & Compatibility Compiler Java JS Instrumented Auto- Sanitization Sanitizer Library Sanitizer Library Static Error Easily Auditable Compatibility – No Developer Involvement – Minimize Static Errors Security Performance 9

10 HtmlSanitizer URLSanitizer template ImgRender($imgLink, $name) {……………} Security & Correctness (I) Property C SAN: Context-Sensitive Sanitization <img src="/img?f="/> $name$imgLink$name HTML Tag Context URI START Context URI PATH Context URI QUERY Parameter Context HTML Tag Context Attacks Vary By Contexts! 10

11 Security & Correctness (II) Property N OS: No Over Sanitization <img src="//img?f="/> $name$imgLink$name Sanitize Only Untrusted Data Not Constant Strings 11

12 Security Assumptions Canonical HTML Parser – Flexible to recognize browser differences [GWT, CTemplates] Correct Sanitizers – Extensive Community Effort [OWASP, HtmlPurify, GWT, Django] – Research on Secure Sanitization Primitives [Bek11, Hampi09,Min06] – Already Used in Many Frameworks

13 Challenges Easily Auditable Compatibility Security Performance Security PerformanceCompatibility 13

14 Approach #1: Context-Insensitive Sanitization template ImgRender($imgLink, $name) { print (<img src=); x := $imgLink; print ($x); print />. $name. ; return; } template ImgRender($imgLink, $name) { print (<img src=); x := HtmlEncode($imgLink); print ($x); print />. HtmlEncode($name ). ; return; } javascript: bad(); Security PerformanceCompatibility False Sense of Security! 14

15 Approach #2: Context-Sensitive Runtime Parsing (CSRP) URI START Context URI Param Context template ImgRender($imgLink, $name) {……………} <img src="/img?f= $name$imgLink URLSanitizer URLParamSanitizer Security PerformanceCompatibility 15

16 Rich Language Features <img src='//img?f='/> $name$imgLink$name 16 template ImgRender($imgLink, $name) { print (<img src='); x := /. $name. /img?f=. $imgLink; print ($x); print '/>. $name. ; return; }

17 template ImgRender($imgLink, $name) { print (<img src='); if ($name != ) then x := /. $name. /img?f=. $imgLink; else x:= $imgLink; fi print ($x); print '/>. $name. ; return; } Rich Language Features: Control Flow <img src='//img?f='/> $name$imgLink$name Usage Contexts Statically Ambiguous: Sanitization Requirements vary by path! 17

18 Our Approach Type Inference Well-Typed IR Untyped Template Compilation Compiled Code 18 CSAS Engine – Context Type Qualifiers

19 Context Type Qualifiers Context Type Qualifier: – "Which contexts is a string safe to be rendered in" x:=<img src='. $imgLink; <img src=' $imgLink y:= UrlAttribSsanitize($imgLink) x:=<img src='. y; TERMSTYPES 19 Type Inference: Where To Place Sanitizers?

20 Ensuring Compatibility: Key Ideas Flow-sensitive Type Qualifiers 20 template StatAmb($imgLink, $name) { if ($name == ) then print (<img src=\); else print ( ); fi print ($imgLink); } DYN STATIC CSRP Approach (1%) Statically Sanitized (99%)

21 Implementation & Evaluation Google Closure Templates – Powers several Google products – 3045 LOC Java Evaluation Benchmarks: – 1035 templates from production Google code – Rich Features 2997 calls 1224 print/sink statements using 600 untrusted input variables 21

22 Evaluation: Compatibility All 1035 templates auto-sanitized! – No Developer Involvement – No Static Errors Compared to original sanitization – 21 cases differ out of 1224 – CSAS engine inferred a more accurate sanitizer 22

23 Evaluation: Security Context-Insensitive Approach Fails on 28% prints 23 UNSAFE

24 Java JavaScript Evaluation: Performance Overhead CICSRPCSAS Chrome 93.0%78.8%3.0% FF 3.69.6%425%9.6% Safari 52.5%189%3.1% CICSRPCSAS Java0%72%0% 24 Order Of Magnitude Faster Than CSRP Benchmarks – Templates Only, No Other Application Logic Base: No Sanitization Practical Performance: Upto 9.6%

25 Conclusion 25 CSAS: A New "Push-Button" Defense Primitive – Fast, Secure, Compatible and Auditable – Increasing Commercially Adoption Other Frameworks

26 Thanks 26 http://code.google.com/closure/templates/docs/security.html Questions?


Download ppt "Context-Sensitive Auto-Sanitization In Web Templating Languages Using Type Qualifiers Prateek Saxena UC Berkeley Mike Samuel Google Dawn Song UC Berkeley."

Similar presentations


Ads by Google