Codea Seguro Codea Seguro
Desarrollo Seguro Dificultad: avanzada

Modelado de amenazas

Pensar como agente atacante en la fase de diseño con STRIDE y diagramas de flujo de datos.

El modelado de amenazas es analizar un sistema antes de construirlo para anticipar cómo lo atacarían. Es la práctica de seguridad más barata: encontrar un fallo en un diagrama cuesta mucho menos que encontrarlo en producción.

1. Las cuatro preguntas

El marco de Shostack se resume en responder, en equipo:

  1. ¿Qué estamos construyendo? Podes responderlo con el diagrama del sistema.
  2. ¿Qué puede salir mal? Enumerar amenazas.
  3. ¿Qué vamos a hacer? Decidir mitigaciones.
  4. ¿Lo hicimos bien? Valida y repite.

2. Dibuja un diagrama de flujo de datos (DFD)

Representa procesos, almacenes de datos, flujos y actores externos. Lo clave son los límites de confianza: dónde los datos cruzan de una zona a otra (navegador→API, API→BD, servicio→servicio). Las amenazas viven en esos cruces.

3. Enumera amenazas con STRIDE

Para cada elemento del diagrama, recorre las seis categorías:

LetraAmenazaPropiedad que viola
SSpoofing (suplantación)Autenticación
TTampering (manipulación)Integridad
RRepudiation (repudio)No repudio
IInformation disclosure (fuga)Confidencialidad
DDenial of serviceDisponibilidad
EElevation of privilegeAutorización

4. Prioriza y mitiga

No todas las amenazas pesan igual. Estima probabilidad e impacto (DREAD, o simple alto/medio/bajo) y decide para cada una: mitigar, eliminar, transferir o aceptar el riesgo. Traduce las mitigaciones en requisitos y tickets concretos.

5. Hazlo ligero y continuo

  • Empieza con una pizarra y una hora, no con una herramienta pesada.
  • Modela por funcionalidad nueva o cambio de arquitectura, no una sola vez.
  • Herramientas útiles: OWASP Threat Dragon, Microsoft Threat Modeling Tool, o fichas de threat modeling en el PR de diseño.

Checklist rápida

  • Diagrama del sistema con límites de confianza marcados.
  • STRIDE aplicado a cada elemento y cruce de confianza.
  • Amenazas priorizadas por probabilidad e impacto.
  • Decisión explícita por amenaza (mitigar/eliminar/transferir/aceptar).
  • Mitigaciones convertidas en requisitos y tickets.
  • Modelado repetido ante cada cambio significativo de diseño.