owasp top 10 for 2010

45
The OWASP Foundation http://www.owasp.org OWASP Education Computer based training OWASP Top 10 for 2010 Nishi Kumar IT Architect Specialist, FIS Chair, Software Security Forum FIS OWASP CBT Project Lead OWASP Global Industry Committee [email protected] Keith Turpin The Boeing Company Application Security Assessments Lead OWASP Secure Coding Practices Lead OWASP Global Projects Committee [email protected] Content Provided by Dave Wichers

Upload: chiquita-warren

Post on 03-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

OWASP Education Computer based training. OWASP Top 10 for 2010. Keith Turpin The Boeing Company Application Security Assessments  Lead OWASP Secure Coding Practices Lead OWASP Global Projects Committee [email protected]. Nishi Kumar - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: OWASP Top 10 for 2010

The OWASP Foundationhttp://www.owasp.org

OWASP EducationComputer based training

OWASP Top 10 for 2010

Nishi KumarIT Architect Specialist, FIS

Chair, Software Security Forum FISOWASP CBT Project Lead

OWASP Global Industry [email protected]

Keith TurpinThe Boeing Company

Application Security Assessments  LeadOWASP Secure Coding Practices Lead

OWASP Global Projects [email protected]

Content Provided by

Dave Wichers

Page 2: OWASP Top 10 for 2010

2

Objectives Understand OWASP Top 10

Understand methodology used to choose OWASP Top 10 for 2010

Understand how OWASP Top 10 relates to CWE/SANS Top 25

Identify and Remediate vulnerabilities from OWASP Top 10

Page 3: OWASP Top 10 for 2010

3

OWASP Top 10 2010Risk Rating Methodology

Page 4: OWASP Top 10 for 2010

4

OWASP Top 10

Page 5: OWASP Top 10 for 2010

5

OWASP ESAPI 2.0 & OWASP Top 10 for 2010 mapping

A1: InjectionA1: Injection

A2: Cross-Site Scripting (XSS)A2: Cross-Site Scripting (XSS)

A3: Broken Authentication and Session ManagementA3: Broken Authentication and Session Management

A4: Insecure Direct Object ReferencesA4: Insecure Direct Object References

A5: Cross-Site Request Forgery (CSRF)A5: Cross-Site Request Forgery (CSRF)

A6: Security MisconfigurationA6: Security Misconfiguration

A7: Insecure Cryptographic StorageA7: Insecure Cryptographic Storage

A8: Failure to Restrict URL AccessA8: Failure to Restrict URL Access

A9: Insufficient Transport Layer ProtectionA9: Insufficient Transport Layer Protection

A10: Unvalidated Redirects and ForwardsA10: Unvalidated Redirects and Forwards

EncoderEncoder

Encoder, ValidatorEncoder, Validator

Authenticator, User, HTTPUtilitiesAuthenticator, User, HTTPUtilities

AccessReferenceMap, AccessControllerAccessReferenceMap, AccessController

User (CSRF Token)User (CSRF Token)

Security ConfigurationSecurity Configuration

EncryptorEncryptor

AccessControllerAccessController

HTTPUtilities HTTPUtilities

AccessControllerAccessController

Page 6: OWASP Top 10 for 2010

6

OWASP Top 10 & SANS CWE Top 25 mapping

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

http://www.sans.org/top25-software-errors/http://cwe.mitre.org/top25/

A1: Injection [2] CWE-89:

[9] CWE-78:

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

A2: Cross-Site Scripting (XSS)

[1] CWE-79: Improper Neutralization of Input During Web Page Generation('Cross-site Scripting')

A3: Broken Authentication and Session Management

[19] CWE-306:[11] CWE-798:

Missing Authentication for Critical FunctionUse of Hard-coded Credentials

A4: Insecure Direct Object References [5] CWE-285:[6] CWE-807:[7] CWE-22:

