SlideShare a Scribd company logo
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Understanding
Cross-site
Request Forgery
Daniel Miessler
Principal Security Architect, HP Fortify
May 2013
Daniel Miessler, CISSP, CISA, GCIA
Principal Security Architect, HP Fortify
- 10 years experience doing security testing
- 5 years experience doing appsec testing
- Web Application Vulnerability Assessments
- Mobile Application Vulnerability Assessments
- Application Security Process Development
- Enterprise Security Consulting
daniel.miessler@hp.com
Introductions
Agenda
- Problem
- Basics
- Description
- Validation
- Defenses
- Attack Vectors
- CSRF Tester
- Takeaways
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Problem
Problem | Overview
 CSRF is an OWASP Top 10 vulnerability but it’s not as
well understood as many others
 Many struggle with how to validate it
 Customers have difficulty explaining to management
why it’s important to fix
 We need to be well-versed in the main points to help
the customer with their narrative to management
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Basics
Basics | Overview
 Often abbreviated as “CSRF” and pronounced as
“Sea Surf”
 #5 on the 2010 OWASP Top 10
 #8 on the 2013 OWASP Top 10
Basics | OWASP
Basics | Description
“Cross-site Request Forgery is a
vulnerability in a website that allows
attackers to force victims to perform
security-sensitive actions on that site
without their knowledge.”
Basics | Description
Let’s unpack that.
Basics | Description
“Cross-site Request Forgery is a
vulnerability in a website that allows
attackers to force victims to perform
security-sensitive actions on that site
without their knowledge.”
Basics | Description
“Cross-site Request Forgery is a
vulnerability in a website that allows
attackers to force victims to perform
security-sensitive actions on that site
without their knowledge.”
Basics | Description
“Cross-site Request Forgery is a
vulnerability in a website that allows
attackers to force victims to perform
security-sensitive actions on that site
without their knowledge.”
Basics | Description
 What do we mean by “sensitive actions”?
 How do attackers “force” victims to perform
them?
 And how do the victims not know it’s
happening?
1. The target is a sensitive operation in the
application, e.g. UpdateSalary.aspx, that’s able to
be tricked into executing.
2. Victims can be forced to execute this action through
any method that gets them to load a resource
automatically, e.g. img tag, script tag, onload form
submit, etc. Note: credentials go with all requests!
3. These happen unknowingly because the actions are
performed by the victim’s browser, not by the victim
explicitly.
Basics | Description
Sensitive action examples:
 /EditDocument.aspx
 /Login.do
 /CreateAdmin.php
 /UpdateStatus/
Basics | Examples
Forcing the victim to execute the action
(GET):
- <img
src=“http://site.com/transfer.php?fromac
ct=2042&toacct=4497 /> (GET)
Basics | Forced POSTs
Forcing the victim to execute the action
(POST):
Basics | Description
Both XSS and CSRF are possible due to abused
trust relationships:
 In XSS the browser will run malicious JavaScript because it was served
from a site (origin) it trusts.
 In CSRF the server will perform a sensitive action because it was sent
by a client that it trusts.
Basics | Trust Abuse
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Validation
Validation | Criteria
If you can’t change something using your CSRF
vulnerability, then you don’t have one.
Examples of state changes:
- Updating an account (new password?)
- Transferring funds
- Changing the role of a user
- Ordering an item
- Adding an administrator to a system
Validation | Criteria
If your CSRF vulnerability doesn’t change
something sensitive, then you might not have
one.
Note: sensitivity is a…sensitive matter. Who is it
sensitive to? Could it be sensitive to some and
not others?
 Many changes are insignificant
 Remember that if the business understands the technical
risk then they automatically win the “what matters”
argument
Validation | Criteria
If requests for your CSRF vulnerability are
unique, you might not have one.
Things to check for uniqueness:
- Nonces
- CAPTCHA
- Multiple authentication levels
Validation | Criteria
The three components again…
1. Can you change state using it?
2. Is the function sensitive?
3. Is the request non-unique?
 This is the core of the validation process
 Any customer asking you to validate a CSRF
