Introducción al análisis automático de la seguridad de … · 2015-12-09 · Scanners...

Post on 09-Jul-2020

10 views 0 download

Transcript of Introducción al análisis automático de la seguridad de … · 2015-12-09 · Scanners...

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