Herramientas para análisis estático de seguridad

Herramientas para análisis estático de seguridad




Estático = se analiza sin ejecutar el software

• Ventajas:

Consistencia. La herramienta ve lo que ve, sin ideas preconcebidas (que normalmente tienen los desarrolladores o revisores).

• Apuntan a la causa raíz, no a los síntomas. Una prueba de penetración puede establceder que hay un problema, pero no su causa final ni cómo corregirlo.

Detección precoz. La aplicación no tiene que estar integrada ni necesita ejecutarse.

• Su ejecución es barata. Un sistema puede re-analizarse cuando se aplican cambios, o cuando se descubre una nueva vulnerabilidad de aplicación.

 Inconvenientes:

• Falsos positivos. Impacto (coste) crece al tener que evaluar cada positivo.

• Falsos negativos. Suelen ser incapaces de detectar vulnerabilidades de seguridad achacables al diseño, o específicas del contexto propio de la aplicación (se centran en vulnerabilidades genéricas, de codificación).

• ¿Qué es mejor? En seguridad, sin duda, baja tasa de falsos negativos sin una tasa desproporcionada de falsos positivos


Las etapas iniciales son similares a las que sigue un compilador.

 • El análisis semántico permite pasar a una representación interna del software en la que están representadas las nociones básicas para determinar defectos de seguridad: flujo de datos y llamadas, tipos y tamaños de las variables, entradas y recursos alcanzables, y qué entradas están bajo control (taint) del usuario. Este modelo incluye el entorno (librerías, funciones de sistema, etc.) 

• La “inteligencia” está codificada en reglas que un verificador aplica sobre el modelo interno para determinar posibles defectos.


1. Establecer objetivos

a. Priorizar qué partes a analizar

b. Entender el software (a alto nivel)

c. Comprender riesgos

2. Lanzar herramientas

a. Introducir reglas específicas

b. Compilar el código; lanzar herramienta

3. Revisar resultados

a. Revisión manual a partir de problemas potenciales

b. Si falso positivo: Reconfigurar; Si falso negativo: Añadir regla

c. Registro de problemas (informe formal, gestor de defectos…)

4. Introducir correcciones

a. Revisar (manual/automáticamente) cambios

b. Actualizar “Buenas prácticas”, objetivos alcanzados, y reglas


 ¿Quién ejecuta la herramienta?

• Seguridad del software, desarrolladores, o mejor ambos.

• ¿Cuándo?

• Desde el IDE del programador; en subida de código al

control de versiones; en script de build; al librerar una

versión; en procesos formales de auditoría de código.

• No olvidar que la MAYOR CARGA (90%) de trabajo se

consume al analizar resultados e introducir correcciones.

• ¿Cómo tratar los resultados?

• “Si hay riesgo, se bloquea la liberación de la versión”

• “Una autoridad central filtra y decide”

• Usar aproximación incremental al adoptar técnicas:

• Recordar las tácticas empleadas con los IDS/IPS


Cuestionario

link Herramientas para análisis estático de seguridad

Comentarios

Entradas populares de este blog

Mapa conceptual conjuntos - Mónica Erazo

Presentación Induccion

Manejo estatico de las variables en memoria