¿Qué es el modelado de amenazas?

El modelado de amenazas es un método para identificar por adelantado posibles vulnerabilidades en la arquitectura de una aplicación. Consiste en diagramar una aplicación, identificar los fallos de seguridad y mitigarlos.

Metas de aprendizaje

Después de leer este artículo podrás:

  • Definir el modelado de amenazas
  • Describe los cuatro pasos principales del modelado de amenazas
  • Comparar metodologías comunes de modelado de amenazas

Contenido relacionado


¿Quieres saber más?

Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar el enlace del artículo

¿Qué es el modelado de amenazas?

El modelado de amenazas es un ejercicio para encontrar vulnerabilidades de seguridad en una aplicación y su entorno. Consiste en crear una representación de una aplicación con todos sus componentes, para luego identificar los puntos débiles. Lo ideal es que los desarrolladores e ingenieros de seguridad utilicen el modelado de amenazas a lo largo de todo el proceso de desarrollo del software — antes de que una aplicación salga al mercado, no solo después. El modelado de amenazas puede ayudar a que una aplicación sea mucho más segura de lo que hubiera sido de otro modo, pero no debe esperarse a que sea inaccesible.

En las películas de atracos, los protagonistas suelen examinar los planos de las instalaciones que planean robar, averiguando cuáles son los puntos débiles — por dónde se puede entrar en el edificio, los ángulos que las cámaras de seguridad no pueden detectar, etc. Del mismo modo, el modelado de amenazas es como examinar los "planos" de una aplicación determinada. La diferencia es que el modelado de amenazas lo realizan las personas a las que les gustaría mantener segura la aplicación, no los posibles ladrones.

El modelado de amenazas requiere que los equipos creen una visión completa de la aplicación. Luego, implica pensar como alguien que podría querer poner en riesgo la aplicación. ¿Qué haría un atacante? ¿Aprovecharían quizás la débil seguridad de la API? ¿Utilizarían un ataque a la cadena de suministro para infectar una biblioteca de sistemas integrados? Aunque no todos los ataques pueden anticiparse, el modelado de amenazas ayuda a detener algunos de estos antes de que se produzcan.

¿Cuáles son los pasos del modelado de amenazas?

Existen muchos enfoques posibles para el modelado de amenazas y ningún método se puede aplicar a todas las situaciones. Sin embargo, normalmente se trata de estos cuatro pasos principales:

1. Evaluar y diagramar la aplicación

Los modeladores de amenazas intentan identificar y representar lo siguiente:

  • Los componentes de una aplicación, incluidos los servidores de bases de datos, los servidores web, las puertas de enlace, las bibliotecas y la interfaz de usuario.
  • Las formas en que esos componentes se conectan, como los protocolos utilizados para intercambiar datos y cualquier encriptación que proteja esos datos en tránsito.

Si Terry escribe una aplicación sencilla que muestra imágenes de globos, su diagrama de la aplicación podría verse de la siguiente forma:

Ejemplo sencillo de modelado de amenazas: diagrama de interfaz de aplicaciones, puerta de enlace, servidor web, base de datos y conexiones

Ten en cuenta que este es un ejemplo que ha sido simplificado en gran medida y que el diagrama de una aplicación real de modelado de amenazas podría ser mucho más complejo.

2. Identificar fallos de seguridad en el desarrollo de la aplicación

Ver una aplicación presentada de este modo puede facilitar la identificación de los fallos. Terry, por ejemplo, podría darse cuenta de que las comunicaciones entre su base de datos de fotos de globos y su servidor web no usan Transport Layer Security (TLS). Esto significa que ninguno de los dos servidores comprueba la identidad del otro mediante firmas digitales, lo que hace posible que un atacante se haga pasar por el servidor de la base de datos y envíe contenido malicioso al servidor web.

Ejemplo sencillo de modelado de amenazas: la conexión entre el servidor web y la base de datos no está encriptada

3. Realizar cambios que corrijan esos fallos

Dado que el modelado de amenazas ocurre durante todo el proceso de desarrollo, mitigar los fallos puede significar cambiar el plan de la arquitectura de una aplicación o implementar una solución en una aplicación que está siendo desarrollada.

Para mitigar la amenaza que identificó, Terry puede reconfigurar su servidor de base de datos y su servidor web para que utilicen TLS para su conexión — o mejor aún, para que utilicen mutual TLS (mTLS) y hagan una comprobación mutua.

