Preventing Web Application Injections with Complementary Character Coding Raymond Mui Phyllis Frankl Polytechnic Institute of NYU Presented at ESORICS.

Slides:



Advertisements
Similar presentations
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Hands-on SQL Injection Attack and Defense HI-TEC July 21, 2013.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Type-based Taint Analysis for Java Web Applications Wei Huang, Yao Dong and Ana Milanova Rensselaer Polytechnic Institute 1.
Hands on Demonstration for Testing Security in Web Applications
Creating Stronger, Safer, Web Facing Code JPL IT Security Mary Rivera June 17, 2011.
By Brian Vees.  SQL Injection  Username Enumeration  Cross Site Scripting (XSS)  Remote Code Execution  String Formatting Vulnerabilities.
1. What is SQL Injection 2. Different varieties of SQL Injection 3. How to prevent it.
Information Networking Security and Assurance Lab National Chung Cheng University The Ten Most Critical Web Application Security Vulnerabilities Ryan J.W.
Information Networking Security and Assurance Lab National Chung Cheng University 1 Top Vulnerabilities in Web Applications (I) Unvalidated Input:  Information.
Introduction to the OWASP Top 10. Cross Site Scripting (XSS)  Comes in several flavors:  Stored  Reflective  DOM-Based.
Injection Attacks by Example SQL Injection and XSS Adam Forsythe Thomas Hollingsworth.
Expert System Approach on Web Vulnerability Analysis / Jong Heon, PARK / Hyun Woo, CHO CS548 Advanced Information Security Term Project.
Preventing SQL Injection ~example of SQL injection $user = $_POST[‘user’]; $pass = $_POST[‘pass’]; $query = DELETE FROM Users WHERE user = ‘$user’ AND.
Secure Software Development Mini Zeng University of Alabama in Huntsville 1.
Workshop 3 Web Application Security Li Weichao March
Cross-Site Scripting Vulnerabilities Adam Doupé 11/24/2014.
Exploitation: Buffer Overflow, SQL injection, Adobe files Source:
Preventing Web Application Injections with Complementary Character Coding Raymond Mui Phyllis Frankl Polytechnic Institute of NYU Presented at ESORICS.
Varun Sharma Application Consulting and Engineering (ACE) Team, Microsoft India.
Web Application Security ECE ECE Internetwork Security What is a Web Application? An application generally comprised of a collection of scripts.
OWASP Top Ten #1 Unvalidated Input. Agenda What is the OWASP Top 10? Where can I find it? What is Unvalidated Input? What environments are effected? How.
Security Attacks CS 795. Buffer Overflow Problem Buffer overflows can be triggered by inputs that are designed to execute code, or alter the way the program.
Input Validation – common associated risks  ______________ user input controls SQL statements ultimately executed by a database server
Behind Enemy Lines Administrative Web Application Attacks Rafael Dominguez Vega 12 th of March 2009.
Aniket Joshi Justin Thomas. Agenda Introduction to SQL Injection SQL Injection Attack SQL Injection Prevention Summary.
Building Secure Web Applications With ASP.Net MVC.
Web system security issues: A developer's perspective Morrison, P. Jason 9 December 2004 BAD Information Security Web system security issues:
By Sean Rose and Erik Hazzard.  SQL Injection is a technique that exploits security weaknesses of the database layer of an application in order to gain.
© 2009 Stephen Wolff Application Security 1 Spring, 2009 OWASP Top Ten  Ten most critical WebApp security flaws. The top 2 are: 1. XSS – Cross Site Scripting.
Cross Site Scripting and its Issues By Odion Oisamoje.
Web Application Vulnerabilities ECE 4112 Internetwork Security, Spring 2005 Chris Kelly Chris Lewis April 28, 2005 ECE 4112 Internetwork Security, Spring.
Avoiding Backend Exploitation of Mail Forms Max Kessler, LPIC-1.
WEB SECURITY WEEK 2 Computer Security Group University of Texas at Dallas.
COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 9 1COMP9321, 15s2, Week.
OWASP Building Secure Web Applications And the OWASP top 10 vulnerabilities.
Mr. Justin “JET” Turner CSCI 3000 – Fall 2015 CRN Section A – TR 9:30-10:45 CRN – Section B – TR 5:30-6:45.
EECS 354: Network Security Group Members: Patrick Wong Eric Chan Shira Schneidman Web Attacks Project: Detecting XSS and SQL Injection Vulnerabilities.
INFO 344 Web Tools And Development CK Wang University of Washington Spring 2014.
Example – SQL Injection MySQL & PHP code: // The next instruction prompts the user is to supply an ID $personID = getIDstringFromUser(); $sqlQuery = "SELECT.
Page 1 Ethical Hacking by Douglas Williams. Page 2 Intro Attackers can potentially use many different paths through your application to do harm to your.
How Angular Protects Us From XSS Attacks? XSS (Cross-Site Scripting) is one of the assaults that can influence your site. So as to adapt to the attack,
COMP9321 Web Application Engineering Semester 2, 2017
Google’s Gruyere1 : An XSS Example Presented by: Terry Gregory
Group 18: Chris Hood Brett Poche
Web Application Security
Module: Software Engineering of Web Applications
An Introduction to Web Application Security
Module: Software Engineering of Web Applications
Web Application Vulnerabilities, Detection Mechanisms, and Defenses
Chapter 7: Identifying Advanced Attacks
TOPIC: Web Security (Part-4)
Security: Exploits & Countermeasures
Security: Exploits & Countermeasures
Cross-Site Scripting Travis Deyarmin.
Example – SQL Injection
OWASP WebGoat v5 16 April 2010.
Application Security Namuo – CIS 160
Security of web applications.
Risk Assessment = Risky Business
Web Systems Development (CSC-215)
امنیت نرم‌افزارهای وب تقديم به پيشگاه مقدس امام عصر (عج) عباس نادری
WWW安全 國立暨南國際大學 資訊管理學系 陳彥錚.
Security: Exploits & Countermeasures
Security: Exploits & Countermeasures
Security: Exploits & Countermeasures
Security: Attacks & Countermeasures
Exploring DOM-Based Cross Site Attacks
Presentation transcript:

