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.
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.
Descomponer la Aplicación
El objetivo de este paso es obtener una comprensión de la aplicación y cómo interactúa con
entidades externas. Este objetivo se logra mediante la recopilación y documentación de
información. El proceso de recopilación de información se lleva a cabo utilizando una
estructura definida claramente, lo que asegura que se recoge la información correcta. Esta
estructura también define la forma en que la información debe ser documentada para
producir el modelo de amenazas.
Modelado de amenazas
Versión de la
1.0
aplicación
Descripción Estudiantes
Personal
Bibliotecarios
El personal y los estudiantes serán capaces de ingresar a buscar libros y el
personal pueden solicitar libros. Los bibliotecarios serán capaces de ingresar,
agregar libros, agregar usuarios y buscar libros.
Propietario del
Nombre y apellido del responsable
documento
Dependencias externas
Las dependencias externas son elementos externos al código de la aplicación que puede
suponer una amenaza para la aplicación. Estos elementos todavía suelen estar dentro del
control de la organización, pero posiblemente no bajo el control del equipo de desarrollo. La
primer área a observar a la hora de investigar las dependencias externas, es cómo se va a
implementar la aplicación en entorno de producción, y cuáles son los requisitos en torno a
ésta. Esto implica observar cómo está o no destinada la aplicación a ser ejecutada. Por
ejemplo, si se espera que la aplicación se ejecute en un servidor que se ha
"fortalecido" (hardening) con el estándar de la organización y se espera que se coloque
detrás de un firewall, esta información debe ser documentada en la sección de dependencias
externas. Las dependencias externas deben ser documentadas de la siguiente manera:
Puntos de entrada
Los puntos de entrada definen las interfaces a través de la cual los atacantes potenciales
pueden interactuar con la aplicación o alimentarla con datos. Para que un atacante potencial
ataque una aplicación, deben existir puntos de entrada. Los puntos de entrada de una
aplicación se pueden superponer, por ejemplo cada página web en una aplicación web
pueden contener varios puntos de entrada. Los puntos de entrada deben ser documentados
de la siguiente manera:
ID: un identificador único asignado al punto de entrada. Esto será utilizado para cruzar de
referencia el punto de entrada a las amenazas o vulnerabilidades que se identifiquen. En el
caso de los puntos de entrada de la capa, se debe utilizar una notación de mayor-menor.
Nombre: nombre descriptivo que identifica el punto de entrada y su propósito.
Descripción: una descripción textual que detalla la interacción o proceso que se produce en
el punto de entrada.
Niveles de confianza: nivel de acceso requerido en el punto de entrada documentado. Serán
referencias cruzadas con los niveles de confianza definidos más adelante.
Activos
El sistema debe tener algo que al atacante le interese; estos elementos/áreas de interés se
definen como activos. Los activos son esencialmente los objetivos de una amenaza, es
decir, son la razón por las cuales existirán las amenazas. Los activos pueden ser tanto físicos
como lógicos (abstractos). Por ejemplo, un activo de una aplicación podría ser una lista de
clientes y su información personal, este es un activo físico. Un activo abstracto podría ser la
reputación de una organización. Dichos activos están documentados en el modelo de
amenazas de la siguiente manera:
ID: un identificador único es asignado para identificar cada activo. Esto será utilizado para
cruzar referencias del activo con las amenazas o vulnerabilidades que se identifiquen.
Nombre: nombre descriptivo que identifique claramente el activo.
Descripción: una descripción textual de lo que es el activo y qué necesita ser protegido.
Niveles de confianza: el nivel de acceso requerido para acceder al punto de entrada se
documenta aquí. Estas serán referencias cruzadas con los niveles de confianza definidos
en el siguiente paso.
Niveles de confianza
Los niveles de confianza representan los derechos de acceso que la aplicación va a
conceder a entidades externas. Los niveles de confianza tienen una referencia cruzada con
los puntos de entrada y activos. Esto nos permite definir los derechos de acceso o privilegios
requeridos en cada punto de entrada, y los necesarios para interactuar con cada activo. Los
niveles de confianza están documentados en el modelo de amenaza de la siguiente manera:
ID: número único asignado a cada nivel de la confianza. Esto se utiliza para cruzar referencia
del nivel de confianza con los puntos de entrada y activos.
Nombre: nombre descriptivo que permita identificar a las entidades externas a las que se le
ha concedido este nivel de confianza.
Descripción: descripción textual del nivel de confianza que detalla la entidad externa que se
ha concedido el nivel de confianza.