Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

40
Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011

Transcript of Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Page 1: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Top 5 OWASP + WAF66.69 Criptografía y Seguridad Informática

1er. Cuatrimestre 2011

Page 2: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

OWASP

Organización focalizada en mejorar la seguridad de las aplicaciones de software.

Consenso general sobre cuáles son las vulnerabilidades más críticas de las aplicaciones web.

Incluye una lista de las diez vulnerabilidades más críticas.

Page 3: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

OWASP Top Ten (2010 Edition)

A1: InjectionA2: Cross-Site

Scripting (XSS)

A3: Broken Authentication and Session Management

A4: Insecure Direct Object References

A5: Cross Site Request Forgery (CSRF)

A6: Security Misconfigurat

ion

A7: Failure to Restrict URL

Access

A8: Insecure Cryptographi

c Storage

A9: Insufficient Transport

Layer Protection

A10: Unvalidated

Redirects and Forwards

Page 4: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Mutillidae

Herramienta didáctica para ilustrar el Top 10 Hecha en PHP/MySQL Simple de explotar Fácil de restaurar Incluye tips de ayuda para explotar y

entender las distintas vulnerabilidades

Page 5: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

A1 - SQL Injection

Page 6: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

SQL Injection

• Se inserta o "inyecta" código SQL invasor dentro del código SQL programado, a fin de alterar el funcionamiento normal del programa y lograr así que se ejecute la porción de código "invasor" en la base de datos.

Ocurre cuando…

• Reciben strings y los interpretan como comandos• SQL, OS Shell, LDAP, XPath, Hibernate, etc…

Intérpretes…

• Muchas aplicaciones continúan siendo vulnerables• A pesar que es muy simple de evitar

SQL injection sigue siendo muy común

• Usualmente severo. La base de datos puede ser leída por completo, o modificada.

Impacto típico

Page 7: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

SQL InjectionFi

rew

all

Hardened OS

Web Server

App ServerFi

rew

all

Data

base

s

Leg

acy

Syst

em

s

Web

Serv

ices

Dir

ect

ori

es

Hu

man

Resr

cs

Bill

ing

Custom Code

APPLICATIONATTACK

Netw

ork

Layer

Ap

plic

ati

on

Layer

Acc

ou

nts

Fin

an

ce

Ad

min

istr

ati

on

Tran

sact

ion

s

Com

mu

nic

ati

on

Kn

ow

led

ge M

gm

tE-C

om

merc

e

Bu

s. F

un

ctio

ns

HTTP request

SQL

query

DB Table

HTTP response

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

1. La aplicación muestra un formulario

2. El atacante ingresa una consulta SQL maliciosa en algún campo del formulario3. La aplicación reenvía dicha consulta al motor de base de datos

Account Summary

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

4. El motor de la BD ejecuta la consulta con código malicioso y envía los resultados a la aplicación5. La aplicación muestra los resultados al usuario

Account:

SKU:

Account:

SKU:

Page 8: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Demo

Page 9: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Métodos de Prevención

Escapar las variables antes de ser enviadas al intérprete

Parametrizar las sentencias sql Realizar una “white list” de validación para los

datos ingresados por el usuario Acotar los privilegios de la base de datos para

reducir el impacto

Page 10: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

A2 – Cross-Site Scripting (XSS)

Page 11: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

XSS

• Una aplicación toma datos ingresados por el usuario y los envía al navegador sin previo encoding ni validación. Permite ejecutar scripts en el navegador de la víctima permitiendo el robo de cookies de sesión, ejecución de virus, etc.

Ocurre cuando…

• Guardados en la base de datos• Reflejados desde los inputs de la aplicación (form field, hidden

field, URL, etc.)• Envíados directamente embebiendo código javascript

Tipos de ataques

• Robo de cookies de sesión, robo de datos sensibles, sobreescritura de páginas web, Phishing

• Crítico: Instalación de un proxy XSS el cual permite al atacante observar el comportamiento de un usuario en un sitio vulnerable y forzarlo a ingresar a otros sitios.

Impacto típico

Page 12: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

XSS

Aplicación vulnerable a XSS (guardado)

2

El atacante prepara la trampa – “Mi Perfil”

El atacante ingresa un script malicioso dentro de una página web que almacena los datos en el servidor

La víctima ingresa al perfil del atacante - “Mi Perfil”

El script envía (silenciosamente) la cookie de sesión de la víctima al atacante

El script corre en el browser de la víctima con acceso completo al DOM y a las cookies

Custom Code

Acc

ou

nts

Fin

an

ce

Ad

min

istr

ati

on

Tran

sact

ion

sC

om

mu

nic

ati

on K

now

led

ge

Mg

mt

E-C

om

merc

e

Bu

s. F

un

ctio

ns

1

3

Page 13: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Demo

Page 14: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Métodos de Prevención

No mostrar directamente los datos ingresados por el usuario Encode a la salida de los datos ingresados por el usuario Frameworks: filtrado y validación automática Enterprise Security API

Creado por OWASP Provee un conjunto de interfases para encode y validación de datos Disponible en varios lenguajes.

AntySamy API para sanitizar HTML Creado por OWASP Modelo de protección “white list” Fácil de usar Toma un html/css crudo y lo retorna seguro

Page 15: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

A3 – Broken Authentication and

Session Management

Page 16: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Broken Authentication and Session

Management

• El SESSION ID es usado para trackear el estado en HTTP• El SESSION ID está expuesto en las redes, navegadores, etc.• Métodos no estandarizados de autenticación

Ocurre cuando…

• Las credenciales viajan en cada request• Se debe usar SSL cuando se requiera autenticación

HTTP es “stateless”

• Los cambios de password, recordarme, olvidé mi password, pregunta secreta, logout, email, etc…