vulnerability should hear and learn these same
concepts
Validation | WebInspect
How WebInspect identifies CSRF:
1. Log in to the site
2. Complete a form and generate post request with current session
cookies
3. If response is 30X, follow the redirection (with current session
cookies) until the non-30x response is reached. This is response #1
(R1)
4. Log out and log in the site with different credentials (note session
cookies should be changed here)
5. Resend the same POST request as in step 2, but with the new
cookies
6. If necessary, follow redirects per step 3
7. Note the response as R2
8. If R1==R2, then it’s a non-unique request and therefore is CSRF-able
Validation | Manual Validation
How to manually verify CSRF:
1. Configure a proxy to observe traffic
2. Log in to the site with the issue in question
3. Perform the target functionality normally, through the browser
4. Observe the request, looking for state change, sensitivity, and
uniqueness
5. Look for any additional controls that could stop CSRF, such as
CAPTCHA or additional authentication
6. Log out and log in with a different set of credentials
7. Submit the initial request from the new context, and see if it is
successful
8. If the action is performed without issue, it is most likely CSRF
9. Remember that the issue must also satisfy the state change and
sensitivity requirements. Non-uniqueness is not enough.
Validation | Caution with Automation
Don’t trust the claims from tools. They’re often
right, but they’re only guessing at sensitivity:
 Validation of non-uniqueness doesn’t mean the
action is sensitive, i.e. it could be a “business”
false positive even if it’s valid technically
 CSRF is a high-false-positive vulnerability when
automation is used
 Tools make educated guesses that require
validation of all three criteria
© Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Defense
Defense | Overview
 The primary defense for Cross-site Request
Forgery is creating unique requests that cannot
be easily generated by attackers.
 This is usually accomplished via a nonce (a
number used once).
 CAPTCHAs can also be used, as well as
authentication prompts
Digging In | Nonces
<%
function session_initiate(first_name, last_name /* etc */) {
session.fisrt_name = first_name
session.last_name = last_name
/* etc */
session.form_token = generate_form_token()
}
%>
Then, in the page code:
<%
<form>
<input name=”field1”><br>
<input name=”field2”><br>
<input type=”submit”>
<input name=”form_token” type=”hidden” value=”<%= session.form_token %>”>
</form>
When the form is submitted, the following is executed:
if (post.form_token != session.form_token) {
log_CSRF_attack()
error_and_exit()
}
// normal form handling here
Defense | Nonces
 Nonces make it so that generic requests to
sensitive resources don’t get executed
 This works by providing a one-time-secret
when a legitimate client arrives at a given
location, and then that token (nonce) must be
submitted along with a request to prove that’s
legitimate
Defense | CAPTCHA
© Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Attack Vectors
Attack Vectors | Leveraging XSS
 The key to CSRF defense is that the attacker doesn’t
have access to a valid nonce
 But with XSS present the attacker could force the victim
to make a request to the site, consume the nonce, and
add it to the CSRF request
 This is what the Samy Worm did; he pulled the token first
and used it to submit the (now valid) friend addition
Attack Vectors | SAMY
Step #9 from Samy’s technical description
of his attack:
http://namb.la/popular/tech.html
Digging In | Clarification
Forcing the victim to execute the action (POST):
Attack Vectors | Options
 Take control of a legitimate, well-trafficked but
low priority internal site and post a form that
submits the attack
 Use persistent XSS to inject code on a
vulnerable site, e.g. a forum
 Create a new site internally and entice users
to visit the site via email, etc. (phishing-ish)
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
CSRF Tester
CSRF Tester | Overview
• CSRF Tester is an
OWASP tool for creating
CSRF PoC code
• It works by capturing you
doing something
sensitive, and then
generating PoC code for
you try in another user
context
• You must set your
JAVA_HOME environment
variable to launch it
• Listens on port 8008
CSRF Tester | Usage
• Send traffic through CSRF
Tester like any other proxy
• Record the execution of a
sensitive action on the site
• You then create a “report”
of a certain
type, Form, iFrame, IMG,
XHR, Link
• That code is now the PoC
for testing to see if it’s a
CSRF issue
• The test is whether or not
it executes from other
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Takeaways
Takeaways | Overview
1. CSRF is # 8 on the OWASP Top 10
2. Abuses server’s trust of client
3. Forces user to perform sensitive function
4. Validate by: State-change, Sensitivity, Non-uniqueness
5. Nonces are a common defense
6. XSS can assist CSRF by getting code onto a page and by
bypassing nonce defenses by having the user request a
valid nonce before submitting
7. Single sign-on can magnify CSRF issues
8. Remember that customers are deeply confused by CSRF
and will require constant reinforcement
9. Repetition: State(change)/Sensitivity/Uniqueness (SSU)
Takeaways | Resources
1. https://www.owasp.org/index.php/Cross-
Site_Request_Forgery_(CSRF)_Prevention_Cheat_
Sheet)
2. http://en.wikipedia.org/wiki/Cross-
site_request_forgery
3. https://www.owasp.org/index.php/Category:OWASP_
CSRFTester_Project
4. http://code.google.com/p/pinata-csrf-tool/
5. http://www.threadstrong.com/courses/csrf/
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Questions

