Preparing for the Cross Site Request Forgery Defense



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

Next Generation Clickjacking

Web-Application Security

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

Advanced Web Technology 10) XSS, CSRF and SQL Injection 2

Web application security

Hacking Intranet Websites from the Outside (Take 2) Fun With & Without JavaScript Malware

How to break in. Tecniche avanzate di pen testing in ambito Web Application, Internal Network and Social Engineering

Magento Security and Vulnerabilities. Roman Stepanov

Detecting and Exploiting XSS with Xenotix XSS Exploit Framework

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

BASELINE SECURITY TEST PLAN FOR EDUCATIONAL WEB AND MOBILE APPLICATIONS

Web Application Guidelines

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

Finding and Preventing Cross- Site Request Forgery. Tom Gallagher Security Test Lead, Microsoft

Attacks on Clients: Dynamic Content & XSS

Kicking Down the Cross Domain Door

OWASP Top Ten Tools and Tactics

Network Security Web Security

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

Phishing by data URI

Secure Web Application Coding Team Introductory Meeting December 1, :00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda

Criteria for web application security check. Version

ArcGIS Server Security Threats & Best Practices David Cordes Michael Young

Defending against XSS,CSRF, and Clickjacking David Bishop

Universal XSS via IE8s XSS Filters

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

Where every interaction matters.

Project 2: Web Security Pitfalls

Analysis of Browser Defenses against XSS Attack Vectors

Check list for web developers

Security Testing with Selenium

WHITE PAPER. FortiWeb and the OWASP Top 10 Mitigating the most dangerous application security threats

(WAPT) Web Application Penetration Testing

Intrusion detection for web applications

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

Pwning Intranets with HTML5

Web Application Security

Security features of ZK Framework

Prevent Cross-site Request Forgery: PCRF

Sichere Webanwendungen mit Java

Exploits: XSS, SQLI, Buffer Overflow

SESSION IDENTIFIER ARE FOR NOW, PASSWORDS ARE FOREVER

Cross Site Scripting in Joomla Acajoom Component

Web Application Penetration Testing

Introduction to Computer Security

How To Fix A Web Application Security Vulnerability

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

HTML5. Eoin Keary CTO BCC Risk Advisory.

Web App Security Keeping your application safe Joe Walker

Cracking the Perimeter via Web Application Hacking. Zach Grace, CISSP, CEH January 17, Mega Conference

The Top Web Application Attacks: Are you vulnerable?

Semantic based Web Application Firewall (SWAF V 1.6) Operations and User Manual. Document Version 1.0

CSRF: Attack and Defense

Secure Coding. External App Integrations. Tim Bach Product Security Engineer salesforce.com. Astha Singhal Product Security Engineer salesforce.

Security Model for the Client-Side Web Application Environments

Implementation of Web Application Firewall

Controlling Risk, Conserving Bandwidth, and Monitoring Productivity with Websense Web Security and Websense Content Gateway

Recommended Practice Case Study: Cross-Site Scripting. February 2007

Web Application Vulnerability Testing with Nessus

Gateway Apps - Security Summary SECURITY SUMMARY

ecommercesoftwareone Advance User s Guide -

Web Application Security

Uploaded images filter evasion for carrying out XSS attacks

Hacking Intranet Websites from the Outside

Sichere Software- Entwicklung für Java Entwickler

Detecting and Defending Against Security Vulnerabilities for Web 2.0 Applications

What is Web Security? Motivation

Web Application Security. Vulnerabilities, Weakness and Countermeasures. Massimo Cotelli CISSP. Secure

Checking Browser Settings, and Basic System Requirements for QuestionPoint

Web Application Attacks And WAF Evasion

MatriXay WEB Application Vulnerability Scanner V Overview. (DAS- WEBScan ) The best WEB application assessment tool

WEB ATTACKS AND COUNTERMEASURES

Cross-Site Scripting

Information Supplement: Requirement 6.6 Code Reviews and Application Firewalls Clarified

APPLICATION SECURITY AND ITS IMPORTANCE

Web Application Security Assessment and Vulnerability Mitigation Tests

Security starts in the head(er)

How To Protect A Web Application From Attack From A Trusted Environment

The Devil is Phishing: Rethinking Web Single Sign On Systems Security. Chuan Yue USENIX Workshop on Large Scale Exploits

Cyber Security Challenge Australia 2014

Dan Hubbard VP Security Research

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

Hacking de aplicaciones Web

Contemporary Web Application Attacks. Ivan Pang Senior Consultant Edvance Limited

Secure Coding in Node.js

Search Engine Optimization Glossary

Bank Hacking Live! Ofer Maor CTO, Hacktics Ltd. ATC-4, 12 Jun 2006, 4:30PM

Thomas Röthlisberger IT Security Analyst