Preventing Web Application Injections with Complementary Character Coding Raymond Mui Phyllis Frankl Polytechnic Institute of NYU Presented at ESORICS 2011 Supported by NSF and CATT; Patent Pending

Web Application Injection Attacks Malicious user inputs cause unintended executions of commands Caused by improper input sanitization SQL injection and cross-site scripting rank among top application security threats (OWASP Top 10)

<?PHP $message = $_POST[message]; $username = $_POST[username]; … //welcome the user if(isset($username)) { echo "Welcome $username "; } // insert new message if(isset($message)) { $query = insert into messages values($username, $message)"; mysql_query($query); } … // display all messages except the ones from admin $query = "select * from messages where not (user = admin)"; $result = mysql_query($query); echo Your messages: ; while($row=mysql_fetch_assoc($result)){ if($row[username] != $username) echo "you "; else echo " { $row[username] } "; echo "wrote: { $row[message] }"; } … ?> Example: Vulnerable PHP program Unsanitized user inputs

Web Server/ PHP Interpreter DBMS Alice Hello insert into messages values(Alice,hello); usermessage AliceHello select * from messages … … Alice wrote Hello … Bonnie Normal Use

Web Server/ PHP Interpreter DBMS Alice hello); drop table messages; -- insert into messages values(Alice,hello); drop table messages; --); usermessage AliceHello SQL Injection

Web Server/ PHP Interpreter DBMS Alice … insert into messages values(Alice, …); usermessage Alice … select * from messages … … Alice wrote … … Bonnie Persistent Cross-Site Scripting Browser/Javascript Execute script with privileges Of the origin site

Injection Attack Defenses Input sanitization Blacklist / whitelist In research –Dynamic tainting –Static analysis –Model checking –Instruction randomization –Machine learning –…–…

Weaknesses of Current Approaches to Dynamic Tainting Overhead –Code instrumentation –Storage and propagation of taint data –Sink checking Requires detailed knowledge of context at taint sinks: –SQL syntax (for particular SQL dialect) Taint propagation cannot cross component boundaries –Either the entire database is tainted or it is not –Persistent XSS

Our Approach: Complementary Character Coding Main idea –Turn dynamic tainting into a character coding Free taint storage Free taint propagation through execution Taint propagation across components –Between application and database –Between client and server over HTTP Complement Aware Components –Safe execution of unsanitized code against injection attacks –Backwards compatibility through HTTP content negotiation

Complementary Character Coding Two versions of every character Each character gets two code points instead of one Standard characters Complement characters Two flavors Complementary ASCII Complementary Unicode

Complementary Character Coding: Comparison Functions Value Comparison A standard character is equal to its complement Convert to standard character, and then compare all the bits Full Comparison Standard and complement versions of same character are not equal Compare all the bits