More Related Content

PDF
Owasp top 10
PPTX
Web application security
PPTX
Security testing
PDF
Cross site scripting
PPTX
The OWASP Zed Attack Proxy
PDF
XSS Magic tricks
PPTX
Cross Site Scripting
PPTX
Vulnerabilities in modern web applications
Owasp top 10
Web application security
Security testing
Cross site scripting
The OWASP Zed Attack Proxy
XSS Magic tricks
Cross Site Scripting
Vulnerabilities in modern web applications

What's hot (20)

PPTX
Cross Site Request Forgery (CSRF) Scripting Explained
PPTX
Cross Site Scripting ( XSS)
PPT
Introduction to Web Application Penetration Testing
PPTX
CSRF Attack and Its Prevention technique in ASP.NET MVC
PPTX
Command injection
PDF
Web Application Penetration Testing
PPT
Cross Site Request Forgery Vulnerabilities
PPTX
SSRF exploit the trust relationship
PDF
Api security-testing
PPTX
PPTX
Xss attack
PPT
Cross Site Request Forgery
PDF
Web application security & Testing
PDF
Secure Code Review 101
PPTX
Introduction to path traversal attack
PPTX
Directory Traversal & File Inclusion Attacks
PDF
SSRF workshop
PPTX
PDF
Cross site scripting attacks and defenses
Cross Site Request Forgery (CSRF) Scripting Explained
Cross Site Scripting ( XSS)
Introduction to Web Application Penetration Testing
CSRF Attack and Its Prevention technique in ASP.NET MVC
Command injection
Web Application Penetration Testing
Cross Site Request Forgery Vulnerabilities
SSRF exploit the trust relationship
Api security-testing
Xss attack
Cross Site Request Forgery
Web application security & Testing
Secure Code Review 101
Introduction to path traversal attack
Directory Traversal & File Inclusion Attacks
SSRF workshop
Cross site scripting attacks and defenses
Ad

Viewers also liked (20)

PPTX
Its all about CSRF - null Mumbai Meet 10 January 2015 Null/OWASP Chapter
PPTX
Introduction to CSRF Attacks & Defense
PPTX
Peak Prevention: Moving from Prevention to Resilience
PPTX
A8 cross site request forgery (csrf) it 6873 presentation
PDF
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015
PDF
[Infosecworld 08 Orlando] CSRF: The Biggest Little Vulnerability on the Web
PDF
Be Afraid. Be Very Afraid. Javascript security, XSS & CSRF
PPT
DEFCON 17 Presentation: CSRF - Yeah, It Still Works
PPT
[Php Camp]Owasp Php Top5+Csrf
PPTX
CLUSIR INFONORD OWASP iot 2014
PDF
The Real Internet of Things: How Universal Daemonization Will Change Everything
PDF
SecLists @ BlackHat Arsenal 2015
PPTX
Spirent: The Internet of Things: The Expanded Security Perimeter
PDF
RSA2015: Securing the Internet of Things
PDF
Evolution of The Application
PPTX
Sql injection
PDF
IoT Attack Surfaces -- DEFCON 2015
PPTX
Adaptive Testing Methodology [ ATM ]
PPTX
SQL Injection
PDF
Implementing Inexpensive Honeytrap Techniques
Its all about CSRF - null Mumbai Meet 10 January 2015 Null/OWASP Chapter
Introduction to CSRF Attacks & Defense
Peak Prevention: Moving from Prevention to Resilience
A8 cross site request forgery (csrf) it 6873 presentation
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015
[Infosecworld 08 Orlando] CSRF: The Biggest Little Vulnerability on the Web
Be Afraid. Be Very Afraid. Javascript security, XSS & CSRF
DEFCON 17 Presentation: CSRF - Yeah, It Still Works
[Php Camp]Owasp Php Top5+Csrf
CLUSIR INFONORD OWASP iot 2014
The Real Internet of Things: How Universal Daemonization Will Change Everything
SecLists @ BlackHat Arsenal 2015
Spirent: The Internet of Things: The Expanded Security Perimeter
RSA2015: Securing the Internet of Things
Evolution of The Application
Sql injection
IoT Attack Surfaces -- DEFCON 2015
Adaptive Testing Methodology [ ATM ]
SQL Injection
Implementing Inexpensive Honeytrap Techniques
Ad

