Protection, Usability and Improvements in Reflected XSS Filters

Similar documents
A Tale of the Weaknesses of Current Client-Side XSS Filtering

Document Structure Integrity: A Robust Basis for Cross-Site Scripting Defense

EVALUATING COMMERCIAL WEB APPLICATION SECURITY. By Aaron Parke

A Tale of the Weaknesses of Current Client-side XSS Filtering

A Server and Browser-Transparent CSRF Defense for Web 2.0 Applications. Slides by Connor Schnaith

Webapps Vulnerability Report

Web Application Security

Web Application Attacks And WAF Evasion

Finding XSS in Real World

Acunetix Website Audit. 5 November, Developer Report. Generated by Acunetix WVS Reporter (v8.0 Build )

Robust Defence against XSS through Context Free Grammar

Client vs. Server Implementations of Mitigating XSS Security Threats on Web Applications

XSS-GUARD : Precise Dynamic Prevention of Cross Site Scripting (XSS) Attacks

Universal XSS via IE8s XSS Filters

Cross Site Scripting Prevention

Finding Your Way in Testing Jungle. A Learning Approach to Web Security Testing.

CS 558 Internet Systems and Technologies

Check list for web developers

What about MongoDB? can req.body.input 0; var date = new Date(); do {curdate = new Date();} while(curdate-date<10000)

Introduction to Computer Security

Intrusion detection for web applications

Cross Site Scripting in Joomla Acajoom Component

An Efficient Black-box Technique for Defeating Web Application Attacks

Analysis of Browser Defenses against XSS Attack Vectors

Detect and Sanitise Encoded Cross-Site Scripting and SQL Injection Attack Strings Using a Hash Map

Creating Stronger, Safer, Web Facing Code. JPL IT Security Mary Rivera June 17, 2011

Understanding Cross Site Scripting

Criteria for web application security check. Version

The purpose of this report is to educate our prospective clients about capabilities of Hackers Locked.

Data Breaches and Web Servers: The Giant Sucking Sound

Study of Cross-Site Scripting Attacks and Their Countermeasures

What is Web Security? Motivation

Cross Site Scripting (XSS) and PHP Security. Anthony Ferrara NYPHP and OWASP Security Series June 30, 2011

Web-Application Security

Alhambra: A System for Creating, Enforcing, and Testing Browser Security Policies

SESSION IDENTIFIER ARE FOR NOW, PASSWORDS ARE FOREVER

Bug Report. Date: March 19, 2011 Reporter: Chris Jarabek

Is Drupal secure? A high-level perspective on web vulnerabilities, Drupal s solutions, and how to maintain site security

A DYNAMIC TOOL FOR DETECTION OF XSS ATTACKS IN A REAL-TIME ENVIRONMENT

A Practical Attack to De Anonymize Social Network Users

Protecting Web Applications and Users

Network Security Web Security

Java Program Vulnerabilities

Web application security

Bypassing NoScript Security Suite Using Cross-Site Scripting and MITM Attacks

Precise client-side protection against DOM-based Cross-Site Scripting

OWASP TOP 10 ILIA

Using Free Tools To Test Web Application Security

Network Monitoring using MMT:

Perl In Secure Web Development

Attacks on Clients: Dynamic Content & XSS

CSE598i - Web 2.0 Security OWASP Top 10: The Ten Most Critical Web Application Security Vulnerabilities

HTTPParameter Pollution. ChrysostomosDaniel

HTML5. Eoin Keary CTO BCC Risk Advisory.

Web applications. Web security: web basics. HTTP requests. URLs. GET request. Myrto Arapinis School of Informatics University of Edinburgh

Hack Proof Your Webapps

Ruby on Rails Security. Jonathan Weiss, Peritor Wissensmanagement GmbH

Cyber Security Challenge Australia 2014

Ruby on Rails Secure Coding Recommendations

Detection of SQL Injection and XSS Vulnerability in Web Application

BASELINE SECURITY TEST PLAN FOR EDUCATIONAL WEB AND MOBILE APPLICATIONS

Course Information Course Number: IWT 1229 Course Name: Web Development and Design Foundation

External Vulnerability Assessment. -Technical Summary- ABC ORGANIZATION

Bypassing Internet Explorer s XSS Filter

SECURITY ADVISORY. December 2008 Barracuda Load Balancer admin login Cross-site Scripting

A Perfect CRIME? TIME Will Tell. Tal Be ery, Web research TL

Magento Security and Vulnerabilities. Roman Stepanov

Advanced XSS. Nicolas Golubovic