Guidelines for Web applications protection with dedicated Web Application Firewall

Recent Advances in Web Application Security

Using Steelhead Appliances and Stingray Aptimizer to Accelerate Microsoft SharePoint WHITE PAPER

How to Configure Captive Portal

NoSQL, But Even Less Security Bryan Sullivan, Senior Security Researcher, Adobe Secure Software Engineering Team

Hack Yourself First. Troy troyhunt.com

Role of Computer Security in Identity Theft (November 2007)

Last update: February 23, 2004

OAuth: Where are we going?

External Vulnerability Assessment. -Technical Summary- ABC ORGANIZATION

Recon and Mapping Tools and Exploitation Tools in SamuraiWTF Report section Nick Robbins

Transcription:

Preparing for the Cross Site Request Forgery Defense Chuck Willis chuck.willis@mandiant.com Black Hat DC 2008 February 20, 2008

About Me Principal Consultant with MANDIANT in Alexandria, VA Full spectrum information security company: Commercial and Government Services Public and Private Training Courses Forensic and Incident Response Products Services include Application Security, Network Security, Incident Response, Computer Forensics, Research and Development Free Software releases include Red Curtain, Web Historian, First Response Product available: MANDIANT Intelligent Response 1

Agenda Scenario What is Cross Site Request Forgery? How do CSRFs relate to investigations and forensics? CSRF Case Studies and Live Demos Scope of CSRF Vulnerabilities How to detect or rule out CSRF during a forensic exam How to detect and prevent CSRF in a web application 2

Scenario

Scenario Examining a user s computer for evidence of kitty (as in cat) pornography and you find: Google searches for kitty pr0n Flikr searches for kitty Images in web cache of cats in compromising positions Pages in the web cache and browser history for sites like www.kittyandme.com 4

Scenario Continue looking and find more things (via the cache or via a subpoena): Netflix queue has movies like: Garfield: A Tail of Two Kitties Hello Kitty's Paradise Cat on a Hot Tin Roof Posts to online forums describing love for cats 5

Scenario Question: Based on this evidence can you determine that the user was actively seeking or knowingly possessing cat porn? Answer: Not necessarily all the evidence above could have been placed by a web application vulnerability known as Cross Site Request Forgery (CSRF) 6

My Experience I have not seen use of Cross Site Request Forgeries of the nature described in this presentation during investigations However: It is possible that they are being used in some cases in this way More importantly, this issue could be brought up as part of a person s defense 7

What is CSRF?

What's in a name? Cross Site Request Forgery (CSRF) is the most common name for a web application security issue also known as: Cross Site Reference Forgery (CSRF) XSRF (similar to XSS acronym for Cross Site Scripting) "Sea Surf" Session Riding One-Click Attack (Microsoft's terminology) Hostile Linking A type of Confused Deputy attack 9

CSRF vs XSS Despite the similar sounding names, Cross Site Request Forgeries (CSRF) and Cross Site Scripting (XSS) refer to completely different issues which require entirely different protection mechanisms 10

CSRF Defined CSRF is an exploitation of the HTTP protocol's feature that a web page can include HTML elements that will cause the browser to make a request to any other web site Like all HTTP transactions, the submission to the second site will include the user s session information (usually cookies) if they have an established session Regardless of if the user has a session with the second site, elements of the second site will be loaded in the victim's browser and can appear in the cache and history CSRF can occur on either an HTTP GET or a POST 11

Simple GET CSRF In Action 1. Login 2. Set-Cookie User's Web Browser 5. Forced Request (with Cookies) to http://target/app?param=v1&p2=v2 4. Response with Request to Target <iframe style="width:0px; height:0px; border: 0px" src="http://target/app? param=v1&p2=v2"> Target Web App (such as a Web Forum) 3. Request Attacker's Web Site (CSRF Host) 12

GET CSRF The simplest way to create a GET request is with an HTML Image tag, such as: <img src="http://target/app? param=v1&p2=v2"> But, an image tag will only retrieve the specific URL listed (not any referenced images, scripts, etc) so another method is to use a "hidden inline frame": <iframe style="width:0px; height:0px; border: 0px" src="http://target/app? param=v1&p2=v2"> 13

Ways to force a GET request in HTML GET requests can be elicited using: Image: <img src=""> Script: <script src=""> Link: <a href=""> Background Image Cascading Style Sheet Page Icon Frame (Inline or traditional) Prefetch Link Pop-Up / Pop-Under browser window Applet / Flash Code / ActiveX Control (<object>, <embed> and/or <applet> tag) 14

Types of CSRF Hosts An attacker does not need to lure the victim to his or her own web server to create a CSRF Other places to host a CSRF: Online Forum (often allow a user to link to an image as an avatar or as an attachment) HTML Email Photo Gallery Wiki Blog Online Auctions and E-Commerce Sites Pretty much any site that allows for posting anything like HTML The CSRF could be hosted on the target server itself 15

