Previous slide Next slide Toggle fullscreen Open presenter view
Threat Modeling - Modelo de amenazas
Modelado de Amenazas - Threat Modeling
Representación estructurada de toda la información que afecta a la seguridad de una aplicación
Proceso de capturar, organizar y analizar toda esta información
Lista ordenada por prioridad de mejoras, requisitos, diseño e implementación de la seguridad de la misma
Buscar puntos ciegos y plantearse las asunciones que hemos hecho del sistema
El modelado de amenazas es el brainstorming de un atacante
¿Qué puede salir mal y qué hacemos para evitarlo?
Modelado de amenazas en una empresa
Threat modeling: Servicio. Ingenieros y managers. 3 meses vista.
Risk management: Estrategia. Directores y VP. 1 año vista.
Wardley Mapping : Sistema. VP y niveles "C". 3 años vista.
Ventajas del Threat Modeling
Documentación del sistema
Identificación temprana de las amenazas
Priorización de los riesgos más importantes
Prevención de vulnerabilidades
Terminología
Threat / Amenaza : cualquier circunstancia con el potencial de impactar una organización
Vulnerability / Vulnerabilidad : debilidad que un agente puede usar durante un ataque
A tener en cuenta: facilidad de descubrimiento, explotación, publicidad, ¿es detectable?
Asset / Recurso : qué es lo que queremos proteger. Datos, prestigio...
Agent / Actor : individuo o grupo capaz de llevar a cabo una amenaza.
A tener en cuenta: conocimientos, motivos, oportunidad y recursos
https://www.g2.com/articles/threat-modeling
Impacto / Impact : daño potencial que puede producir una amenaza
A tener en cuenta: confidencialidad, integridad, availability , accountability , existencia de logs...
Tipos: económico, de imagen, non-compliance , privacidad
Probabilidad de ocurrencia / Likelihood : probabilidad de que una amenaza se realice
Controles : seguridad instalada para impedir, detectar y minimizar amenazas
Prevenciones : controles que impiden totalmente un ataque
Mitigaciones : controles que reducen la probabilidad de que un ataque tenga impacto
Trazabilidad : controles que permiten descubrir qué ha pasado: logs
https://cheatsheetseries.owasp.org/cheatsheets/Threat_Modeling_Cheat_Sheet.html
Tipos de errores
Término
Definición
Detección
Defecto/Bugs
Imperfección en el desarrollo del software. Un bug es como informalmente nos referimos a los defectos
Durante el desarrollo y el testeo
Errores
Defectos introducidos por los humanos al escribir el código
Durante el desarrollo, "fácil"
Fallos
El sistema no se comporta como se espera debido a algún defecto
Durante el testeo, "difícil"
https://www.baeldung.com/cs/software-testing-defect-bug-error-and-failure
¿En qué estamos trabajando?
Describe el sistema
Paso 1: describe el sistema
Describe el sistema:
Con casos de uso. Pueden ser varios, tipo historia
Con diagramas de flujo de datos
Con diagramas de subsistemas y su relación entre ellos
Identifica:
puntos de entrada para ver dónde un potencial atacante podría interactuar con la aplicación
activos importantes de tu aplicación
derechos de acceso que necesitará cada actor
Objetivo: descompón tu sistema, sus flujos de datos, los actores, los activos importantes, y cómo se relacionan entre sí
Nombre de aplicación : informes periciales 1.0
Descripción : editor de texto para edición de informes periciales que permita edición simultánea de varios analistas, y vista de "solo lectura" para abogados
Usuarios :
Analistas, que trabajan en la oficina
Revisores externos que trabajan en remoto (home office )
Clientes finales, con acceso de solo lectura
Dependencias impuestas : SSO, VPN, código libre, control de tiempos
Preguntas para del modelado
¿Cuáles son los puntos de entrada?
¿Cuáles son las salidas del sistema?
¿En qué podría estar interesado/a un/a atacante?
¿Qué elementos son importantes?
Dibuja todos los diagramas que veas necesario, nunca sobrarán
Ejemplo: Brainstorming
En blanco para poder dibujar
Ejemplo: Brainstorming (sistema)
Descripción del sistema completo
Ejemplo: Brainstorming (detalle)
Detalle del proceso de edición por un usuario
Flujos de datos
Diagrama funcional
Diagrama de estados
Casos de uso
¿Qué le preocupa al usuario?
BIEN : Para añadir seguridad, implementaremos una pantalla de login
MEJOR : El usuario no quiere que otra persona acceda a sus fotos personales
En vez de añadir características a tu producto, identifica qué quiere realmente el usuario, sus preocupaciones, y dale soluciones
Como analista, quiero poder escribir un informe junto con otros analistas para poder acabar el menor tiempo posible, pero sin que repitamos trabajo
Como administrativo, quiero poder facturar el trabajo al cliente sabiendo cuántas horas hemos dedicado, sin que ningún analista haya inflado las horas
Como revisor, quiero poder decidir cuándo un informe está acabado, sin que nadie más pueda firmar digitalmente el documento
Como revisor, quiero poder acceder al sistema desde mi casa, sin que nadie pueda hacerse pasar por mí
Como cliente, quiero poder acceder a los informes, en confidencialidad
Como auditor, quiero saber a qué evidencias han accedido los analistas, sino que ningún actor pueda eliminar trazas de acceso
¿Qué puede salir mal?
Determina las amenazas
Vulnerabilidad
Una ocurrencia de una debilidad en el sofware que puede utilizar un atacante para acceder o modificar datos, interrumpir el servicio o realizar acciones incorrectas.
Ejemplos en la base de datos CVE, Common Vulnerabilities and Exposures
Metodologías de identificación de amenazas
STRIDE
Amenaza
Servicio de seguridad
Ejemplo
Spoofing
Autenticación
Credenciales robadas al revisor
Tampering
Integridad
Certificados robados, firma digital de los informes no fiable
Repudiation
No repudio, logs, registros
Un analista alega haber trabajado en un proyecto un número desproporcionado de horas
Information Disclosure
Confidencialidad
Los clientes pueden acceder a los informes de otros clientes
Denial of Service
Availability
La aplicación deja de funcionar si más de dos analistas conectados a la vez a un informe
Elevation of Priviledge
Authorization
Un analista puede firmar digitalmente un informe
STRIDE Threat Modeling for Beginners - In 20 Minutes NetSec explained, 23 Oct 2023
The STRIDE threat model with examples
The Ultimate List of STRIDE Threat Examples
STRIDE - Spoofing
El atacante pretende ser algo o alguien que no es
¿Están ambos extremos de las comunicaciones autenticados?
Envío de emails desde cuentas que parecen ser reales
Cambio de roles
Creación de ficheros
ARP, IP, DNS...
STRIDE - Tampering
El atacante cambia datos sin autorización
¿Cómo puedo detectar si un usuariocambia los datos en tránsito o en reposo (at-rest)?
Modificación de la memoria
Modificación de registros de una base de datos que pertenecen a otro usuario
Actuar cómo proxy y modificar el tráfico (Man in the middle)
STRIDE - Repudiation
El atacante asegura no haber hecho algo
¿Están las acciones registradas y asociadas a su autor?
Decir no haber borrado registros de una base de datos
Decir no haber recibido una notificación
Decir no haber usado la cuenta de otro
El atacante ve datos que no debería
¿Cómo puedo aseurar que los usuarios sólo puedan ver los datos a los que están autorizados?
Acceso a registros de otro usuario
Acceso al tráfico de red
Acceso a ciertos logs
STRIDE – Denial of Service
El atacante tira el sistema abajo o lo pone en una situación de malfuncionamiento
¿Hay áreas en el sistema limitada por recursos o sus dependencias?
Inundando el tráfico de red
Lanzando alguna petición que consuma la CPU o la memoria
Llenando el sistema de ficheros con datos (logs, subiendo ficheros grandes, etc)
STRIDE – Elevation of Privilege
El atacante gana más acceso al sistema del que debería
¿Cómo puedo asegurar que un usuario no puede hacer o ver cosas que no debería?
Extracción de datos explotando una vulnerabilidad (memoria, base de datos, etc)
Ganando privilegios de administrador
OWASP ASVS
OWASP Application Security Verification Standard (ASVS) es:
Base para des controles técnicos de seguridad de las aplicaciones web
Lista de requisitos para un desarrollo seguro de aplicaciones web
Usos:
Como métrica: grado de confianza que se puede depositar en sus aplicaciones web
Como guía: qué incorporar a los controles de seguridad para satisfacer los requisitos
Como estándar: requisitos de verificación de seguridad de las aplicaciones en los contratos
Brainstorming: Mullvad, seguridad por diseño
Spoofing
Tampering
Repudiation
Information Disclosure
Denial of service
Elevation of privilege
https://mullvad.net/en/vpn
¿Qué podemos hacer para arreglarlo?
Contramedidas y mitigaciones
Análisis de riesgos
Se puede hacer un análisis desde el punto de vista de...
Amenazas: identificamos amenazas/actores
Impacto: identificamos nuestros recursos más valiosos
Vulnerabilidades: identificamos vulnerabilidades
https://csrc.nist.gov/publications/detail/sp/800-30/rev-1/final
Objetivo: priorizar los defectos encontrados durante las fases anteriores
Risk Rating Methodologies
OWASP: Risk Rating Methodology
Paso 1: Identificación del riesgo
Paso 2: Factores para estimar la Probabilidad: agentes y vulnerabilidades
Paso 3: Factores para estimar la Probabilidad: técnicos y negocio
Paso 4: Determinar la severidad del riesgo
Paso 5: ¿Qué hacemos?
Paso 6: Mejora el modelo de riesgos
https://owasp.org/www-community/OWASP_Risk_Rating_Methodology
Paso 1: Identificación del riesgo
Los que han aparecido durante las fases anteriores
Kill Chain
Matriz de Mitre
Experiencia
Paso 4: Determinar la severidad del riesgo
Probabilidad de que un ataque se lleve a cabo. Tiene en cuenta habilidad necesaria, motivo, oportunidad, facilidad de explotación...
Impacto . Cómo de malo sería que un ataque tuviese éxito. Confidencialidad, impacto en negocio...
El riesgo se calcula para cada amenaza individual, no por categoría
Metodología de OWASP y Calculadora
Riesgo = Probabilidad * Impacto
Fíjate en cuántos factores influyen en la evaluación de riesgo: facilidad de encontrar la vulnerabilidad, conocimientos necesarios, impacto que puede tener...
Paso 5: ¿Qué hacemos con el riesgo?
Evitar el riesgo
Mitigar el riesgo
Aceptar el riesgo
Transferir el riesgo
Ignorar el riesgo
Evitar el riesgo : dejar de hacer algo. Ejemplos:
No permitas que se suban fotografías a un perfil
Utiliza redes cableadas
No utilizar librerías externas
Mitigar el riesgo . Ejemplos:
Usar TLS para cifrar las comunicaciones
Reducir cross-site-scripting implementando políticas
Cifrar dispositivos con Bitlocker
Uso de cortafuegos
Usar solo librerías auditadas
Aceptar el riesgo : probabilidad de impacto bajo. Siempre existe un riesgo resedual incluso después de evitar/mitigar riesgos. Ejemplos:
Secretos gestionados por al menos tres personas
Poner un tamaño máximo de XML para parsear
trusted admins that go rogue?
Transferir el riesgo : que sean otros
Uso de MFA: el riesgo se transfiere al usuario
Uso de librerías comerciales
Externalizar la seguridad
Ignorar el riesgo : ¡nunca lo hagas!
Los riesgos no pueden eliminarse totalmente, pero pueden llevarse hasta niveles aceptables
¿Hemos hecho un buen trabajo?
Evalúa tu trabajo
Metodología
Revisiones constantes
Uso de checklists
Auditorías internas / externas
Pentesting
Trátalo como código: lleva control de versiones
No te centres en problemas improbables
No te centres en problemas que se van a resolver sin duda
Descripción del sistema
Componente/s afectados
Amenazas
Priorizaciones: evaluación de riesgo
Mitigaciones propuestas
Con todos los diagramas que hemos estado haciendo
Reportar amenazas existentes
Ejecutivo: decidir sobre priorización de tareas
Documentar el trabajo hecho
Rápido de leer y entender:
Usa tablas
Usa nomenclatura estándar
Entender dónde estamos y hacia dónde vamos
El informe debería tratarse como documento confidencial
Threagile: https://github.com/Threagile/threagile
docker run --rm -it --user $(id -u):$(id -g) \\
-v "$(pwd) " :/app/work threagile/threagile -create-example-model -output /app/work
docker run --rm -it --user $(id -u):$(id -g) \\
-v $(pwd ):/app/work threagile/threagile -verbose \\
-model /app/work/threagile-example-model.yaml -output /app/work
Describe el sistema en YAML
Marketing CMS:
id: marketing-cms
description: CMS for the marketing content
type: process
usage: business
used_as_client_by_human: false
out_of_scope: false
justification_out_of_scope:
size: application
technology: cms
tags:
- linux
internet: false
machine: container
encryption: none
owner: Company ABC
confidentiality: internal
integrity: important
availability: important
justification_cia_rating: >
The correct configuration and reachability of the web server is mandatory for all customer usages of the portal.
multi_tenant: false
Ejemplo completo , - Diagrama , - Informe
Ejemplos de antiguos alumnos
Sistema de Incident Response en cloud
Creación de Pólizas Individuales de Salud
Sistema de facturación para empresa
Aplicación para control financiero
Ejercicio
Escoge una sistema cualquiera de tu interés: una aplicación web con interfaz móvil, redes de drones, sistema médico como el que hemos visto en la sesión...
Dibuja un modelo de la aplicación, identificando las zonas de confianza y los flujos de datos
Haz un análisis STRIDE de las amenazas que identifiques
Plantea mitigaciones para cada amenaza STRIDE que identifiques
Prioriza los riesgos encontrados
El objetivo no es encontrar todos los problemas de seguridad de una aplicación, sinó aplicar los pasos modelado, análisis, mitigaciones, priorización.
La extensión esperada del documento es unas 5 páginas
Entrega en PDF
Las amenazas existen por sí solas, pero tiene que haber un agente capaz de explotar una vulnerabilidad
¿Existe una vulnerabilidad pero no es accesible desde el exterior? Entonces quizá no tiene prioridad
¿Exista una vulnerabilidad menor y conocida accesible desde el exterior? máxima prioridad
Es muy recomendable que leas los dos primeros enlaces: proceso de modelado de amenazas
Las preguntas es la terminología que se usa en el treat modeling manifesto, mientras que las explicaciones son las fases definidas en OWASP. Observa que en realidad son las mismas fases
Ideas:
- "comuicaciones seguras". Ya, pero ¿cómo lo implementaremos?
AMPS:
- Actores:
- Pacientes
- Personal médico: decisiones
- Personal enfermería: acceso a medicamentos
- Personal de investigación: datos anonimizados
- Personal administrador del sistema
- Trust boundaries
- PAN entre teléfono móvil y sensores
- Almacenamiento de información en el móvil
- Servidor de autenticación
- Equipo del hospital
- Equipos externos
- Problemas
- Gestión de usuarios y autorizaciones para cada uno de ellos
- ¿Cómo y quién da de alta a un paciente? ¿Y la baja?
- Gestión de historiales médicos intra y extra hospitales
- Gestión de medidas ¿alarma cuando el usaurio no envía medidas?
- Trazabilidad en el acceso a los documentos
CodiMD:
- Actores:
- Trabajadores
- Administradores de sistemas
- Clientes
- Gestión de certificados
- Gestión de aplicaciones, vulnerabilidades y desarrollos internos
- Gestión de errores de software: ¿cuántos usuarios concurrentes permite el sistema? ¿recuperación del sistema?
- Control de versiones de documentos
- Plan de copias de seguridad. ¿Quién las gestiona, quién tiene las claves?
- Gestión de usuarios:
- Contraseñas, cómo se guardan en la base de datos, actualización, pérdida...
- Doble factor de autenticación
- Pérdida de equipos
- Baja de usuarios
- Acciones de los suuarios
- Gestión de trust boundaries
- Gestión del endpoint de los trabajadores: ¿EDR?
- VPN
- Conexión entre apliación y base de datos
- Conexión entre base de datos y sistema documental
En esta sesión nos vamos a centrar en STRIDE, pero hay más metodologías! No hace falta centrarse solo en una, puedes usar varias a la vez
## Magerit
<https://administracionelectronica.gob.es/pae_Home/pae_Documentacion/pae_Metodolog/pae_Magerit.html>
![center](images/threatmod/magerit.png)
## Elevation of Privilege
![w:10em](images/threatmod/eop1.png) ![w:10em](images/threatmod/eop2.png)
Elevation of Privilege: https://www.microsoft.com/en-gb/download/confirmation.aspx?id=20303
## Cornucopia
![w:25em center](images/threatmod/cornucopia.png)
OWASP Cornucopia: https://owasp.org/www-project-cornucopia/
Ejemplos:
- Spoofing: ¿se puede hacer phishing de esta página?
- Repudiation: "yo no he pedido un cambio de contraseña"
- Information disclosure: identificar que alguien tiene cuenta en una página
- Denial of service: pedir cambio de contraseña de otra persona sin su consentimiento "porque se ha olvidad la contraseña"
- Elevación de privilegio:
Ejemplos:
- Spoofing: ¿se puede hacer phishing de esta página?
- Repudiation: "yo no he pedido un cambio de contraseña"
- Information disclosure: identificar que alguien tiene cuenta en una página
- Denial of service: pedir cambio de contraseña de otra persona sin su consentimiento "porque se ha olvidad la contraseña"
- Elevación de privilegio:
Un ejemplo poco usual
- Spoofing: VPN, usuarios identificados solo con un número
- Repudiation: no guardan información de usuario, ni siquiera facturación
- Elevation of privilege: no hay tipos de usuarios
- Los usuarios solo se identifican con un número
- No se guardan datos de pagos:
- Prepagos: se paga antes del servicio
- Sistemas de pago anónimos: bitcoin o incluso moneda real por correo
- No guardan logs (aunque esto lo dicen todos...)
Aunque hay otras metodologías, en esta clase nos vamos a centrar en el análisis de riesgos desde el punto de vista de amenanzas
Fíjate: la probabilidad incluye que exista una agente y una vulnerabilidad explotable
- ¿No hay agente? No hay riesgo
- ¿La vulnerabilidad no es explotable desde el experior? El riesgo es menor
- ¿No tiene impacto? No hay riesgo
El objetivo final de un análisis de riesgos es decidir qué priorizar, qué tenemos que arreglar primero: lo que más riesgo tenga. ¡Eso no significa necesariamente que sea lo que tenga más impacto!
Por ejemplo: el impacto de que se haya un terremoto en la sede de la compañía es muy alto, pero... ¿cuál es el riesgo? Alto en Perú, muy pequeño en España.
---
Inspiración: MITRE y la Kill Chain
![](images/threatmod/mitre-killchain.png)
---
La Kill Chain unificada
![center](https://upload.wikimedia.org/wikipedia/commons/c/c2/The_Unified_Kill_Chain.png)
Aviso importante: los ejemplos de esta slide no son recomendaciones, son ejemplos de decisiones que puedes tomar o no para tu aplicación. Fíjate que algunos son contradictorios entre sí
Alumno: Jorge Barreto Olivos
Alumno: Aldo Armesto Marcús
Alumno: JOHANN LEONARDO SOLANO TORRADO