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:
- ¿Qué estamos construyendo? Podes responderlo con el diagrama del sistema.
- ¿Qué puede salir mal? Enumerar amenazas.
- ¿Qué vamos a hacer? Decidir mitigaciones.
- ¿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:
| Letra | Amenaza | Propiedad que viola |
|---|---|---|
| S | Spoofing (suplantación) | Autenticación |
| T | Tampering (manipulación) | Integridad |
| R | Repudiation (repudio) | No repudio |
| I | Information disclosure (fuga) | Confidencialidad |
| D | Denial of service | Disponibilidad |
| E | Elevation of privilege | Autorizació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.
- #threat-modeling
- #diseno
- #stride