Session Mechanisms Most web applications store session identifiers in a cookie, which makes them vulnerable to CSRF Other session mechanisms are also vulnerable to CSRF: HTTP Basic Authentication HTTP Digest Authentication Integrated Windows Authentication (NTLM or Kerberos) Session tracking in the URL or query parameters is not vulnerable to CSRF 16

CSRF on an Intranet One of the troubling aspects of CSRF is that the attacker does not even need to be able to access the target application All traffic to the application comes from the victim user, so as long as he or she can access the application, the CSRF can be performed CSRF can be particularly devastating against Intranet applications: Often use Windows Integrated authentication - no login required! Often have poor access controls and logging 17

CSRF on an Intranet INTRANET User's Web Browser 3. Forced Request (with User's automatic Authentication) Firewall Target Web App 2. Response that will elicit a Request to Target 1. Request Attacker's Content 18

CSRFs in Investigations During investigations and forensics, we are concerned with CSRF for two reasons: Server side state changes (the normal motivation for preventing CSRF in web application security) Effects of CSRF on the client web browser and the client's web traffic Causes sites to be visited without the user's knowledge Causes items to be written into the user's web cache Can cause URLs to be added to the browser history (depends on circumstances and browser) 19

CSRF Case Studies

Netflix CSRF Case Study In September 2006, security researcher Dave Ferguson notified Netflix of a variety of CSRF issues with their site Dave publicly released information about the issues in October 2006 after the most significant issues were addressed 21

Netflix CSRF Case Study Like most Internet applications, Netflix uses cookies to store session information Netflix used GET requests to handle pretty much all its user input For example, the "Add" button to add a movie to your rental queue was a simple link to a URL like: http://www.netflix.com/addtoqueue? movieid=12345678 22

Messing with the Queue Dave recognized this fertile ground for CSRF He crafted HTML to add a movie to the user's queue: <img src = "http://www.netflix.com/ AddToQueue?movieid=12345678"> He also recognized that he could move the new movie to the top of the user's queue (after a short delay in JavaScript): <img src = "http://www.netflix.com/ MoveToTop?movieid=12345678 &fromq=true"> 23

Netflix CSRF Unresolved As of February 2008 (17 months later), this issue has not been resolved and Netflix users are still vulnerable to CSRF in the form: <img src = "http://www.netflix.com/ AddToQueue?movieid=12345678"> 24

Netflix CSRF Demo

Netflix CSRF Unresolved 26

CSRF in Search Engines Search engine queries are almost always done with GET requests This makes them easily vulnerable to GET CSRF requests 27

CSRF in Google A normal Google search URL looks like: http://www.google.com/search?hl=en&q= cat+pics&btng=google+search All that is need to execute a CSRF to Google is the HTML: <iframe style="width:0px; height:0px; border: 0px" src="http://www.google.com/search?hl =en&q=cat+pics&btng=google+search"> 28

CSRF in Google A CSRF forced search to Google will: Show up in the user's cache Possibly show up in the user's web browser's history In Firefox, cause first link to be pre-fetched and added to the cache Show up in the user's search history if they have enabled that feature with Google Probably be stored in Google's internal databases 29

Google CSRF Demo

Scope of CSRF Vulnerabilities

Scope of CSRF Vulnerabilities "In fact, if you have not taken specific steps to mitigate the risk of CSRF attacks, your applications are most likely vulnerable." - Chris Shiflett in 2004 http://shiflett.org/articles/cross-site-request-forgeries 32

Scope of CSRF Vulnerabilities "No statistics, but the general consensus is just about every piece of sensitive website functionality is vulnerable [to Cross Site Request Forgery]." - Jeremiah Grossman and T.C. Niedzialkowski in 2006 http://www.whitehatsec.com/home/resources/ presentations/files/javascript_malware.pdf 33

Scope of CSRF Vulnerabilities "Cross-Site Request Forgery (aka CSRF or XSRF) is a dangerous vulnerability present in just about every website." - Jeremiah Grossman in 2006 http://jeremiahgrossman.blogspot.com/2006/09/csrfsleeping-giant.html 34

Scope of CSRF Vulnerabilities "Cross site request forgery is not a new attack, but is simple and devastating." "This vulnerability is extremely widespread." "All web application frameworks are vulnerable to CSRF. " - OWASP Top Ten 2007 http://www.owasp.org/index.php/top_10_2007-a5 35

How to detect or rule out CSRF during an investigation

