Taller de proyecto: Análisis de riesgos y modelado de amenazas

Objetivos: Al terminar este tema, podrás…

  • Aplicar metodologías de análisis de riesgos a sistemas de software
  • Identificar activos, amenazas y vulnerabilidades en propuestas tecnológicas
  • Evaluar y priorizar riesgos según probabilidad e impacto
  • Documentar hallazgos en formato profesional

El ingeniero de seguridad en proyectos de software

En el ciclo de desarrollo de software, el ingeniero de seguridad participa desde las primeras etapas. Tu rol es:

  1. Analizar la arquitectura propuesta — Identificar superficies de ataque
  2. Modelar amenazas — Anticipar cómo podría ser atacado el sistema
  3. Evaluar riesgos — Priorizar por probabilidad e impacto
  4. Proponer controles — Diseñar mitigaciones técnicas específicas
  5. Documentar decisiones — Justificar cada control con la amenaza que mitiga

Este análisis se realiza antes de escribir código. Es más barato corregir un diseño que reescribir un sistema.


Metodología de análisis de riesgos

Paso 1: Identificar activos

Un activo es cualquier recurso que tiene valor y requiere protección. Clasifica los activos por tipo:

CategoríaEjemplosValor típico
Datos de usuariosPII, credenciales, preferenciasAlto (regulaciones, privacidad)
Datos de negocioTransacciones, contratos, estrategiasAlto (ventaja competitiva)
InfraestructuraServidores, bases de datos, APIsMedio-Alto (continuidad operativa)
Código fuenteAlgoritmos, lógica de negocioVariable (propiedad intelectual)
ReputaciónConfianza de usuarios, marcaAlto (difícil de recuperar)

Paso 2: Identificar amenazas con STRIDE

STRIDE es un modelo de Microsoft para categorizar amenazas sistemáticamente:

CategoríaDescripciónPrincipio CIAAN afectado
SpoofingSuplantar identidad de usuario o sistemaAutenticación
TamperingModificar datos sin autorizaciónIntegridad
RepudiationNegar haber realizado una acciónNo repudio
Information DisclosureExponer información a no autorizadosConfidencialidad
Denial of ServiceImpedir acceso al servicioDisponibilidad
Elevation of PrivilegeObtener permisos no autorizadosAutenticación/Autorización

Paso 3: Identificar vulnerabilidades

Para cada componente del sistema, pregunta:

  • ¿Qué entradas acepta? ¿Están validadas?
  • ¿Qué datos almacena? ¿Están cifrados?
  • ¿Con qué otros sistemas se comunica? ¿Cómo se autentica?
  • ¿Qué privilegios tiene? ¿Son los mínimos necesarios?

Paso 4: Evaluar riesgos

Usa una matriz de riesgos para priorizar:

Impacto BajoImpacto MedioImpacto AltoImpacto Crítico
Probabilidad AltaMedioAltoCríticoCrítico
Probabilidad MediaBajoMedioAltoCrítico
Probabilidad BajaBajoBajoMedioAlto

Paso 5: Diseñar controles

Para cada riesgo priorizado, propón controles específicos:

RiesgoControl propuestoTipoCosto relativo
SQL InjectionPrepared statements, ORMPreventivoBajo
Fuerza brutaRate limiting, MFAPreventivo/DetectivoMedio
Filtración de datosCifrado en reposo y tránsitoPreventivoMedio
DDoSCDN, WAF, auto-scalingPreventivo/CorrectivoAlto

Casos de estudio para análisis

Caso A: Sistema de alertas de emergencias

Descripción: Plataforma que envía notificaciones de desastres naturales a ciudadanos. Integra sensores gubernamentales, APIs meteorológicas y geolocalización de usuarios.

Arquitectura simplificada:

[Sensores] → [API Gateway] → [Motor de alertas] → [Push notifications]
                  ↓                    ↓
             [Base de datos]    [Dashboard admin]

Análisis STRIDE:

