18

Click here to load reader

Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

Embed Size (px)

DESCRIPTION

Presentación ofrecida en el II Meeting del Capítulo Español de OWASP que tuvo lugar en2007. En esta conferencia se presentó la problemática de la necesidad del filtrado de los datos que alimentan a las aplicaciones web y que son uno de los puntos de entrada de los ataques más comunes por la deficiencia de este tipo de controles.

Citation preview

Page 1: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

Su Seguridad es Nuestro Éxito

c. Santander, 101. Edif. A. 2º I 08030 Barcelona I Tel.: 93 305 13 18 I Fax: 93 278 22 48 I [email protected] I www.isecauditors.com

Page 2: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

Su Seguridad es Nuestro Éxito

Tratamiento seguro de datos en aplicaciones

OWASP Conference 2007

Barcelona, Julio 2007

Page 3: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 3

Definición de Aplicación:“Una aplicación es un programa informático diseñado para facilitar al usuario un determinado tipo de trabajo.”

(Fuente: Wikipedia)

Compentes

de una Aplicación:• Procesos• Datos

Tratamiento seguro de datos en aplicaciones

Procesos Datos de salidaDatos de entrada

Entrada de usuarioParámetros

FicheroBase de datos

Conexión de red…

Page 4: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 4

•Las aplicaciones reciben datos, los procesan y luego muestran los resultados.

•Los datos introducidos en una aplicación pueden utilizarse en distintos contextos.

Nombre de fichero

Consultas SQL

Consultas XPATH

En códigos de marcas (XML, HTML, etc)

Tratamiento seguro de datos en aplicaciones

Page 5: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 5

Tratamiento seguro de datos en aplicaciones

“dato”

SELECT * FROM id = ‘dato’

File://usr/info/dato.xml

<HTML><TITLE>Página Web</TITLE><BODY><H1>dato</H1>

</BODY></HTML>

Las aplicaciones pueden utilizar un mismo dato en distintos contextos.

Cada contexto puede tener implicaciones distintas.

Page 6: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 6

•Un tratamiento incorrecto de los datos puede ocasionar que un cambio de contexto suponga una vulnerabilidad en la aplicación.

Tratamiento seguro de datos en aplicaciones

“’ OR ‘’=‘”

“../../../file”

“<B>BOLD</B>”

SELECT * FROM id = ‘’ OR ‘’=‘’

File://usr/info/../../../file.xml

<HTML><TITLE>Página Web</TITLE><BODY><H1><B>BOLD</B></H1>

</BODY></HTML>

SQL injection

Path Traversal

Cross Site Scripting

Page 7: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 7

Cross Site

Scriptint

(XSS)

Es un error que se produce en contexto de lenguaje de marcas HTML, al generar la presentación de una página web.

Un usuario puede inyectar código malicioso (HTML/Javascript) que se ejecuta en el cliente.

Permite comprometer otros usuarios (ejecutar código, robar cookies).

Tratamiento seguro de datos en aplicaciones

“<B>BOLD</B>”<HTML><TITLE>Página Web</TITLE><BODY><H1><B>BOLD</B></H1>

</BODY></HTML>

Page 8: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 8

SQL Injection

Es un error que se produce en contexto de sentencia SQL.

Un usuario es capar de alterar la sentencia SQL y alterar el comportamiento de la aplicación.

Añadir datos•

Borrar datos•

Extraer datos•

Ejecutar comandos del sistema•

Se puede comprometer datos y servidores.

Tratamiento seguro de datos en aplicaciones

“’ OR ‘’=‘” SELECT * FROM id = ‘’ OR ‘’=‘’

Page 9: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 9

PATH Traversal

Es un error que se produce en contexto de ruta de fichero.

El usuario es capaz de manipular la ruta de un fichero para que se acceda a ficheros de forma no controlada, generalmente escapando del directorio mediante ‘..’

Se pueden comprometer datos y servidores, dependiendo del uso que se le de los ficheros a los que se accede.

Tratamiento seguro de datos en aplicaciones

“../../../file” File://usr/info/../../../file.xml