How to detect or rule out CSRF Look for pages that forced the requests in the cache Page(s) will not be in the cache if they have been marked "no cache": By the server in HTTP headers In the HTML itself using <meta equiv> tags Some CSRF hosts will not allow the attacker to control caching of the page(s) Be aware of encodings of the target URL and the enclosing tag 37

URL Encodings / Obfuscation Parameters in a URL may be URL encoded: http://www.google.com/search?%68%6c=%65% 6E&%71=%63%61%74%2B%70%69%63%73& %62%74%6E%47=%47%6F%6F%67%6C%65 %2B%53%65%61%72%63%68 Hostname in a URL may be replaced by IP address in: Standard dotted format (64.233.169.103) DWord Format (1089055079) Hex Format (0x40.0xe9.0xa9.0x67) Octal Format (0100.0351.0251.0147) 38

HTML Tag Encodings / Obfuscation HTML tags may be encoded in a variety of manners similar to a Cross Site Scripting attack <iframe/randomtext... > <<<iframe... > <IMG """><iframe... >"> perl -e 'print "<ifr\0ame...>";' <script>document.write(unescape('%3c% 69...%22%3E'));</script> See RSnake s Cross Site Scripting (XSS) Cheat Sheet at http://ha.ckers.org/xss.html 39

How to detect or rule out CSRF Look at the web browser's history URLs that have been forced by a CSRF (such as in an IFRAME or an IMG tag) may not appear in the browser history (depends on circumstances and browser) Pages found on disk but not in the history could be an indication of CSRF, but are more likely the result either: Browser history and cache aging differently User clearing the history 40

How to detect or rule out CSRF Construct a timeline Most fruitful way to detect or rule out a Cross Site Request Forgery is to construct a timeline of the user s activity Merge data from the web browser cache, web browser history, and any other logs that you may have (Proxy, IDS, Firewall, Web Server, etc) Examine items immediately before the activity in question to determine if a CSRF may be involved 41

How to detect or rule out CSRF Look at the list of URLs that were typed into the address bar of the browser This information cannot be forced Not all browsers record a list of URLs that were typed into the browser Users will type in the URL for only a small percentage of sites that they visit 42

How to detect or rule out CSRF Look at items in browser Favorites / Bookmarks This information cannot be forced Users will bookmark only a small percentage of sites that they visit 43

How to detect or rule out CSRF Look for evidence outside of the web browser cache For example, if you are interested in image files, look for image files outside of the cache (indicating that the user intentionally saved them) Will only find things that the user obtained from non-web sources or that the user saved from a web site 44

How to detect or rule out CSRF Determine if the application is vulnerable to CSRF This will only help in investigating a "traditional" CSRF issue where a state change on the server may have been forced There is no way that a web application can prevent CSRFs that only aim to affect the local browser cache and history If the relevant web page of application is not vulnerable to CSRF, then the information in question could not have been forced by a CSRF Next section will detail how to determine if a page on a web application is vulnerable to CSRF 45

How to detect and prevent CSRF in a web application

Identifying CSRF The key characteristics of a CSRF vulnerability are: Application accepts a request that makes something occur on the server Attacker can determine all the parameters of that request for another user (typically in a CSRF the parameters are fixed for all users) 47

How not to prevent CSRF There are suggestions sometimes made to address CSRF that do not work: "Check referrer headers, if the referrer is not from this domain, ignore the request" Referrer headers are not sent with all requests depending on circumstances and the browser in use Some users / browsers never send referrer headers so they will not be able to access the app 48

How not to prevent CSRF "Use POST requests instead of GETs" CSRF with an HTTP POST request is only a tiny bit harder than with an HTTP GET request "Limit the duration of sessions" This reduces the window of exposure for your application to CSRF, but does not eliminate it Some applications want / need long sessions 49

Preventing CSRF CSRF cannot be directly prevented in that an application cannot prevent other sites from forcing users to make requests to the application CSRF only needs to be prevented in forms that cause a state change in the application - there is no need to worry about CSRF for GET requests on a well designed application The key to preventing CSRF is for an application to determine which requests are legitimate and which have been forced by a CSRF before acting on the request 50

Preventing CSRF In order to prevent CSRF, an additional parameter must be added to a request, either on the URL line parameters or in POST parameters This is implemented by adding the parameter to a form as a hidden field or to the "action" (location where the form submits) This parameter must not be something that the attacker can determine so he or she cannot construct a link or script to execute a CSRF 51

Preventing CSRF The most easiest parameter to use is the session ID Using the session ID to prevent CSRF is sometimes known as "Double Cookie Submission" There are some issues with reusing the session ID for this purpose A better technique is to use a separate unique identifier that is also tied to the user's session 52

Questions? Chuck Willis chuck.willis@mandiant.com

Preparing for the Cross Site Request Forgery Defense Chuck Willis chuck.willis@mandiant.com Black Hat DC 2008 February 20, 2008