Improper AuthorizationReliance on Untrusted Inputs in a Security DecisionImproper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

A5: Cross-Site Request Forgery (CSRF) [4] CWE-352: Cross-Site Request Forgery (CSRF)

Page 7: OWASP Top 10 for 2010

7

OWASP Top 10 & SANS CWE Top 25 mapping

A6: Security Misconfiguration [16] CWE-209: Information Exposure Through an Error Message (Only partially covers OWASP Risk)

A7: Insecure Cryptographic Storage

[10] CWE-311: [24] CWE-327:

Missing Encryption of Sensitive Data Use of a Broken or Risky Cryptographic Algorithm

A8: Failure to Restrict URL Access

[5] CWE-285:

[21] CWE-732:

Improper Authorization (Also listed with OWASP A-4)Incorrect Permission Assignment for Critical Resource (CWE-732 covers a broader scope than OWASP A8)

A9: Insufficient Transport Layer Protection

[10] CWE-311:

[24] CWE-327:

Missing Encryption of Sensitive Data (Also listed with OWASP A-7)Use of a Broken or Risky Cryptographic Algorithm (Also listed with OWASP A-7)

A10: Unvalidated Redirects and Forwards

[23] CWE-601: URL Redirection to Untrusted Site ('Open Redirect')

Page 8: OWASP Top 10 for 2010

OWASP Top 10 & SANS CWE Top 25 mapping

Not a comprehensive or equivalent comparison

OWASP defines ten risks - made up of several specific vulnerabilities

SANS CWE Top 25 is only a fraction of the full CWE list of weaknesses

Complete mapping will have many CWEs listed for each item on the OWASP Top 10 list

Mapping should be used for general reference purposes only

8

Page 9: OWASP Top 10 for 2010

9

A1 – Injection

Page 10: OWASP Top 10 for 2010

A1 – Injection

10

What are injection flaws? User Name: Sam

Password: 123xyz

SELECT * FROM USERS WHERE USERNAME=‘Sam' AND

PASSWORD='123xyz’

User Name: Sam

Password: '; DROP DATABASE MAIN_DATABASE; --

 

SELECT * FROM USERS WHERE USERNAME=‘Sam' AND

PASSWORD=' '; DROP DATABASE MAIN_DATABASE; -- '

 

What are injection flaws? User Name: Sam

Password: 123xyz

SELECT * FROM USERS WHERE USERNAME=‘Sam' AND

PASSWORD='123xyz’

User Name: Sam

Password: '; DROP DATABASE MAIN_DATABASE; --

 

SELECT * FROM USERS WHERE USERNAME=‘Sam' AND

PASSWORD=' '; DROP DATABASE MAIN_DATABASE; -- '

 

Page 11: OWASP Top 10 for 2010

A1 – Injection

11

Fire

wal

l

Hardened OS

Web Server

App Server

Fire

wal

l

Dat

abas

es

Leg

acy

Syst

ems

Web

Ser

vice

s

Dir

ecto

ries

Hum

an R

esrc

s

Bill

ing

Custom Code

APPLICATIONATTACK

Net

wor

k L

ayer

App

licat

ion

Lay

er

Acc

ount

s

Fina

nce

Adm

inis

trat

ion

Tra

nsac

tions

Com

mun

icat

ion

Kno

wle

dge

Mgm

t

E-C

omm

erce

Bus

. Fun

ctio

ns

HTTP

requestSQL

query

DB Table

HTTP response

"SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’"

1. Application presents a form to the attacker

2. Attacker sends an attack in the form data

3. Application forwards attack to the database in a SQL query

Account Summary

Acct:5424-6066-2134-4334Acct:4128-7574-3921-0192Acct:5424-9383-2039-4029Acct:4128-0004-1234-0293

4. Database runs query containing attack and sends encrypted results back to application

5. Application decrypts data as normal and sends results to the user

Account:

SKU:

Account:

SKU:

Page 12: OWASP Top 10 for 2010

