Modelado de Amenazas

Introducción
El término Modelado de Amenazas se ha vuelto bastante popular en los últimos años. Microsoft ha publicado un libro sobre su proceso e incluye al Modelado de Amenazas como una actividad clave en su Ciclo de Vida de Desarrollo Seguro (S-SDLC).

Un modelo de amenazas es en esencia una representación estructurada de toda la información que afecta a la seguridad de una aplicación. En sí, es una vista de la aplicación y su entorno a través de los "anteojos" de la seguridad.

El modelado de amenazas es un proceso para capturar, organizar y analizar toda esta información. Permite tomar decisiones informadas sobre los riesgos de seguridad en las aplicaciones. Además de producir un modelo, los esfuerzos para un modelado de amenazas típico también producen una lista priorizada de mejoras de seguridad en los requisitos, diseño e implementación de las aplicaciones.

Objetivos del Modelado de Amenazas
El modelado de amenazas es un procedimiento para optimizar la seguridad de la red/aplicaciones/Internet mediante la identificación de objetivos y vulnerabilidades, y luego definir las contramedidas para prevenir o mitigar los efectos de las amenazas al sistema.

Una amenaza es un evento potencial indeseable o real que puede ser malicioso (como un ataque DoS) o accidental (fallo en un dispositivo de almacenamiento). El modelado de amenazas es una actividad planificada para la identificación y evaluación de las amenazas y vulnerabilidades en las aplicaciones.

Modelado de Amenazas a lo largo del Ciclo de Vida
El modelado de amenazas se aplica mejor de forma continua a lo largo de un proyecto de desarrollo de software. El proceso es esencialmente el mismo pero en diferentes niveles de abstracción, aunque la información se vuelve más y más granular durante todo el ciclo de vida. Lo ideal es que un modelo de amenazas de alto nivel debe estar definido en la fase de planificación, y luego refinado a lo largo del ciclo de vida. A medida que se agregan más detalles al sistema, se crean y se exponen a nuevos vectores de ataque. El proceso de modelado de riesgos en curso debe examinar, diagnosticar y tratar estas amenazas.

El refinar el sistema para las nuevas amenazas a las que se estará expuesto es una parte natural del proceso. Por ejemplo, al seleccionar una tecnología en particular, como Java por ejemplo, hay que asumir la responsabilidad de identificar las nuevas amenazas que se crean por esa elección. Incluso las opciones de implementación, tales como el uso de expresiones regulares para una validación, introducen nuevas amenazas potenciales a tratar.

Modelado de Amenazas - Pasos genéricos
Para que exista una amenaza para una aplicación, tiene que haber una combinación donde la probabilidad y el impacto en conjunto sean suficientemente importantes como para hacer algo al respecto. A continuación se presenta un borrador de una metodología genérica para el modelado de amenazas:


 * Alcance de la evaluación
 * Modelado del sistema
 * Identificación de amenazas
 * Identificación de vulnerabilidades
 * Examinación del historial de amenazas
 * Evaluación del impacto en el negocio
 * Desarrollo de un plan de respuestas ante amenazas a la seguridad

Para comprender si una aplicación es lo suficientemente segura o no, hay que buscar combinaciones de estos ingredientes que conducen hacia las amenazas reales. El verdadero truco para el modelado de amenazas es no perder el tiempo en las amenazas que son demasiado inverosímiles o demasiado intrascendentes. Se debe tener cuidado con los procesos de modelado de amenazas que son ineficientes debido a la reducción del espacio de búsqueda; de las posibles amenazas para eliminar que son muy poco probables; o de las que tienen un impacto mínimo.

No existe una manera "correcta" para evaluar el espacio de búsqueda de posibles amenazas. Pero hay maneras "equivocadas". El intento por evaluar todas las posibles combinaciones de agentes de amenazas, ataques, vulnerabilidades e impacto, es una pérdida de tiempo y esfuerzo. Existen muchas herramientas automatizadas que toman este enfoque: la recopilación de una gran cantidad de datos y la producción de miles de posibles amenazas. Generalmente es más productivo centrarse en la búsqueda de amenazas con alta probabilidad y alto impacto.

El proceso básico de modelado de amenazas consiste en los siguientes pasos genéricos. El proceso de explorar el espacio de búsqueda es iterativo y constantemente perfeccionado sobre la base de lo que han hecho hasta el momento. Así, por ejemplo, comenzar con todas las vulnerabilidades posibles suele ser inútil, ya que la mayoría de ellas no son atacables por los agentes de amenaza, protegidas por una contramedida o no conducen a una consecuencia directa. Por lo tanto, en general es mejor comenzar con los factores que hacen la diferencia.


 * Alcance de la evaluación: el primer paso siempre es entender lo que está en juego. La identificación de los activos tangibles, como bases de datos o archivos confidenciales o sensible, usualmente es fácil. La comprensión de las capacidades proporcionadas por la aplicación y la valoración de estas es más difícil. Cosas menos concretas, tales como la reputación y el renombre comercial son los más difíciles de medir, pero a menudo son los más críticos.
 * Identificar agentes de amenaza y posibles ataques: una parte fundamental del modelado de amenazas es una caracterización de los diferentes grupos de personas que podrían ser capaces de atacar a la aplicación. Estos grupos deben incluir elementos internos y externos, y la realización de ambos, errores involuntarios y ataques maliciosos.
 * Entender contramedidas existentes: el modelo debe incluir las contramedidas existentes.
 * Identificar las vulnerabilidades explotables: una vez que se tiene una comprensión de la seguridad en la aplicación, luego se podrán analizar las nuevas vulnerabilidades. La búsqueda es para las vulnerabilidades que se relacionan a los posibles ataques y las consecuencias negativas que se han identificado.
 * Identificar riesgos prioritarios: la priorización es todo en el modelado de amenazas ya que siempre hay muchos riesgos que simplemente no merecen ninguna atención. Para cada amenaza, se debe estimar una probabilidad y factor de impacto para determinar el riesgo general o el nivel de gravedad.
 * Identificar las contramedidas para reducir la amenaza: el último paso consiste en identificar las contramedidas para reducir el riesgo a niveles aceptables.

Beneficios
Si se hace bien, el modelado de amenazas proporciona una "línea de visión" clara a través de un proyecto que justifica los esfuerzos de seguridad. El modelado de amenazas permite que las decisiones de seguridad se hagan de manera racional, con toda la información sobre la mesa. La alternativa consiste en tomar decisiones de seguridad instintivas sin apoyo. El proceso de modelado de amenazas, naturalmente, produce un argumento de seguridad que se puede utilizar para explicar y defender la seguridad de una aplicación. Un argumento de aseguramiento comienza con algunas exposiciones de alto nivel, y las justifica ya sea con subexposiciones o evidencias.

Referencias

 * Microsoft's Application Consulting & Engineering Team's Threat Modeling Blog
 * RockyH.net Threat Modeling v2
 * Microsoft's Security Development Process

Artículos relacionados

 * Application Threat Modeling
 * OCRG1.1:Application Threat Modeling
 * Perform security analysis of system requirements and design (threat modeling)
 * Threat modeling
 * Threat Risk Modeling