Ejemplo sencillo de modelado de amenazas: la conexión entre el servidor web y la base de datos ahora está segura

4. Comprobar que esos cambios se han aplicado y que mitigan correctamente la amenaza

A este punto, Terry podría ejecutar la aplicación en un entorno de prueba y comprobar si 1) los servidores utilizan TLS tal y como está configurado, y 2) si el servidor web aceptará tráfico HTTP de un servidor no comprobado en lugar del servidor de la base de datos. Llevaría a cabo comprobaciones similares para cualquier otra mitigación que haya aplicado.

¿Cuáles son las distintas metodologías de modelado de amenazas?

Una metodología de modelado de amenazas es un enfoque para identificar las amenazas. Las metodologías proporcionan estructura al proceso de modelado de amenazas, lo cual de otro modo podría resultar abrumador en un sistema complejo. Las organizaciones pueden elegir entre una amplia gama de metodologías de modelado de amenazas o incluso desarrollar las suyas propias. Algunas de las metodologías más comunes incluyen:

  • STRIDE: esta metodología, desarrollada por Microsoft, es un dispositivo mnemotécnico para identificar las amenazas a la seguridad. "STRIDE" son las siglas en inglés para "Suplantación de identidad, Manipulación, Repudio, Divulgación de información, Denegación de servicio y Elevación de privilegios". ("Repudio" se refiere en este caso a la incapacidad de verificar el origen y la integridad de los datos). La idea es buscar estos seis tipos de amenazas específicos en toda la arquitectura de una aplicación.
  • PASTA: son las siglas en inglés para "Proceso de simulación de ataques y análisis de amenazas". PASTA es un proceso de siete pasos para identificar, enumerar y calificar las amenazas.
  • VAST: la metodología de Amenaza visual, ágil y simple (VAST) está asociada a ThreatModeler, un producto de software de modelado automatizado de amenazas.
  • SQUARE: la metodología de Ingeniería de requisitos de calidad de la seguridad (SQUARE) ayuda a identificar los problemas de seguridad por adelantado, al principio del proceso de desarrollo.

También hay otras metodologías de modelado de amenazas. Algunas de estas incluyen "Trike" y las diversas metodologías híbridas, que ni siquiera tienen siglas.

¿Cuándo ocurre el modelado de amenazas?

El modelado de amenazas se debe realizar antes y durante el desarrollo del software, a lo largo del ciclo de vida de una aplicación. Si una aplicación se publica sin ningún tipo de modelado o mitigación de amenazas, los fallos de seguridad pueden ser descubiertos por los usuarios —o atacantes— antes de que los descubran los equipos de seguridad. Esto puede dar lugar a una fuga de datos e introduce un mayor riesgo de amenazas zero-day.

Sin embargo, como el modelado de amenazas no descubre todos los riesgos de un sistema, los desarrolladores y las organizaciones deben continuar con este proceso, incluso después del lanzamiento. Además de modelar las amenazas, pueden hacerlo a través de lo siguiente:

  • Detección de amenazas: se trata de buscar proactivamente amenazas contra un sistema. La detección de amenazas puede ser un proceso de investigación manual llevado a cabo por un analista de seguridad, un proceso automatizado realizado por una herramienta de seguridad o una combinación de ambos.
  • Pruebas de penetración: las pruebas de penetración, o pen testing, son un ejercicio de seguridad en el que un hacker ético intenta encontrar y aprovechar las vulnerabilidades en un sistema informático. Para ser eficaces, las pruebas de penetración deben ser realizadas por alguien sin conocimiento previo del sistema, por lo que deben llevarse a cabo de forma totalmente independiente del proceso de modelado de amenazas. A menudo, quienes desarrollaron la aplicación están demasiado cerca de ella para identificar todos los fallos, del mismo modo que el arquitecto de una instalación segura puede no prever los fallos que permiten a un equipo de ladrones infiltrarse durante un atraco de película.
  • Otras medidas de seguridad de las aplicaciones: la seguridad de las aplicaciones es una disciplina compleja. Ningún sistema o aplicación se debe considerar completamente seguro. Un firewall de aplicación web (WAF) puede ayudar mucho a proteger las aplicaciones web.

Cloudflare también ofrece un servicio de información sobre amenazas y operaciones, Cloudforce One, para proteger a los clientes de las amenazas más recientes. Cloudforce One está dirigido por un equipo de investigación de amenazas de categoría mundial con gran experiencia en desbaratar a atacantes de escala global. Más información sobre Cloudforce One aquí.