Similar to Understanding Cross-site Request Forgery (20)

PPTX
Cyber security 2.pptx
PPTX
Cross site request forgery(csrf)
PPTX
Cross Site Request Forgery- CSRF
PDF
A4 A K S H A Y B H A R D W A J
PDF
Cross-site request forgery (also known as CSRF) is a web vulnerability that a...
PDF
Cross-Site Request Forgery Vulnerability: “A Sleeping Giant”
PDF
CSRF Attacks and its Defence using Middleware
PPTX
Mitigating CSRF with two lines of codes
PDF
Prevention Against CSRF Attack using Client Server Mutual Authentication Tech...
PPTX
CSRF_main_vid.pptx
PDF
Oh no, was that CSRF #Ouch
PPT
Web Security Overview and Demo
PPTX
JSON based CSRF
PDF
Understanding CSRF
PDF
Csrf
PPTX
Exploring Web Security Threats: A Practical Study on SQL Injection and CSRF
PPTX
Web application security
PPT
CSRF_RSA_2008_Jeremiah_Grossman
PPT
Cyber security 2.pptx
Cross site request forgery(csrf)
Cross Site Request Forgery- CSRF
A4 A K S H A Y B H A R D W A J
Cross-site request forgery (also known as CSRF) is a web vulnerability that a...
Cross-Site Request Forgery Vulnerability: “A Sleeping Giant”
CSRF Attacks and its Defence using Middleware
Mitigating CSRF with two lines of codes
Prevention Against CSRF Attack using Client Server Mutual Authentication Tech...
CSRF_main_vid.pptx
Oh no, was that CSRF #Ouch
Web Security Overview and Demo
JSON based CSRF
Understanding CSRF
Csrf
Exploring Web Security Threats: A Practical Study on SQL Injection and CSRF
Web application security
CSRF_RSA_2008_Jeremiah_Grossman

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Electronic commerce courselecture one. Pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
A Presentation on Artificial Intelligence
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPT
Teaching material agriculture food technology
PDF
Approach and Philosophy of On baking technology
PDF
Spectral efficient network and resource selection model in 5G networks
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Monthly Chronicles - July 2025
Electronic commerce courselecture one. Pdf
Unlocking AI with Model Context Protocol (MCP)
Diabetes mellitus diagnosis method based random forest with bat algorithm
The AUB Centre for AI in Media Proposal.docx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Network Security Unit 5.pdf for BCA BBA.
A Presentation on Artificial Intelligence
Review of recent advances in non-invasive hemoglobin estimation
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Teaching material agriculture food technology
Approach and Philosophy of On baking technology
Spectral efficient network and resource selection model in 5G networks
“AI and Expert System Decision Support & Business Intelligence Systems”
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx

Understanding Cross-site Request Forgery

  • 1. © Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Understanding Cross-site Request Forgery Daniel Miessler Principal Security Architect, HP Fortify May 2013
  • 2. Daniel Miessler, CISSP, CISA, GCIA Principal Security Architect, HP Fortify - 10 years experience doing security testing - 5 years experience doing appsec testing - Web Application Vulnerability Assessments - Mobile Application Vulnerability Assessments - Application Security Process Development - Enterprise Security Consulting daniel.miessler@hp.com Introductions
  • 3. Agenda - Problem - Basics - Description - Validation - Defenses - Attack Vectors - CSRF Tester - Takeaways
  • 4. © Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Problem
  • 5. Problem | Overview  CSRF is an OWASP Top 10 vulnerability but it’s not as well understood as many others  Many struggle with how to validate it  Customers have difficulty explaining to management why it’s important to fix  We need to be well-versed in the main points to help the customer with their narrative to management
  • 6. © Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Basics
  • 7. Basics | Overview  Often abbreviated as “CSRF” and pronounced as “Sea Surf”  #5 on the 2010 OWASP Top 10  #8 on the 2013 OWASP Top 10
  • 9. Basics | Description “Cross-site Request Forgery is a vulnerability in a website that allows attackers to force victims to perform security-sensitive actions on that site without their knowledge.”
  • 11. Basics | Description “Cross-site Request Forgery is a vulnerability in a website that allows attackers to force victims to perform security-sensitive actions on that site without their knowledge.”
  • 12. Basics | Description “Cross-site Request Forgery is a vulnerability in a website that allows attackers to force victims to perform security-sensitive actions on that site without their knowledge.”
  • 13. Basics | Description “Cross-site Request Forgery is a vulnerability in a website that allows attackers to force victims to perform security-sensitive actions on that site without their knowledge.”
  • 14. Basics | Description  What do we mean by “sensitive actions”?  How do attackers “force” victims to perform them?  And how do the victims not know it’s happening?
  • 15. 1. The target is a sensitive operation in the application, e.g. UpdateSalary.aspx, that’s able to be tricked into executing. 2. Victims can be forced to execute this action through any method that gets them to load a resource automatically, e.g. img tag, script tag, onload form submit, etc. Note: credentials go with all requests! 3. These happen unknowingly because the actions are performed by the victim’s browser, not by the victim explicitly. Basics | Description
  • 16. Sensitive action examples:  /EditDocument.aspx  /Login.do  /CreateAdmin.php  /UpdateStatus/ Basics | Examples
  • 17. Forcing the victim to execute the action (GET): - <img src=“http://site.com/transfer.php?fromac ct=2042&toacct=4497 /> (GET) Basics | Forced POSTs
  • 18. Forcing the victim to execute the action (POST): Basics | Description
  • 19. Both XSS and CSRF are possible due to abused trust relationships:  In XSS the browser will run malicious JavaScript because it was served from a site (origin) it trusts.  In CSRF the server will perform a sensitive action because it was sent by a client that it trusts. Basics | Trust Abuse
  • 20. © Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Validation
  • 21. Validation | Criteria If you can’t change something using your CSRF vulnerability, then you don’t have one. Examples of state changes: - Updating an account (new password?) - Transferring funds - Changing the role of a user - Ordering an item - Adding an administrator to a system
  • 22. Validation | Criteria If your CSRF vulnerability doesn’t change something sensitive, then you might not have one. Note: sensitivity is a…sensitive matter. Who is it sensitive to? Could it be sensitive to some and not others?  Many changes are insignificant  Remember that if the business understands the technical risk then they automatically win the “what matters” argument
  • 23. Validation | Criteria If requests for your CSRF vulnerability are unique, you might not have one. Things to check for uniqueness: - Nonces - CAPTCHA - Multiple authentication levels
  • 24. Validation | Criteria The three components again… 1. Can you change state using it? 2. Is the function sensitive? 3. Is the request non-unique?  This is the core of the validation process  Any customer asking you to validate a CSRF vulnerability should hear and learn these same concepts
  • 25. Validation | WebInspect How WebInspect identifies CSRF: 1. Log in to the site 2. Complete a form and generate post request with current session cookies 3. If response is 30X, follow the redirection (with current session cookies) until the non-30x response is reached. This is response #1 (R1) 4. Log out and log in the site with different credentials (note session cookies should be changed here) 5. Resend the same POST request as in step 2, but with the new cookies 6. If necessary, follow redirects per step 3 7. Note the response as R2 8. If R1==R2, then it’s a non-unique request and therefore is CSRF-able
  • 26. Validation | Manual Validation How to manually verify CSRF: 1. Configure a proxy to observe traffic 2. Log in to the site with the issue in question 3. Perform the target functionality normally, through the browser 4. Observe the request, looking for state change, sensitivity, and uniqueness 5. Look for any additional controls that could stop CSRF, such as CAPTCHA or additional authentication 6. Log out and log in with a different set of credentials 7. Submit the initial request from the new context, and see if it is successful 8. If the action is performed without issue, it is most likely CSRF 9. Remember that the issue must also satisfy the state change and sensitivity requirements. Non-uniqueness is not enough.
  • 27. Validation | Caution with Automation Don’t trust the claims from tools. They’re often right, but they’re only guessing at sensitivity:  Validation of non-uniqueness doesn’t mean the action is sensitive, i.e. it could be a “business” false positive even if it’s valid technically  CSRF is a high-false-positive vulnerability when automation is used  Tools make educated guesses that require validation of all three criteria
  • 28. © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Defense
  • 29. Defense | Overview  The primary defense for Cross-site Request Forgery is creating unique requests that cannot be easily generated by attackers.  This is usually accomplished via a nonce (a number used once).  CAPTCHAs can also be used, as well as authentication prompts
  • 30. Digging In | Nonces <% function session_initiate(first_name, last_name /* etc */) { session.fisrt_name = first_name session.last_name = last_name /* etc */ session.form_token = generate_form_token() } %> Then, in the page code: <% <form> <input name=”field1”><br> <input name=”field2”><br> <input type=”submit”> <input name=”form_token” type=”hidden” value=”<%= session.form_token %>”> </form> When the form is submitted, the following is executed: if (post.form_token != session.form_token) { log_CSRF_attack() error_and_exit() } // normal form handling here
  • 31. Defense | Nonces  Nonces make it so that generic requests to sensitive resources don’t get executed  This works by providing a one-time-secret when a legitimate client arrives at a given location, and then that token (nonce) must be submitted along with a request to prove that’s legitimate
  • 33. © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Attack Vectors
  • 34. Attack Vectors | Leveraging XSS  The key to CSRF defense is that the attacker doesn’t have access to a valid nonce  But with XSS present the attacker could force the victim to make a request to the site, consume the nonce, and add it to the CSRF request  This is what the Samy Worm did; he pulled the token first and used it to submit the (now valid) friend addition
  • 35. Attack Vectors | SAMY Step #9 from Samy’s technical description of his attack: http://namb.la/popular/tech.html
  • 36. Digging In | Clarification Forcing the victim to execute the action (POST):
  • 37. Attack Vectors | Options  Take control of a legitimate, well-trafficked but low priority internal site and post a form that submits the attack  Use persistent XSS to inject code on a vulnerable site, e.g. a forum  Create a new site internally and entice users to visit the site via email, etc. (phishing-ish)
  • 38. © Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. CSRF Tester
  • 39. CSRF Tester | Overview • CSRF Tester is an OWASP tool for creating CSRF PoC code • It works by capturing you doing something sensitive, and then generating PoC code for you try in another user context • You must set your JAVA_HOME environment variable to launch it • Listens on port 8008
  • 40. CSRF Tester | Usage • Send traffic through CSRF Tester like any other proxy • Record the execution of a sensitive action on the site • You then create a “report” of a certain type, Form, iFrame, IMG, XHR, Link • That code is now the PoC for testing to see if it’s a CSRF issue • The test is whether or not it executes from other
  • 41. © Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Takeaways
  • 42. Takeaways | Overview 1. CSRF is # 8 on the OWASP Top 10 2. Abuses server’s trust of client 3. Forces user to perform sensitive function 4. Validate by: State-change, Sensitivity, Non-uniqueness 5. Nonces are a common defense 6. XSS can assist CSRF by getting code onto a page and by bypassing nonce defenses by having the user request a valid nonce before submitting 7. Single sign-on can magnify CSRF issues 8. Remember that customers are deeply confused by CSRF and will require constant reinforcement 9. Repetition: State(change)/Sensitivity/Uniqueness (SSU)
  • 43. Takeaways | Resources 1. https://www.owasp.org/index.php/Cross- Site_Request_Forgery_(CSRF)_Prevention_Cheat_ Sheet) 2. http://en.wikipedia.org/wiki/Cross- site_request_forgery 3. https://www.owasp.org/index.php/Category:OWASP_ CSRFTester_Project 4. http://code.google.com/p/pinata-csrf-tool/ 5. http://www.threadstrong.com/courses/csrf/
  • 44. © Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Questions

Editor's Notes

  • #2: My name is [Name]. I work at HP as a [Title] in the Enterprise Security Products group.Today, we’ll talk about application security; what it is, why its needed, how to do it and what benefits you will see.
  • #27: Why is there a problem, and why do you need application security?Like all organizations, you’ve undoubtedly, invested a lot of time and money attempting to insulate and protect your assets. Your networks are protected – firewalls are in nearly every devices that connects to a network. Your servers are protected, thanks to advances in intrusion prevention systems. But your software applications are still largely unprotected and vulnerable.Companies believed that if you protect the perimeter (network and server), the software will be unreachable and therefore not breachable. However, that has not proven to be the case: software is the New Entry Point.Let’s take a look at how…
  • #32: Why is there a problem, and why do you need application security?Like all organizations, you’ve undoubtedly, invested a lot of time and money attempting to insulate and protect your assets. Your networks are protected – firewalls are in nearly every devices that connects to a network. Your servers are protected, thanks to advances in intrusion prevention systems. But your software applications are still largely unprotected and vulnerable.Companies believed that if you protect the perimeter (network and server), the software will be unreachable and therefore not breachable. However, that has not proven to be the case: software is the New Entry Point.Let’s take a look at how…