Complementary ASCII Standard characters Values 0 – 127 Same as standard ASCII characters Complement characters Values 128 – 256 Taint bit Data bits

Complementary Unicode Unicode Current version 6.0 Less than 25% code space used or reserved Allows possibility of having more than two versions of each character Future work

Dynamic Tainting with Complementary Character Coding Encode untrusted user inputs with complement characters –Explicitly converted by the server on entry Encode trusted developer code with standard characters Value comparison during execution –Functionality remains the same –Automatic taint propagation by execution –Taint propagation over database and HTTP Each complement aware component has complete picture of taint status during parsing

Complement Aware Components and Security Policy Allowed token set –Specified by each component individually for parsing –Defines tokens allowed to contain untrusted characters Default policy –Allowed token set = {numbers, string literals} –Prevents all possible injections Maybe too restrictive for web browsers More permissive policies –Browsers could allow tainted formatting tags –Allowed token set = {numbers, string literals,,, etc.} Enforcement –Match tokens in allowed token set with value comparison –Everything else (forbidden tokens) are matched with full comparison

<?PHP … $message = $_POST[message]; $username = $_POST[username]; … //welcome the user if(isset($username)) { echo "Welcome $username "; } // insert new message if(isset($message)) { $query = INSERT INTO messages VALUES($username, $message)"; MySQL_query($query); } … // display all messages except the ones from admin $query = "select * from messages where not (user = admin); $result = MySQL_query($query); echo Your messages: ; while($row=MySQL_fetch_assoc($result)){ if($row[username] != $username) echo "you"; else echo " {$row[username]} " ; echo " wrote: {$row[message]}"; } … ?> Example: Vulnerable PHP program Value comparison Used by DBMS And PHP interpreter here Untrusted inputs converted Into complement characters by server

Web Server/ PHP Interpreter DBMS Alice hello); drop table messages; -- … insert into messages values(Alice,hello); drop table messages;--); usermessage Alicehello); drop … SQL Injection with Complement Aware DBMS does not match ; does not match ; ) does not match ) drop does not match drop, etc. So DBMS stores literal rather than dropping table. Red denotes complement characters

Web Server/ PHP Interpreter DBMS Alice … insert into messages values(Alice, …); usermessage Alice … select * from messages … … Alice wrote … … Bonnie Persistent Cross-site scripting attack does not match, etc., so browser displays the characters rather than executing the script.

Web Server/ PHP Interpreter DBMS Browser, Javascript, … Alice Hello insert into messages values(Alice, Hello ); usermessage Alice Hello select * from messages … … Alice wrote Hello … Bonnie More permissive browser security policy: Allowed token set includes boldface tags Policy with allowed token set: {,, …} Boldface tags matched with value comparison, so browser renders Hello in bold.

Backwards Compatibility Take advantage of HTTP content negotiation mechanism Web browsers identify themselves through Accept- Charset header Complement aware browser –Send output in complementary character coding Non-complement aware browser –Route output through a filter that acts as a complement aware browser Apply security policy (e.g. default policy) Convert output into format specified by Accept-Charset header Extra overhead Gradually decrease as more people upgrade to complement aware browser

Prototype Implementation Done in complementary ASCII LAMP (Linux Apache MySQL PHP) Default policy Backwards compatible with standard browsers Firefox Customized security policies through defined allowed token sets Enough to run proof-of-concept experiments

Experimental Evaluation Evaluation objectives Effectiveness Possible Defects Overhead Benchmarks SQL Injection Application Testbed (Halfond et al) ATTACK set LEGIT set ARDILLA (Kieyzun et al) Generated using automated technique SQL injection, reflected XSS, and persistent XSS

Benchmarks

Results: Effectiveness Ran ATTACK set from SQL Injection Application Testbed using a script Checked database logs for SQL injection Manually executed ARDILLA test cases Found no signs of injections

Results: Possible Defects Set up original and complement aware web server with identical initial environments Ran LEGIT set from SQL Injection Application Testbed on both Compared output produced by both versions Resulting web pages identical by value comparison

Ran LEGIT set in SQL Injection Application Testbed and compared average over 100 runs Worse case overhead less than 2%

Conclusion and Future Work Complementary character coding Low overhead character level taint tracking Taint propagation across component boundaries Complement aware components Safe execution of unsanitized code against injection attacks Backwards compatibility with current browsers Future Work Implement complementary Unicode Explore other applications of complementary character coding Web standard

Questions?