Application security testing: Protecting your application and data

Carlos Muñoz Application Security Engineer WhiteHat

AJAX and JSON Lessons Learned. Jim Riecken, Senior Software Engineer, Blackboard Inc.

1. Introduction. 2. Web Application. 3. Components. 4. Common Vulnerabilities. 5. Improving security in Web applications

Uploaded images filter evasion for carrying out XSS attacks

Developing ASP.NET MVC 4 Web Applications MOC 20486

IMRG Peermap API Documentation V 5.0

EVILSEED: A Guided Approach to Finding Malicious Web Pages

RIPS - A static source code analyser for vulnerabilities in PHP scripts

Visualizing a Neo4j Graph Database with KeyLines

Next Generation Clickjacking

Security Research Advisory SugarCRM Cross-Site Scripting Vulnerability

Security Model for the Client-Side Web Application Environments

FINAL DoIT v.4 PAYMENT CARD INDUSTRY DATA SECURITY STANDARDS APPLICATION DEVELOPMENT AND MAINTENANCE PROCEDURES

Network Security in Practice

The Top Web Application Attacks: Are you vulnerable?

PST_WEBZINE_0X04. How to solve XSS and mix user's HTML/JavaScript code with your content with just one script

Binonymizer A Two-Way Web-Browsing Anonymizer

Detecting and Exploiting XSS with Xenotix XSS Exploit Framework

Seminar: Cryptographic Protocols Staged Information Flow for JavaScript

WEB CONTENT SCANNER SDK

Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys

Recent Advances in Web Application Security

Towards More Security in Data Exchange

Project 2: Web Security Pitfalls

University of Wisconsin Platteville SE411. Senior Seminar. Web System Attacks. Maxwell Friederichs. April 18, 2013

Relax Everybody: HTML5 Is Securer Than You Think

WEB ATTACKS AND COUNTERMEASURES

25 Million Flows Later - Large-scale Detection of DOM-based XSS

Security features of ZK Framework

Reliable Mitigation of DOM-based XSS

Blackbox Reversing of XSS Filters

Transcription:

Protection, Usability and Improvements in Reflected XSS Filters Riccardo Pelizzi System Security Lab Department of Computer Science Stony Brook University May 2, 2012 1 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Outline XSS Attacks 2 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Outline XSS Attacks Existing XSS Filters 2 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Outline XSS Attacks Existing XSS Filters 2 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Outline XSS Attacks Existing XSS Filters 2 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Outline XSS Attacks Existing XSS Filters and Q&A 2 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Same-Origin Policy Attacker Please visit evil.com User Browser Malicious Server payload = send bank.com cookies to evil.com 3 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Same-Origin Policy Attacker Please visit evil.com User Click on link Browser Malicious Server payload = send bank.com cookies to evil.com 3 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Same-Origin Policy Attacker Please visit evil.com User Click on link Browser GET evil.com Malicious Server payload = send bank.com cookies to evil.com 3 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Same-Origin Policy Attacker Please visit evil.com User Click on link Browser GET evil.com Send response+payload Malicious Server payload = send bank.com cookies to evil.com 3 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Same-Origin Policy Attacker Please visit evil.com User Click on link Browser Execute payload on evil.com GET evil.com Send response+payload Malicious Server payload = send bank.com cookies to evil.com 3 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Same-Origin Policy Attacker Please visit evil.com User Click on link Browser Execute payload on evil.com SOP Violation GET evil.com Send response+payload Malicious Server payload = send bank.com cookies to evil.com 3 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSS Attacks Attacker User/Browser Adds payload to bank.com pages bank.com payload = send bank.com cookies to Attacker 4 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSS Attacks Attacker User/Browser bank.com Adds payload to bank.com pages Visits bank.com payload = send bank.com cookies to Attacker 4 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSS Attacks Attacker User/Browser bank.com Adds payload to bank.com pages Visits bank.com Response+payload payload = send bank.com cookies to Attacker 4 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSS Attacks Attacker User/Browser Adds payload to bank.com pages Execute payload on bank.com Visits bank.com Response+payload bank.com payload = send bank.com cookies to Attacker 4 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSS Attacks Attacker User/Browser Adds payload to bank.com pages Visits bank.com Response+payload bank.com Execute payload on bank.com Cookies payload = send bank.com cookies to Attacker 4 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Attacks Attacker User Please visit bank.com/index.php?branch=payload Browser bank.com payload = send bank.com cookies to Attacker 5 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Attacks Attacker User Browser Please visit bank.com/index.php?branch=payload Clicks on link bank.com payload = send bank.com cookies to Attacker 5 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Attacks Attacker User Browser bank.com Please visit bank.com/index.php?branch=payload Clicks on link GET bank.com+payload payload = send bank.com cookies to Attacker 5 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Attacks Attacker User Browser bank.com Please visit bank.com/index.php?branch=payload Clicks on link GET bank.com+payload Response+payload payload = send bank.com cookies to Attacker 5 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Attacks Attacker User Browser bank.com Please visit bank.com/index.php?branch=payload Clicks on link GET bank.com+payload Response+payload Execute payload on bank.com payload = send bank.com cookies to Attacker 5 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Attacks Attacker User Browser bank.com Please visit bank.com/index.php?branch=payload Clicks on link GET bank.com+payload Response+payload Cookies Execute payload on bank.com payload = send bank.com cookies to Attacker 5 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Example Whole Script Injection Partial Script Injection 6 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Example Whole Script Injection Server: <b>your search query: <?=$ GET["query"]?></b> Request: bank.com/search.php?query=<script>alert(1)</script> Partial Script Injection 6 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Reflected XSS Example Whole Script Injection Server: <b>your search query: <?=$ GET["query"]?></b> Request: bank.com/search.php?query=<script>alert(1)</script> Partial Script Injection Server: <script>document.write( <a href="../plugin.php?passed id= + <?=$ GET["id"];?>"></a>); </script> Request: bank.com/search.php?id= );do xss();document.write( 6 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Blocking Reflected XSS Attacks Recognize malicious requests. Recognize malicious scripts. 7 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Blocking Reflected XSS Attacks Recognize malicious requests. Recognize suspicious requests. Modify suspicious requests. Recognize malicious scripts. 7 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Blocking Reflected XSS Attacks Recognize malicious requests. Recognize suspicious requests. Modify suspicious requests. Recognize malicious scripts. Recognize injected scripts. Prevent injected scripts from executing. 7 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

NoScript Uses complex regular expressions to find JavaScript in outgoing requests. 8 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

NoScript Uses complex regular expressions to find JavaScript in outgoing requests. Obscure logic for filtering. 8 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

NoScript Uses complex regular expressions to find JavaScript in outgoing requests. Obscure logic for filtering. False positives. 8 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

NoScript Uses complex regular expressions to find JavaScript in outgoing requests. Obscure logic for filtering. False positives. Sanitized requests are often invalid. 8 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

IE8 Using regular expressions, find parameters in response scripts. Modifies HTML responses before they are parsed. 9 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

IE8 Using regular expressions, find parameters in response scripts. Modifies HTML responses before they are parsed. Hard to identify scripts in the page. 9 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

IE8 Using regular expressions, find parameters in response scripts. Modifies HTML responses before they are parsed. Hard to identify scripts in the page. Hard to sanitize scripts. 9 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSSAuditor Examines scripts as they are fed to the JavaScript engine. Looks for the script in the URL. 10 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSSAuditor Examines scripts as they are fed to the JavaScript engine. Looks for the script in the URL. Policies do not protect against partial script injections. 10 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

XSSAuditor Examines scripts as they are fed to the JavaScript engine. Looks for the script in the URL. Policies do not protect against partial script injections. Can only cope with known, simple string transformations. 10 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Key Benefits of our Approach Protection against partial script injections, to increase attack vector coverage. 11 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Key Benefits of our Approach Protection against partial script injections, to increase attack vector coverage. Taint Inference, to account for arbitrary string transformations. 11 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Key Benefits of our Approach Protection against partial script injections, to increase attack vector coverage. Taint Inference, to account for arbitrary string transformations. Policies that minimize false positives. 11 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Taint Inference Taint-Inference is an approximate substring matching algorithm with acceptable overhead. Quadratic in the worst case, but mostly linear. 12 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Overview Internet Server Request Document Initialization Document URL Post Data Init Parse Headers Parse URL HTML Parser Component Text Node Script Node Permits Search params Script Content Script URL JavaScript Engine Browser 13 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Policies Inline Policy for inlined code (<script>...</script>, data URLs, etc) External Policy for external resources (<script src=...>, objects, etc): 14 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Policies Inline Policy for inlined code (<script>...</script>, data URLs, etc) Whole Script Injection: a substring of a parameter is found at the beginning of a script. Partial Injection: a parameter is found in a substring of a script, breaking out of a JavaScript string. External Policy for external resources (<script src=...>, objects, etc): 14 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Policies Inline Policy for inlined code (<script>...</script>, data URLs, etc) Whole Script Injection: a substring of a parameter is found at the beginning of a script. Partial Injection: a parameter is found in a substring of a script, breaking out of a JavaScript string. External Policy for external resources (<script src=...>, objects, etc): Permit same-origin resources and maintain a cache of valid origins to check each origin only once. 14 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Policies Inline Policy for inlined code (<script>...</script>, data URLs, etc) Whole Script Injection: a substring of a parameter is found at the beginning of a script. Partial Injection: a parameter is found in a substring of a script, breaking out of a JavaScript string. External Policy for external resources (<script src=...>, objects, etc): Permit same-origin resources and maintain a cache of valid origins to check each origin only once. Partial Injection: only flag as attack if the attacker controls the domain. 14 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Protection Dataset XSSAuditor NoScript xssed 399/400 379/400 400/400 cheatsheet 20/20 18/20 20/20 Figure: for xssed and cheatsheet dataset Dataset Partial Script Injection String Transformation xssed 16 5 cheatsheet 2 0 Figure: XSSAuditor failures 15 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Protection Dataset XSSAuditor NoScript xssed 399/400 379/400 400/400 cheatsheet 20/20 18/20 20/20 Figure: for xssed and cheatsheet dataset Dataset Partial Script Injection String Transformation xssed 16 5 cheatsheet 2 0 Figure: XSSAuditor failures 8% of web pages from the xssed website are vulnerable to partial injection. 15 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Protection Dataset XSSAuditor NoScript xssed 399/400 379/400 400/400 cheatsheet 20/20 18/20 20/20 Figure: for xssed and cheatsheet dataset Dataset Partial Script Injection String Transformation xssed 16 5 cheatsheet 2 0 Figure: XSSAuditor failures 8% of web pages from the xssed website are vulnerable to partial injection. 18% for a large-scale survey we performed. 15 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Protection Dataset XSSAuditor NoScript xssed 399/400 379/400 400/400 cheatsheet 20/20 18/20 20/20 Figure: for xssed and cheatsheet dataset Dataset Partial Script Injection String Transformation xssed 16 5 cheatsheet 2 0 Figure: XSSAuditor failures 8% of web pages from the xssed website are vulnerable to partial injection. 18% for a large-scale survey we performed. 9% of pages from the 1000 most popular websites have dynamically generated scripts. 15 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Compatibility Crawled 35000+ pages Filter XSSAuditor NoScript # of violations 8 6 15 Figure: Compatibility Comparison 16 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Compatibility Crawled 35000+ pages Filter XSSAuditor NoScript # of violations 8 6 15 Figure: Compatibility Comparison Most requests did not contain special characters 16 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Compatibility Crawled 35000+ pages Filter XSSAuditor NoScript # of violations 8 6 15 Figure: Compatibility Comparison Most requests did not contain special characters Most NoScript violations are puzzling. http://domain.com/dir/page.php? n=phnjcmlwdp25pljmo9mci%2bpc9zy3jpchq %2B h=55e1652a183 16 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Compatibility Crawled 35000+ pages Filter XSSAuditor NoScript # of violations 8 6 15 Figure: Compatibility Comparison Most requests did not contain special characters Most NoScript violations are puzzling. http://domain.com/dir/page.php? n=phnjcmlwdp25pljmo9mci%2bpc9zy3jpchq %2B h=55e1652a183 Discounted 43 actual vulnerabilities from violations. 16 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Performance has higher overhead. How much? 17 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Performance has higher overhead. How much? modified tp4: 2.5% Responses are served locally. 17 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Performance has higher overhead. How much? modified tp4: 2.5% Responses are served locally. Time spent in the taint-inference algorithm from a program trace / page load time: 0.5% Ultimately negligible when factoring in network delay. 17 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Implementation Firefox Trunk patch available shortly for download. 18 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Implementation Firefox Trunk patch available shortly for download. Implemented as an extension to CSPs, with a separate XPCOM module for taint inference. 18 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

Implementation Firefox Trunk patch available shortly for download. Implemented as an extension to CSPs, with a separate XPCOM module for taint inference. A subset of the functionalities is being properly introduced into Firefox (Bug #528661) 18 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

and Q&A XSSAuditor s architecture offers many advantages. 19 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

and Q&A XSSAuditor s architecture offers many advantages. Our improvements over XSSAuditor increase protection without compromising usability or performance. 19 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters

and Q&A XSSAuditor s architecture offers many advantages. Our improvements over XSSAuditor increase protection without compromising usability or performance. Questions? 19 / 19 Riccardo Pelizzi Improvements in Reflected XSS Filters