A1 – Avoiding Injection Flaws

12

Recommendations

1. Avoid the interpreter entirely, or2. Use an interface that supports bind variables (e.g., prepared statements, or stored

procedures),Bind variables allow the interpreter to distinguish between code and data

3. Encode all user input before passing it to the interpreterAlways perform ‘white list’ input validation on all user supplied inputAlways minimize database privileges to reduce the impact of a flaw

References

For more details, read the new http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Page 13: OWASP Top 10 for 2010

13

Page 14: OWASP Top 10 for 2010

14

A2 – Cross-Site Scripting (XSS)

Page 15: OWASP Top 10 for 2010

Application with stored XSS vulnerability

3

2

Attacker sets the trap – update my profile

Attacker enters a malicious script into a web page that stores the data on the server

1

Victim views page – sees attacker profile

Script silently sends attacker Victim’s session cookie

Script runs inside victim’s browser with full access to the DOM and cookies

Custom Code

Acc

ount

s

Fin

ance

Adm

inis

trat

ion

Tra

nsac

tions

Com

mun

icat

ion

Kno

wle

dge

Mgm

t

E-C

omm

erc

e

Bus

. F

unct

ions

15

Page 16: OWASP Top 10 for 2010

A2 – Avoiding XSS FlawsRecommendations

Eliminate FlawDon’t include user supplied input in the output page

Defend Against the FlawPrimary Recommendation: Output encode all user supplied input