ComponenteAmenaza STRIDERiesgo específicoImpacto
API GatewaySpoofingInyección de alertas falsasCrítico (pánico)
API GatewayDoSSistema caído durante emergenciaCrítico (vidas)
Base de datosInformation DisclosureFiltración de ubicacionesAlto (privacidad)
Motor de alertasTamperingModificación de zonas de alertaCrítico
DashboardElevation of PrivilegeOperador maliciosoCrítico

Controles propuestos:

  1. Autenticación mutual (mTLS) con fuentes oficiales
  2. Firma digital de todas las alertas
  3. Infraestructura multi-región con failover automático
  4. Minimización de datos de ubicación (retención máxima 24h)
  5. Control de acceso basado en roles con MFA para operadores

Caso B: Plataforma de transporte público inteligente

Descripción: Sistema que optimiza rutas usando GPS de vehículos, datos de tráfico y patrones de uso. Incluye app para usuarios, app para conductores y panel de control.

Activos identificados:

  • Ubicación en tiempo real de usuarios
  • Historial de viajes y patrones de movimiento
  • Datos de pago (tarjetas, saldo)
  • Credenciales de conductores y operadores
  • Algoritmos de optimización (IP)

Análisis de riesgos:

RiesgoProbabilidadImpactoPrioridadControl
Rastreo de usuarios por tercerosMediaAltoAltoAnonimización de datos, retención mínima
Manipulación de rutasBajaAltoMedioFirmas digitales, validación server-side
Fraude en pagosAltaMedioAltoTokenización, 3D Secure
Suplantación de conductorMediaAltoAltoVerificación biométrica, device binding
DDoS en hora picoMediaAltoAltoCDN, rate limiting, capacidad reservada

Caso C: Sistema de salud para monitoreo remoto

Descripción: Aplicación que conecta pacientes con profesionales de salud. Integra dispositivos IoT (tensiómetros, glucómetros), almacena historiales y genera alertas médicas.

Consideraciones especiales:

  • Datos de salud son categoría especial bajo Ley 1581 (Colombia) y GDPR
  • Dispositivos IoT tienen capacidades de seguridad limitadas
  • Usuarios pueden tener baja competencia técnica
  • Fallos pueden tener consecuencias fatales

Análisis de riesgos críticos:

RiesgoConsecuenciaControl
Modificación de dosis recomendadasDaño físico o muerteFirmas digitales, validación por médico, límites de dosis
Filtración de historial médicoDiscriminación, daño reputacionalCifrado E2E, acceso basado en consentimiento
Dispositivo IoT comprometidoLecturas falsas, acceso a redSegmentación de red, firmware firmado
Acceso no autorizado a cuentaViolación de privacidadMFA, notificaciones de acceso, sesiones limitadas

Caso D: Sistema de videovigilancia urbana

Descripción: Red de cámaras con análisis de video en tiempo real para seguridad pública. Detecta incidentes, reconoce patrones y alerta a autoridades.

Dilemas de diseño:

DecisiónOpción A (más seguridad)Opción B (más privacidad)
Reconocimiento facialActivado para identificar sospechososDesactivado o anonimizado
Retención de video90 días para investigaciones24-48 horas máximo
Acceso en tiempo realCualquier oficial autorizadoSolo bajo orden judicial

Riesgos específicos de este dominio:

  • Uso para vigilancia masiva no justificada
  • Manipulación de evidencia para incriminación falsa
  • Acceso de actores maliciosos (chantaje, voyeurismo)
  • Sesgo algorítmico en reconocimiento facial

Documentación de análisis de riesgos

Un análisis profesional incluye:

1. Resumen ejecutivo

  • Descripción del sistema analizado
  • Principales riesgos identificados
  • Recomendaciones prioritarias

2. Inventario de activos

  • Lista de activos con clasificación de sensibilidad
  • Propietario de cada activo
  • Requisitos de protección (CIAAN)

3. Modelo de amenazas

  • Diagrama de flujo de datos (DFD)
  • Superficie de ataque identificada
  • Actores maliciosos considerados (del tema 02)
  • Análisis STRIDE por componente

4. Evaluación de riesgos

  • Matriz de riesgos con probabilidad e impacto
  • Priorización de riesgos
  • Riesgos residuales aceptados

