Skip to content
SP StackPractices
intermediate Por StackPractices

Modelado de Amenazas — Guía Práctica para Equipos de Desarrollo

Guía paso a paso de modelado de amenazas: STRIDE, árboles de ataque, diagramas de flujo de datos e integración de revisión de diseño de seguridad en tu proceso de desarrollo.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Overview

El modelado de amenazas es el proceso de identificar, comunicar y gestionar amenazas de seguridad en un sistema antes de escribir una sola línea de código. Al analizar la arquitectura y los flujos de datos, los equipos pueden anticipar ataques y construir mitigaciones en el diseño. Es una de las actividades de seguridad más rentables porque corregir vulnerabilidades en diseño es órdenes de magnitud más barato que corregirlas en producción.

When to Use

  • Estás diseñando un nuevo sistema o característica principal
  • Estás revisando una arquitectura existente en busca de brechas de seguridad
  • Necesitas comunicar riesgos de seguridad a stakeholders no técnicos
  • Te preparas para una auditoría de seguridad o revisión de cumplimiento

El Proceso de Modelado de Amenazas

Paso 1: Descomponer la Aplicación

Crear un Diagrama de Flujo de Datos (DFD) mostrando cómo los datos se mueven a través del sistema.

┌─────────┐      ┌─────────┐      ┌─────────┐      ┌─────────┐
│ Usuario │─────▶│   WAF   │─────▶│   API   │─────▶│   BD    │
│ Navegador│      │ / CDN   │      │ Gateway │      │         │
└─────────┘      └─────────┘      └─────────┘      └─────────┘
      │                │                │                │
      │                │                │                │
   Entidad         Entidad            Proceso          Almacén
   Externa        Externa             Interno          de Datos
      │                │                │                │
      ▼                ▼                ▼                ▼
   Confianza:        Confianza:        Confianza:       Confianza:
   Ninguna           Baja              Alta             Alta

Elementos a identificar:

  • Entidades externas: Usuarios, sistemas de terceros, navegadores
  • Procesos: Aplicaciones, servicios, funciones
  • Almacenes de datos: Bases de datos, cachés, sistemas de archivos
  • Flujos de datos: HTTP, gRPC, colas de mensajes, llamadas API internas
  • Límites de confianza: Donde cambian los niveles de confianza (ej. internet pública a VPC)

Paso 2: Identificar Amenazas con STRIDE

AmenazaDescripciónEjemplo
SuplantaciónHacerse pasar por otra personaCredenciales robadas, JWT forjado
TamperingModificar datos o códigoAtaque MitM, envenenamiento de cadena de suministro
RepudioNegar una acciónSin logs de auditoría para eliminaciones
InformaciónExponer datos a partes no autorizadasMensajes de error verbosos, fugas de buckets S3
DenegaciónHacer el sistema no disponibleDDoS, agotamiento de recursos
EscalaciónObtener acceso no autorizadoExplotar un bug para convertirse en admin

Para cada elemento en el DFD, pregúntate: ¿cómo podría aplicarse STRIDE aquí?

Paso 3: Determinar Mitigaciones

AmenazaMitigación
SuplantaciónMFA, certificate pinning, autenticación fuerte
TamperingTLS, firma de código, validación de entrada
RepudioLogs de auditoría inmutables, firmas digitales
InformaciónEncriptación, privilegio mínimo, sanitización de errores
DenegaciónRate limiting, CDN, auto-escalado
EscalaciónRBAC, sandboxing, principio de privilegio mínimo

Paso 4: Validar e Iterar

  • Revisar el modelo con el equipo completo (seguridad, desarrolladores, operaciones)
  • Revisitar el modelo cuando la arquitectura cambia
  • Rastrear mitigaciones como tareas de ingeniería en tu backlog

Árboles de Ataque

Los árboles de ataque descomponen un objetivo de ataque de alto nivel en sub-objetivos, ayudando a identificar el camino de menor resistencia para los atacantes.

Objetivo: Robar datos de clientes

├── Comprometer servidor de aplicación
│   ├── Explotar vulnerabilidad conocida (CVE)
│   │   └── Mitigación: Parchear dentro de 24h
│   ├── Inyección SQL
│   │   └── Mitigación: Consultas parametrizadas
│   └── Contraseña de admin débil
│       └── Mitigación: Hacer cumplir MFA

├── Acceder a base de datos directamente
│   ├── Puerto de base de datos expuesto
│   │   └── Mitigación: Security groups, sin acceso público
│   └── Credenciales robadas
│       └── Mitigación: Vault, credenciales de corta duración

└── Amenaza interna
    └── Mitigación: Logs de auditoría, principio de privilegio mínimo

Herramientas y Plantillas

HerramientaPropósito
Microsoft Threat Modeling ToolCrear DFDs y aplicar STRIDE automáticamente
OWASP Threat DragonModelado de amenazas open-source con colaboración de equipo
PyTMModelado de amenazas basado en Python para generación programática
Mermaid / Diagrams.netCrear DFDs y árboles de ataque

Integración en el Desarrollo

Sprint 0: Revisión de Arquitectura

Conducir modelado de amenazas durante la fase de diseño, antes de que comience la implementación.

Definición de Hecho

  • DFD creado y revisado
  • Amenazas STRIDE identificadas para cada límite de confianza
  • Mitigaciones documentadas y agregadas al backlog
  • Pruebas de seguridad definidas para cada mitigación

Revisión Continua

Revisitar el modelo de amenazas cuando:

  • Se agregan nuevas integraciones o APIs
  • Cambian los límites de confianza (ej. nueva región, nuevo proveedor)
  • Se descubre una vulnerabilidad en un sistema similar

Errores Comunes

  • Modelar amenazas demasiado tarde — después de escribir código, las correcciones son caras
  • Solo el equipo de seguridad participa — los desarrolladores conocen mejor el sistema
  • Tratar el modelo como documento único — las arquitecturas evolucionan; las amenazas también
  • Ignorar amenazas internas — no todos los atacantes son externos
  • Enfocarse solo en software — la ingeniería social y el acceso físico son amenazas válidas

FAQ

¿Cuánto tiempo toma el modelado de amenazas? Una sesión enfocada para un solo servicio toma 2-4 horas. Los sistemas complejos pueden necesitar múltiples sesiones.

¿Necesito un experto en seguridad para facilitar? Útil pero no requerido. Un desarrollador entrenado en STRIDE puede liderar la sesión. Consultores externos pueden validar hallazgos.

¿Cómo priorizo amenazas? Usa una matriz de riesgo: probabilidad × impacto. Aborda primero las amenazas de alta probabilidad y alto impacto. Documenta los riesgos aceptados para los elementos de baja prioridad.