Proteger…

• Severo: Se comprometen cuentas y sesiones de usuario

Impacto típico

Page 17: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Broken Authentication

Custom Code

Accou

nts

Fin

an

ce

Ad

min

istr

ati

on

Tran

sacti

on

sC

om

mu

nic

ati

on

Kn

ow

led

ge

Mg

mt

E-C

om

merc

eB

us.

Fu

ncti

on

s

1El usuario envía credenciales y reserva un viaje en una agencia

2

3 El usuario reenvía el link a sus amigos

http://tourism.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii

4

Cuando sus amigos ingresen al link usarán su sesión y su tarjeta de crédito

El sitio reescribe la url concatenando el session id

Page 18: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Demo

Page 19: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Autenticación simple, centralizada y estandarizada

SSL para proteger credenciales y session id en todo momento

Verificar que el logout destruya la sesión Usuarios y passwords encriptados en la base de

datos Configuración adecuada del timeout de sesión Evitar vulnerabilidades XSS

Métodos de Prevención

Page 20: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

A4 – Insecure Direct Object References

Page 21: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Insecure Direct Object References

• Un desarrollador expone referencias a la implentación interna de un archivo, directorio, registro de base de datos, claves, url’s, etc. Los atacantes pueden manipular esas referencias y acceder a contenido no autorizado.

Ocurre cuando…

• Accesos a objetos• Referencias (deben ser indirectas)

Proteger…

• Severo: Acceso a información no autorizada

Impacto típico

Page 22: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Insecure Direct Object References

El atacante decubre que su número de cuenta es 6065

Lo modfica por otro valor ?account=6066

El atacante logra acceder a otra cuenta

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

Page 23: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Demo

Page 24: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Métodos de Prevención

Eliminar referencias directas Reemplazarlos por mapeos temporales Interfaz ESAPI para mapero indirecto

Validar referencias directas Verificar que el usuario tiene acceso al recurso

Page 25: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

A5 – Cross Site Request Forgery (CSRF)

Page 26: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

CSRF

• EL navegador de la victima logueada envía un request pre-autenticado a una aplicación vulnerable, la cual fuerza al navegador a realizar acciones en beneficio del atacante

Ocurre cuando…

• Idem XSS

Proteger

• Severo: Acceso a información sensible• Severo: Cambio de datos de cuenta

Impacto típico

Page 27: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

CSRF

3

2

El atacante prepara una trampa para un sitio web vulnerable1

El usuario logueado ingresa al sitio del atacante

El sitio vulnerable al ver el request legítimo de la víctima, ejecuta la acción.

El tag <img> cargado por el browser envía por GET las credenciales al sitio vulnerable

Custom Code

Acco

unts

Fina

nce

Adm

inis

trati

onTr

ansa

ction

s

Com

mun

icati

onKn

owle

dge

Mgm

tE-

Com

mer

ceBu

s. F

uncti

ons

Un tag oculto <img> contiene un ataque embebido

La aplicación tiene la vulnerabilidad CSRF

Page 28: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Demo

Page 29: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Métodos de Prevención

Agregar un nonce por request (Number used once) a la URL

y a todos los formularios

Los tokens deben ser criptográficamente fuertes.

No utilizar request del tipo GET (URL) para datos o

transacciones importantes. Utilizar POST, aunque esto solo

no es suficiente.

Verificar que el request HTTP provenga del sitio original

Page 30: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

ESAPI

Page 31: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

OWASP Top 5

A1. SQL Injection

A2. Cross Site Scripting (XSS)

A3. Broken Authentication and Sessions

A4. Insecure Direct Object Reference

A5. Cross Site Request Forgery (CSRF)

OWASP ESAPI

Encoder

Validator, Encoder

Authenticator, User, HTTPUtils

AccessReferenceMap, AccessController

User (CSRF Token)

Interfaces para Top 5ESAPI

Page 32: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Input Validation

Page 33: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Output Validation

Page 34: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Esquema de encoding con ESAPI

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 &#xHHESAPI:

encodeForHTMLAttribute()

#5: All non-alphanumeric < 256 %HH

ESAPI: encodeForURL()

Page 35: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Demo

Page 36: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

WAF

Page 37: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Filtro que aplica un conjunto de reglas a una comunicación HTTP

Controla entradas, salidas y accesos Buena (y única) solución para enlatados Falsos positivos Soporta seguridad con listas negras y listas

blancas. Alta performance.

Características principales

Page 38: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

#Preventing Cookie Stealing, CSRF Post and Phishing attackSecRule ARGS “<script”#Preventing CSRF Post IframeSecRule ARGS “<iframe”#Preventing Flash attackSecRule ARGS “<embed”#Preventing CSRF Get attackSecRule ARGS "<img“#Preventing SQL Injection and Broken Authentication and Session

ManagementSecRule ARGS "'.+=.+--“SecRule ARGS "select.+from“#Preventing Insecure Direct Object ReferenceSecRule ARGS "\.\./“SecRule ARGS ";[[:space:]]*(ls|id|pwd|wget|dir)”

Configuración

Page 39: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Demo

Page 40: Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011.

Conclusiones Desarrollar código seguro

Seguir las best practices de la guía de OWASP’s de como construir una aplicación web segura http://www.owasp.org/index.php/Guide

Usar OWASP’s Application Security Verification Standard como guía para saber las necesidades de seguridad http://www.owasp.org/index.php/ASVS

Usar componentes estandar (ESAPI) http://www.owasp.org/index.php/ESAPI

Revisar las aplicaciones Tener un experto en el equipo que revise las aplicaciones Seguir las guías propuestas por OWASP

OWASP Code Review Guide:

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

http://www.owasp.org/index.php/Testing_Guide