(Use OWASP’s ESAPI to output encode:http://www.owasp.org/index.php/ESAPI

Perform ‘white list’ input validation on all user input to be included in pageFor large chunks of user supplied HTML, use OWASP’s AntiSamy to sanitize this HTML to make it safe See: http://www.owasp.org/index.php/AntiSamy

References

For how to output encode properly, read the new http://www.owasp.org/index.php/XSS_(Cross Site Scripting) Prevention Cheat Sheet

16

E.g. output encoding with HTML entity encoding: The < character becomes: &lt; The " character becomes: &quot; This tag <script> becomes: &lt;script&gt;

Page 17: OWASP Top 10 for 2010

Safe Escaping Schemes in Various HTML Execution Contexts

HTML Style Property Values

(e.g., .pdiv a:hover {color: red; text-decoration: underline} )

JavaScript Data(e.g., <script> some javascript </script> )

HTML Attribute Values(e.g., <input name='person' type='TEXT'

value='defaultValue'> )

HTML Element Content

(e.g., <div> some text to display </div> )

URI Attribute Values(e.g., <a href="javascript:toggle('lesson')" )

#4: All non-alphanumeric < 256 \HH

ESAPI: encodeForCSS()

#3: All non-alphanumeric < 256 \xHH

ESAPI: encodeForJavaScript()

#1: ( &, <, >, " ) &entity; ( ', / ) &#xHH;

ESAPI: encodeForHTML()

#2: All non-alphanumeric < 256 &#xHH

ESAPI: encodeForHTMLAttribute()

#5: All non-alphanumeric < 256 %HH

ESAPI: encodeForURL()

ALL other contexts CANNOT include Untrusted DataRecommendation: Only allow #1 and #2 and disallow all othersSee: www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet for more details

17

Page 18: OWASP Top 10 for 2010

A3 – Broken Authentication and Session Management

18

Page 19: OWASP Top 10 for 2010

Custom Code

Acc

ou

nts

Fin

ance

Ad

min

istr

ati

on

Tra

nsa

cti

on

s

Co

mm

un

icat

ion

Kn

ow

led

ge

Mg

mt

E-C

om

mer

ce

Bu

s. F

un

cti

on

s1 User sends credentials

2Site uses URL rewriting

(i.e., put session in URL)

3 User clicks on a link to http://www.hacker.com in a forum

www.boi.com?JSESSIONID=9FA1DB9EA...

4Hacker checks referer logs on

www.hacker.com

and finds user’s JSESSIONID5 Hacker uses

JSESSIONID and takes over victim’s account

19

Page 20: OWASP Top 10 for 2010

A3 – Avoiding Broken Authentication and Session Management

Verify your architectureAuthentication should be simple, centralized, and standardized

Use the standard session id provided by your container

Be sure SSL protects both credentials and session id at all times

Verify the implementationForget automated analysis approaches. (Automated scanners are not good at detecting authentication and session management issues)

Check your SSL certificate

Examine all the authentication-related functions

Verify that logoff actually destroys the session

Use OWASP’s WebScarab to test the implementation

Follow the guidance fromhttp://www.owasp.org/index.php/Authentication_Cheat_Sheet

20

Page 21: OWASP Top 10 for 2010

A4 – Insecure Direct Object References

21

Page 22: OWASP Top 10 for 2010

Attacker notices his acct parameter is 6065

?acct=6065

He modifies it to a nearby number

?acct=6066

Attacker views the victim’s account information

https://www.onlinebank.com/user?acct=6065

22

Page 23: OWASP Top 10 for 2010

A4 – Avoiding Insecure Direct Object References

Eliminate the direct object referenceReplace them with a temporary mapping value (e.g. 1, 2, 3)ESAPI provides support for numeric & random mappings

Validate the direct object referenceVerify the parameter value is properly formattedVerify the user is allowed to access the target object

Query constraints work great!Verify the requested mode of access is allowed to the target object (e.g., read, write, delete)

23

http://app?file=Report123.xlshttp://app?file=1

http://app?id=9182374 http://app?id=7d3J93

Page 24: OWASP Top 10 for 2010

A5 – Cross Site Request Forgery (CSRF)

24

Page 25: OWASP Top 10 for 2010

CSRF Vulnerability PatternThe Problem

Web browsers automatically include most credentials with each request

Even for requests caused by a form, script, or image on another site

All sites relying solely on automatic credentials are vulnerable!

(almost all sites are this way)

Automatically Provided CredentialsSession cookie

Basic authentication header

IP address

Client side SSL certificates

Windows domain authentication

25

Page 26: OWASP Top 10 for 2010

26

A5 – Cross Site Request Forgery Illustrated

Page 27: OWASP Top 10 for 2010

A5 – Avoiding CSRF FlawsAdd a secret, not automatically submitted, token to ALL sensitive requests

This makes it impossible for the attacker to spoof the request(unless there’s an XSS hole in your application)

Tokens should be cryptographically strong or random

OptionsStore a single token in the session and add it to all forms and links

Hidden Field: <input name="token" value="687965fdfaew87agrde" type="hidden"/>Single use URL: /accounts/687965fdfaew87agrde

Form Token: /accounts?auth=687965fdfaew87agrde …Beware exposing the token in a referer header

Hidden fields are recommendedCan have a unique token for each function

Use a hash of function name, session id, and a secretCan require secondary authentication for sensitive functions (e.g., eTrade)

Don’t allow attackers to store attacks on your siteProperly encode all input on the way outThis renders all links/requests inert in most interpreters

See: www.owasp.org/index.php/CSRF_Prevention_Cheat_Sheet for more details

27

Page 28: OWASP Top 10 for 2010

A6 – Security Misconfiguration

28

Page 29: OWASP Top 10 for 2010

Hardened OS

Web Server

App Server

Framework

Security Misconfiguration Illustrated

App Configuration

Custom Code

Acc

ount

s

Fin

ance

Adm

inis

trat

ion

Tra

nsac

tions

Com

mun

icat

ion

Kno

wle

dge

Mgm

t

E-C

omm

erc

e

Bus

. F

unct

ions

Test Servers

QA Servers

Source Control

Development

Database

Insider

29

Page 30: OWASP Top 10 for 2010

A6 – Avoiding Security Misconfiguration

Verify your system’s configuration managementSecure configuration “hardening” guideline

Automation is REALLY USEFUL here

Must cover entire platform and applicationKeep up with patches for ALL components

This includes software libraries, not just OS and Server applications

Analyze security effects of changes

Can you “dump” the application configurationBuild reporting into your processIf you can’t verify it, it isn’t secure

Verify the implementationScanning finds generic configuration and missing patch problems

30

Page 31: OWASP Top 10 for 2010

A7 – Insecure Cryptographic Storage

31

Page 32: OWASP Top 10 for 2010

Insecure Cryptographic Storage Illustrated

Custom Code

Ac

co

un

tsF

ina

nc

e

Ad

min

istr

ati

on

Tra

ns

ac

tio

ns

Co

mm

un

ica

tio

nK

no

wle

dg

e

Mg

mt

E-C

om

me

rce

Bu

s.

Fu

nc

tio

ns1

Victim enters credit card number in form

2Error handler logs CC details because merchant

gateway is unavailable

4 Malicious insider steals 4 million credit card numbers

Log files

3Logs are accessible to all members of IT staff

for debugging purposes

32

Page 33: OWASP Top 10 for 2010

A7 – Avoiding Insecure Cryptographic Storage

Verify your architectureIdentify all sensitive data

Identify all the places that data is stored

Ensure threat model accounts for possible attacks

Use encryption to counter the threats, don’t just ‘encrypt’ the data

Protect with appropriate mechanismsFile encryption, database encryption, data element encryption

Use the mechanisms correctlyUse standard strong algorithms – such as FIPS 140-2 (i.e. Triple-DES, AES, RSA) or an equivalent standard

Generate, distribute, and protect keys properly

Be prepared for key change

Verify the implementationA standard strong algorithm is used, and it’s the proper algorithm for this situation

All keys, certificates, and passwords are properly stored and protected

Safe key distribution and an effective plan for key change are in place

Analyze encryption code for common flaws

Page 34: OWASP Top 10 for 2010

A8 – Failure to Restrict URL Access

34

Page 35: OWASP Top 10 for 2010

Failure to Restrict URL Access Illustrated

Attacker notices the URL indicates his role /user/getAccounts

He modifies it to another directory (role)

/admin/getAccounts, or /manager/getAccounts

Attacker views more accounts than just their own

https://www.onlinebank.com/user/getAccountshttps://www.onlinebank.com/user/getAccounts

Page 36: OWASP Top 10 for 2010

A8 – Avoiding URL Access Control Flaws

For each URL, a site needs to do 3 thingsRestrict access to authenticated users (if not public)Enforce any user or role based permissions (if private)Completely disallow requests to unauthorized page types (e.g., config files, log files, source files, etc.)

Verify your architectureUse a simple, positive model at every layer

Be sure you actually have a mechanism at every layer

Verify the implementationForget automated analysis approaches

Verify that each URL in your application is protected by eitherAn external filter, like Java EE web.xml or a commercial product

Or internal checks in YOUR code – Use ESAPI’s isAuthorizedForURL() method

Verify the server configuration disallows requests to unauthorized file types

Use WebScarab or your browser to forge unauthorized requests

Page 37: OWASP Top 10 for 2010

A9 – Insufficient Transport Layer Protection

Page 38: OWASP Top 10 for 2010

Insufficient Transport Layer Protection Illustrated

Custom Code

Employees

Business PartnersExternal Victim

Backend Systems

External Attacker

1

External attacker steals credentials and data off network

2

Internal attacker steals credentials and data from internal network

Internal Attacker

Page 39: OWASP Top 10 for 2010

A9 – Avoiding Insufficient Transport Layer Protection

Protect with appropriate mechanismsUse TLS on all connections with sensitive dataIndividually encrypt messages before transmission

E.g., XML-EncryptionSign messages before transmission

E.g., XML-Signature

Use the mechanisms correctlyUse standard strong algorithms (disable old SSL algorithms)Manage keys/certificates properlyVerify SSL certificates before using themUse proven mechanisms when sufficient

E.g., SSL vs. XML-Encryption

See: http://www.owasp.org/index.php/Transport_Layer_Protection_Cheat Sheet for more details

Page 40: OWASP Top 10 for 2010

A10 – Unvalidated Redirects and Forwards

Page 41: OWASP Top 10 for 2010

Unvalidated Redirect Illustrated

3

2

Attacker sends attack to victim via email or webpage

From: Internal Revenue ServiceSubject: Your Unclaimed Tax RefundOur records show you have an unclaimed federal tax refund. Please click here to initiate your claim.

1

Application redirects victim to attacker’s site

Request sent to vulnerable site, including attacker’s destination site as parameter. Redirect sends victim to attacker site

Custom Code

Acc

ou

nts

Fin

ance

Ad

min

istr

atio

n

Tra

nsa

ctio

ns

Co

mm

un

icat

ion

Kn

ow

led

ge

Mg

mt

E-C

om

mer

ce

Bu

s. F

un

ctio

ns

4 Evil site installs malware on victim, or phish’s for private information

Victim clicks link containing unvalidated parameter

Evil Site

http://www.irs.gov/taxrefund/claim.jsp?year=2006& … &dest=www.evilsite.com

Page 42: OWASP Top 10 for 2010

Unvalidated Forward Illustrated

2

Attacker sends attack to vulnerable page they have access to1

Application authorizes request, which continues to vulnerable page

Request sent to vulnerable page which user does have access to. Redirect sends user directly to private page, bypassing access control.

3 Forwarding page fails to validate parameter, sending attacker to unauthorized page, bypassing access controlpublic void doPost( HttpServletRequest request,

HttpServletResponse response) {try {

String target = request.getParameter( "dest" ) );

...

request.getRequestDispatcher( target ).forward(request, response);

}catch ( ...

Filter

public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) {

try {// Do sensitive

stuff here....

}catch ( ...

Page 43: OWASP Top 10 for 2010

A10 – Avoiding Unvalidated Redirects and Forwards

There are a number of options1.Avoid using redirects and forwards as much as you can2.If used, don’t involve user parameters in defining the target URL3.If you ‘must’ involve user parameters, then either

a) Validate each parameter to ensure its valid and authorized for the current user, orb) (preferred) – Use server side mapping to translate choice provided to user with actual

target pageDefense in depth: For redirects, validate the target URL after it is calculated to make sure it goes to an authorized external siteESAPI can do this for you!!

See: SecurityWrapperResponse.sendRedirect( URL )http://owasp-esapi-java.googlecode.com/svn/trunk_doc/org/owasp/esapi/filters/SecurityWrapperResponse.html#sendRedirect(java.lang.String)

Some thoughts about protecting ForwardsIdeally, you’d call the access controller to make sure the user is authorized before you perform the forward (with ESAPI, this is easy)With an external filter, like Siteminder, this is not very practicalNext best is to make sure that users who can access the original page are ALL authorized to access the target page.

Page 44: OWASP Top 10 for 2010

Summary: How do you address these problems?

Develop Secure CodeFollow the best practices in OWASP’s Guide to Building Secure Web Applications

http://www.owasp.org/index.php/GuideUse OWASP’s Application Security Verification Standard as a guide to what an application needs to be secure

http://www.owasp.org/index.php/ASVSUse standard security components that are a fit for your organization

Use OWASP’s ESAPI as a basis for your standard componentshttp://www.owasp.org/index.php/ESAPI

Review Your ApplicationsHave an expert team review your applicationsReview your applications yourselves following OWASP Guidelines

OWASP Code Review Guide: http://www.owasp.org/index.php/Code_Review_Guide

OWASP Testing Guide: http://www.owasp.org/index.php/Testing_Guide

Page 45: OWASP Top 10 for 2010

45