1
Gabriel Díaz Orueta
Introducción al análisis
automático de la seguridad
de aplicaciones web
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta
22 de octubre de 2012
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 2
Contenidos
• Vulnerabilidades de seguridad en aplicaciones
web
• Herramientas para el análisis de
vulnerabilidades
• ¿Cuál es la mejor?
Basado en el TFM de don Juan Ramón Bermejo Higuera,
en Octubre de 2011
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 3
In computer security, a vulnerability is a
weakness which allows an attacker to
reduce a system's information
assurance.
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 4
Vulnerabilidades de seguridad en
aplicaciones web
OWASP (Open Web Application Security Proyect) Top Ten
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 5
Vulnerabilidades de seguridad en
aplicaciones web
http://www.owasp.org/index.php/Top_10
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 6
Vulnerabilidades de seguridad en
aplicaciones web Métricas más comunes
Porcentaje de cada tipo de vulnerabilidad encontrada con todos los tipos de análisis utilizados.
Porcentaje de cada tipo de vulnerabilidad encontrada con cada tipo de análisis utilizado.
Porcentaje de vulnerabilidades por grados de criticidad globales y por cada tipo de análisis.
Porcentaje de cada tipo de vulnerabilidad por cada tipo de lenguaje de programación en cada tipo
de análisis utilizado y de forma global.
Porcentaje de sitios web donde se ha encontrado una determinada vulnerabilidad.
Porcentaje de vulnerabilidades por tipo procedencia del software (internamente desarrollado,
open source, externo…) globales y por cada tipo de análisis.
Densidades de defectos por vulnerabilidades y tipos de lenguajes.
Porcentaje de vulnerabilidades por tipo de industria (financiera, defensa…)
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 7
Vulnerabilidades de seguridad en
aplicaciones web
Estadísticas vul. WASC 2008. Whitebox & Blackbox.
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 8
WASC % de probabilidad de detección blackbox/whitebox
Vulnerabilidades de seguridad en
aplicaciones web
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 9
1 SQL Injection 7%
2 Logic Flaws 7%
3 Authorization bypass 5%
4 XSS 26%
5 Authentication bypass 8%
6 Vulnerable third party software 3%
7 Session Handling 13%
8 CSRF 11%
9 Information leakage 13%
10 Source code disclosure 7%
Ranking de vulnerabilidades detectadas 2010
(TRUSTWARE SPIDER LABS)
Vulnerabilidades de seguridad en
aplicaciones web
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 10
Vulnerabilidades de seguridad en
aplicaciones web
Vulnerabilidades detectadas INFORME 3 VERACODE
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 11
Vulnerabilidades de seguridad en
aplicaciones web
Vulnerabilidades detectadas por tipo de lenguaje. INFORME 3 VERACODE
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 12
Vulnerabilidades de seguridad en
aplicaciones web
Coste de la corrección de vulnerabilidades
“Secure Coding. The State of the Practice”.
Authors Mark G. Graff, Kenneth R. van Wyk.
O`Reilly , June 2003, ISBN: 0-596-00242-4
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 13
Conclusiones
1- Las aplicaciones web contienen muchas
vulnerabilidades de seguridad
2- Vale la pena intentar detectarlas antes de poner
la aplicación en operación
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 14
Herramientas para el análisis de
vulnerabilidades
Modelo SLDC adaptado
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 15
Herramientas para el análisis de
vulnerabilidades
Definiciones
Verdadero positivo: vulnerabilidad detectada que existe realmente
Falso positivo: vulnerabilidad detectada que no existe realmente
Verdadero negativo: vulnerabilidad no detectada que realmente no existe
Falso negativo: vulnerabilidad no detectada que realmente existe
¿Qué es más relevante: falso positivo o falso negativo?
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 16
Herramientas para el análisis de
vulnerabilidades
- HERRAMIENTAS DE ANÁLISIS ESTÁTICO (SAST)
Herramientas de análisis de código fuente
Herramientas de análisis de código ejecutable
- HERRAMIENTAS DE ANÁLISIS DINÁMICO (DAST y RAST)
Scanners automáticos de vulnerabilidades de aplicaciones web
- HERRAMIENTAS DE ANÁLISIS HIBRIDO
Combinar análisis SAST y DAST.
Combinar análisis SAST y RAST.
Combinar análisis SAST, DAST y RAST.
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 17
Herramientas SAST
de código fuente
- Toman como entrada el código fuente y lo trasforman, generando
representaciones intermedias o modelos del código fuente, según el
caso y a continuación lo analizan contra una serie de reglas definidas
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 18
Pueden realizar algunos o todos estos análisis:
- Análisis léxico, sintáctico y semántico como cualquier compilador.
- Análisis intraprocedural o local (dentro de cada función) del flujo
de control y de los datos.
- Análisis global o interprocedural de llamadas entre funciones y
flujo de los datos.
Herramientas SAST
Comprueban todo el código a fondo y coherentemente
Una vez se tienen los resultados, análisis de falsos positivos
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 19
Esquema de funcionamiento de un
scanner de vulnerabilidades
Herramientas DAST
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 20
Herramientas RAST
- Actúan directamente sobre el código ejecutable y el
entorno de ejecución de los procesos, observando
incluso sus variables en memoria y su estado, y
también las peticiones que se hacen a la aplicación
web y las respuestas que se reciben.
- Esto permite detectar vulnerabilidades en los
campos de entrada a la aplicación de forma
concreta se sigue el funcionamiento de la aplicación
porque en tiempo real
- Pueden incidir en el rendimiento de la aplicación
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 21
Herramientas RAST
- Una vez detectada la vulnerabilidad hay herramientas
que pueden
tomar una de las tres acciones siguientes:
- Generar un informe, después de la detección sin
más
- Bloquear el intento de ataque
- Sanear la petición maligna a la aplicación web,
corrigiendo los valores de entrada a la aplicación
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 22
SAST-RAST [Artho et Bi. 2005]
Herramientas Híbridas
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 23
¿Cuál es la mejor herramienta?
Veracode SAST
vs. DASD.
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 24
¡Muchas comparaciones! Pero pocas completas y seguras
1- Seleccionar una determinada metodología
2- Seleccionar benchmarks, casos de test específicos, contra los que
se ejecutan las herramientas
3- Seleccionar las herramientas objeto de la evaluación
4- Ejecutar las herramientas contra los benchmarks seleccionados
5- Seleccionar las métricas a emplear en la medición de resultados
6- Medir los resultados
7- Analizar y comparar los resultados
¿Cuál es la mejor herramienta?
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 25
SAMATE
Metodología y benchmarks
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 26
SAMATE
Define:
- Los requerimientos funcionales que debe reunir
toda herramienta de análisis de código
- Conjuntos de vulnerabilidades. En este caso se
adaptan a las categorías de vulnerabilidades de
aplicaciones web más importantes
- Variaciones de la complejidad del código
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 27
SAMATE Requerimientos funcionales
• Identificar un conjunto seleccionado de
vulnerabilidades de software en código fuente.
• Informar sobre cada vulnerabilidad encontrada, de
que tipo es y donde está localizada.
• No tener demasiados falsos positivos.
• Producir un informe compatible con el de otras
herramientas.
• Permitir que las vulnerabilidades puedan ser
suprimidas por el usuario.
• Usar nombres estándar para las clases de
vulnerabilidades.
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 28
SAMATE Conjunto de vulnerabilidades
…
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 29
SAMATE Benchmarks elegidos: SAMATE juliet 2010
• Test Suite que contiene 13782 casos de test, que cubren un amplio abanico
de vulnerabilidades de seguridad
• Con cada caso de test viene una función con una vulnerabilidad concreta y
una (1), tres (3) ó 5 (cinco) versiones de la función, dependiendo del caso
con distintas formas de corrección de la vulnerabilidad validando
directamente en la fuente de entrada a la aplicación (source) ó donde
específicamente se produce la vulnerabilidad (sink)
• Para cada vulnerabilidad se proporcionan versiones de casos de test para
distintas complejidades de código
• Para cada tipo de complejidad de código existen diferentes versiones de
casos de test con diferentes tipos de fuente de entrada como por ejemplo
conexiones tcpip, entrada por consola, base de datos, fichero, cookies,
parámetros de entrada de peticiones, etc.
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 30
Selección de herramientas
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 31
Selección de herramientas - Se seleccionan 4 herramientas comerciales (una de ellas de
análisis de código ejecutable, veracode SaaS) y 2 de open source
(una de ellas de análisis de código ejecutable, findbugs).
- HP FORTIFY 360 v. 3.0.0.0102 SCA. v. 5.10.0.0102
- CHECKMARX CxEnterprise v. 5.5.0
- KLOCWORK INSIGHT (SOLO JAVA v. 8.1.2v011)
- VERACODE saas
- LAPSE+ (open source)
- FINDBUGS v. 1.3.9 (open source)
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 32
Métricas que se aplican
- Número y porcentaje de verdaderos positivos TP (detecciones correctas).
- Número y porcentaje de falsos positivos FP (detección sin error).
- Número de vulnerabilidades para las que la herramienta no está
diseñada.
- Precisión. Proporción de TP respecto al total de detecciones: TP / TP + FP.
- Recall. Proporción de TP respecto al total de vulnerabilidades que existen en
el código. TP / Total de Vulnerabilidades.
- F-measure. Normalización de Precisión y recall.
2 x precisión x recall / precisión + recall
- Correlaciones de resultados entre herramientas, para ver resultados
combinados.
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 33
Resultados
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 34
Resultados
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 35
Resultados
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 36
Resultados
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 37
Resultados
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 38
• La principal conclusión es que el uso de las herramientas estáticas de
código fuente y ejecutable es muy importante dentro del nuevo esquema
de SDLC propuesto. Se logran porcentajes muy altos de detección de
vulnerabilidades llegando en algún caso a superar el 80% de forma
aislada
• El número de falsos positivos, alto en general, en cuatro casos más del
50%, hay que reducirlo realizando auditoría posterior de los resultados o
comprobando su veracidad con otras herramientas de las vistas.
• La auditoría posterior es generalmente bien tenida en cuenta, con
facilidades de trace del error, por todas las herramientas excepto por
FINDBUGS. Este hecho implica la realización de una auditoría posterior
para erradicarlos o utilizar otras herramientas combinándolas.
Conclusiones
Análisis automático de la seguridad de aplicaciones web
Gabriel Díaz Orueta 39
¿Alguna
pregunta?
Gabriel Díaz Orueta,
Dpto. Ingeniería Eléctrica Electrónica y de Control
http://www.ieec.uned.es
Top Related