5. Controles propuestos

  • Control técnico para cada riesgo prioritario
  • Justificación de cada control
  • Costo estimado de implementación
  • Riesgos mitigados vs. residuales

Preparación para la primera sustentación

Para tu primera evaluación de proyecto, deberás presentar:

  1. Contexto del proyecto — ¿Qué sistema estás analizando?
  2. Inventario de activos — ¿Qué datos y sistemas requieren protección?
  3. Modelo de amenazas — ¿Quién atacaría? ¿Con qué técnicas?
  4. Análisis CIAAN — ¿Qué principios están en riesgo?
  5. Matriz de riesgos — ¿Cuáles son los riesgos prioritarios?
  6. Propuesta inicial de controles — ¿Cómo mitigarías los riesgos principales?

Consulta los criterios de evaluación para más detalles.


Conceptos clave

TérminoDefinición
ActivoRecurso con valor que requiere protección
VulnerabilidadDebilidad explotable en un sistema
STRIDEModelo de categorización de amenazas (Spoofing, Tampering, Repudiation, Information Disclosure, DoS, Elevation of Privilege)
Superficie de ataqueConjunto de puntos donde un atacante puede intentar acceder
DFDDiagrama que muestra cómo fluyen los datos en un sistema
Riesgo residualRiesgo que permanece después de aplicar controles

Ponte a prueba

  1. Análisis STRIDE: Para un sistema de banca en línea, identifica al menos una amenaza de cada categoría STRIDE y propón un control para mitigarla.

  2. Priorización: Tienes presupuesto para implementar solo 3 controles en una app de delivery de comida. ¿Cuáles priorizarías? Justifica usando probabilidad e impacto.

  3. Documentación: Selecciona una aplicación real (puede ser el proyecto de tu equipo) y crea un inventario de activos con clasificación de sensibilidad.

  4. Trade-offs: En el sistema de videovigilancia, ¿cómo balancearías seguridad pública vs. privacidad individual? Propón controles técnicos que permitan ambos.


Laboratorio práctico: Modelado de amenazas con OWASP Threat Dragon

Tiempo estimado: 120 minutos Requisitos: Docker o navegador web Herramienta: OWASP Threat Dragon

Objetivo

Crear un modelo de amenazas profesional utilizando herramientas estándar de la industria, generando documentación lista para revisión técnica.

Instalación

Opción A - Docker (recomendada):

docker run -p 3000:3000 owasp/threat-dragon:stable
# Accede a http://localhost:3000

Opción B - Aplicación web: Visita https://www.threatdragon.com/ (requiere cuenta GitHub)

Parte 1: Crear el diagrama de flujo de datos (40 min)

Modela el siguiente sistema: Plataforma de préstamos universitarios

Descripción del sistema:

  • Estudiantes solicitan préstamos a través de una app móvil
  • El backend valida identidad con una API gubernamental
  • Un motor de decisión evalúa riesgo crediticio
  • Los administradores aprueban/rechazan solicitudes desde un portal web
  • Los fondos se desembolsan a través de integración bancaria

Componentes a modelar:

  1. Procesos:

    • App móvil estudiante
    • API Gateway
    • Servicio de autenticación
    • Motor de decisión crediticia
    • Portal administrativo
    • Servicio de desembolso
  2. Almacenes de datos:

    • Base de datos de solicitudes
    • Base de datos de usuarios
    • Logs de auditoría
  3. Entidades externas:

    • Estudiante (usuario)
    • Administrador
    • API gubernamental (validación de identidad)
    • Sistema bancario (desembolsos)
  4. Flujos de datos:

    • Conecta los componentes mostrando qué datos fluyen entre ellos
    • Marca los límites de confianza (trust boundaries)

Guía en Threat Dragon:

1. Crear nuevo modelo → "Préstamos Universitarios"
2. Agregar diagrama → "Diagrama Principal"
3. Arrastrar componentes desde la paleta:
   - Process (círculos) para servicios
   - Store (cilindros) para bases de datos
   - Actor (rectángulos) para entidades externas
