Más contenido relacionado Similar a Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007. (20) Más de Internet Security Auditors (20) Tratamiento seguro de datos en aplicaciones. OWASP Conference 2007.1. 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 info@isecauditors.com I www.isecauditors.com
2. Su Seguridad es Nuestro Éxito
Tratamiento seguro de datos en aplicaciones
OWASP Conference 2007
Barcelona, Julio 2007
3. © 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 usuario
Parámetros
Fichero
Base de datos
Conexión de red
…
4. © 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
5. © 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.
6. © 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
7. © 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>
8. © 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 ‘’=‘’
9. © 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
10. © 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>
11. © 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
12. © 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’”
13. © 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.
14. © 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
15. © 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 Validaciones
Sentencia 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
…
16. © 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><B>BOLD</B></H1>
</BODY>
</HTML>
17. © 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 de
entrada
18. © 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>
<B>?¿Dudas?<B>
Tratamiento seguro de datos en aplicaciones