Page 10: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 10

Buffer overflow

Es un error que se produce en contexto de buffer de memoria.

Se copia de un buffer de memoria a otro sin verificar que el buffer de destino sea mayor o igual que el buffer de origen.

Permite modificar la memoria de la aplicación y tomar el control.

Tratamiento seguro de datos en aplicaciones

“AAAA….AAAA” “AAAA….AAAA”

Buffer origen Buffer destino>

Page 11: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 11

Validación de datos de entrada ¿Solución?

¡NO!

•Se suele decir que una aplicación es segura si valida sus datos de entrada, pero eso no es cierto.

•Un dato validado en la entrada de la aplicación puede ‘mutar’.

Tratamiento seguro de datos en aplicaciones

“dato” Funcion 1 “../dato” Funcion 1 “../<B>dato”

Validación de la entrada

Page 12: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 12

Validación de datos de entrada ¿Solución?

¡NO!

•Si se verifican únicamente las entradas de datos se pueden producir ataques ‘de segundo nivel’.

•Ejemplo:

Un dato se verifica, se introduce en la base de datos pero luego al reutilizarse no se verifica de nuevo.

Tratamiento seguro de datos en aplicaciones

“dato’”

Validación de la entrada

“dato\’” “dato’”

Page 13: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 13

Validación de datos de entrada ¿Solución?

¡NO!

•No podemos “generalizar”

la validación de datos en la entrada, ya que podemos perder la usabilidad.

•Ejemplo:

Una validación que “generalizada”

que elimina (o escapa) todos los caracteres sospechosos (>, <, ‘, etc).

Tratamiento seguro de datos en aplicaciones

“Eto’o” “Etoo”

Validación de la entrada <HTML>

<TITLE>Página Web</TITLE><BODY><H1>Bienvenido Etoo</H1>

</BODY></HTML>

¡Eh! Que yo me llamo Eto’o, no Etoo.

Page 14: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 14

Validación de datos en cambios de contexto ¿Solución?

¡SI!

•Te garantiza que SIEMPRE estarás tratando con datos de forma segura en todo momento.

•En cada cambio de contexto deberían aplicarse únicamente las medidas necesarias para asegurar el dato en ese contexto, de manera se mejora la usabilidad.

Tratamiento seguro de datos en aplicaciones

Page 15: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 15

Tratamiento seguro de datos en aplicaciones

Contexto ValidacionesSentencia SQL Escapar caracteres (comillas, contrabarra)

Código HTML Codificar los datos en HTML (HTMLencode)

Nombre de un fichero Filtrar caráracteres (barra, contrabarra, puntos al inicio de fichero)

Buffer de memoria Verificar tamaño de origen y destino.

… …

SQL Injection

Cross site scripting

Path traversal

Buffer overflow

Page 16: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 16

Validación de datos en cambios de contexto ¿Solución?

¡SI!

Tratamiento seguro de datos en aplicaciones

“’ OR ‘’=‘”

“<B>BOLD</B>”

SELECT * FROM id = ‘\’ OR \‘\’=\‘’

<HTML><TITLE>Página Web</TITLE><BODY><H1>&lt;B&gt;BOLD&lt;/B&gt;</H1>

</BODY></HTML>

Page 17: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 17

¿Validamos la entrada? Sí, la entrada de datos es un cambio de contexto.

•Si el dato de entrada es de un tipo cerrado o debe cumplir una serie de condiciones debemos filtrar y/o verificar que los datos

son

correctos.

Ejemplo:

Dato de entrada en una aplicación web

que contiene un identificador numérico.

Tratamiento seguro de datos en aplicaciones

“12” “12”

“12abc” “12”

Validación deentrada

Page 18: Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007

© I n t e r n e t S e c u r i t y A u d i t o r s • Ciudad • 01. 01 . 2 0 0 7 • P. 18

<B>’¿Dudas?\<B>

<B>\’¿Dudas?\\<B>

&lt;B&gt;?&#191;Dudas?&lt;B&gt;

Tratamiento seguro de datos en aplicaciones