4. Conectar con flechas de flujo de datos
5. Agregar Trust Boundary (líneas punteadas) para separar:
   - Red pública (app, usuarios)
   - DMZ (API Gateway)
   - Red interna (servicios, bases de datos)
   - Sistemas externos (banco, gobierno)

Parte 2: Identificar amenazas STRIDE (30 min)

Para cada componente principal, usa Threat Dragon para agregar amenazas:

API Gateway:

STRIDEAmenaza específicaSeveridad
SpoofingSolicitudes desde app falsificadaAlta
TamperingModificación de montos en tránsitoCrítica
DoSSobrecarga durante período de matrículaAlta

Motor de decisión crediticia:

STRIDEAmenaza específicaSeveridad
TamperingManipulación de reglas de aprobaciónCrítica
Information DisclosureFiltración de scores crediticiosAlta
Elevation of PrivilegeAprobación sin autorizaciónCrítica

Base de datos de solicitudes:

STRIDEAmenaza específicaSeveridad
Information DisclosureExposición de datos financierosCrítica
TamperingModificación de estados de solicitudCrítica
RepudiationBorrado de logs de aprobacionesAlta

Ejercicio: Completa el análisis STRIDE para los componentes restantes.

Parte 3: Proponer mitigaciones (30 min)

En Threat Dragon, agrega mitigaciones para cada amenaza identificada:

Ejemplo de documentación en la herramienta:

Amenaza: Modificación de montos en tránsito
Categoría: Tampering
Componente: API Gateway → Motor de decisión
Severidad: Crítica

Mitigación propuesta:
1. TLS 1.3 con certificate pinning
2. Firma digital (HMAC-SHA256) de cada solicitud
3. Validación de montos contra límites del programa
4. Verificación cruzada con solicitud original

Estado: Mitigado
Riesgo residual: Bajo

Parte 4: Generar reporte (20 min)

Threat Dragon permite exportar el modelo completo:

  1. Exportar diagrama: File → Export → PNG/SVG
  2. Exportar modelo: File → Export → JSON
  3. Generar reporte: Report → Generate

Estructura del reporte esperado:

# Modelo de Amenazas: Plataforma de Préstamos Universitarios
 
## 1. Resumen Ejecutivo
- Sistema analizado
- Fecha del análisis
- Equipo de análisis
- Principales hallazgos
 
## 2. Diagrama de Flujo de Datos
[Insertar imagen exportada]
 
## 3. Límites de Confianza
- Trust Boundary 1: Red Pública / DMZ
- Trust Boundary 2: DMZ / Red Interna
- Trust Boundary 3: Red Interna / Sistemas Externos
 
## 4. Inventario de Amenazas
| ID | Componente | Categoría | Amenaza | Severidad | Estado |
|----|------------|-----------|---------|-----------|--------|
| T-001 | API Gateway | Tampering | Modificación de montos | Crítica | Mitigado |
| T-002 | ... | ... | ... | ... | ... |
 
## 5. Mitigaciones Propuestas
[Tabla de mitigaciones con costo y responsable]
 
## 6. Riesgos Residuales
[Riesgos aceptados con justificación]

Entregable

Entrega los siguientes archivos:

  1. Modelo Threat Dragon (.json): El archivo del proyecto exportado
  2. Diagrama DFD (.png): Imagen del diagrama de flujo de datos
  3. Reporte de amenazas (.md o .pdf): Documento con:
    • Mínimo 10 amenazas identificadas
    • Mínimo 8 mitigaciones propuestas
    • Análisis de riesgos residuales
    • Recomendaciones priorizadas

Criterios de evaluación

CriterioPuntos
DFD completo y correcto25
Límites de confianza bien definidos15
Amenazas STRIDE identificadas (cobertura)25
Mitigaciones técnicamente apropiadas25
Calidad de documentación10

Reflexión

Después de completar el laboratorio:

  • ¿Qué amenazas te sorprendió descubrir al mapear el sistema?
  • ¿Cómo priorizarías las mitigaciones si tuvieras presupuesto limitado?
  • ¿Qué diferencia hay entre este análisis sistemático y simplemente “pensar en seguridad”?

Navegación:Anterior | Inicio | Siguiente: Evaluación