# Modelado de amenazas

> Sentarse antes de construir a preguntar quién podría atacar esto, cómo y qué hacer al respecto.

- Nivel: Avanzado
- Temas: Seguridad, Software
- URL: https://tidbit.legios.com.ar/es/threat-modeling/
- En inglés: [Threat modeling](https://tidbit.legios.com.ar/threat-modeling/)

El **modelado de amenazas** (threat modeling) es una forma ordenada de pensar como un atacante mientras el sistema todavía está en el pizarrón. El equipo dibuja cómo funciona el sistema, por dónde entran y salen los datos y dónde una parte deja de confiar en otra. Después se hace cuatro preguntas simples, que popularizó el ingeniero de seguridad Adam Shostack: ¿qué estamos construyendo?, ¿qué puede salir mal?, ¿qué vamos a hacer al respecto? y ¿lo hicimos lo bastante bien?

El dibujo importa. Las flechas que cruzan un **límite de confianza**, como los pedidos que llegan desde internet a tu servidor o los que salen de tu servidor hacia la API de un tercero, son donde pasan la mayoría de los ataques. El conjunto de todos esos puntos de entrada es la **superficie de ataque**. Para no olvidarse categorías enteras, muchos equipos pasan cada pieza por **STRIDE**, una lista creada en Microsoft: Spoofing (hacerse pasar por otro), Tampering (alterar datos), Repudiation (negar que hiciste algo), Information disclosure (filtraciones), Denial of service (dejar el servicio fuera de juego) y Elevation of privilege (conseguir más permisos de los que te tocan).

Cada amenaza encontrada recibe una decisión: arreglarla, achicarla, aceptarla a conciencia o pasársela a otro (por ejemplo, a un proveedor de pagos). El resultado es un documento corto que vive junto al diseño y se revisa cuando el sistema cambia. Es barato comparado con lo que evita: un chequeo de permisos que falta, detectado en una reunión de diseño, cuesta una hora; la misma falla descubierta en producción después de una filtración le puede costar los clientes a una empresa. También sirve fuera del software: periodistas y activistas arman su propio modelo de amenazas para decidir qué protecciones valen la pena en su caso.

## Una analogía

Diseñar una casa con los ojos de un ladrón antes de construirla: qué ventanas dan a la calle, hasta dónde llega una escalera, qué puerta necesita la cerradura buena. Mucho más barato que mover una ventana con las paredes ya levantadas.

## Para quedarse

- Cuatro preguntas: qué construimos, qué puede salir mal, qué vamos a hacer, ¿alcanzó?
- Dibujá los flujos de datos y los límites de confianza; los ataques se juntan donde cambia la confianza.
- STRIDE es una lista de seis tipos de amenaza para no saltearse ninguna categoría.
- Se hace en el diseño y se repasa cuando el sistema cambia, no una vez y a otra cosa.

## Para seguir leyendo

- [Threat Modeling Manifesto (en inglés)](https://www.threatmodelingmanifesto.org/)
- [Threat Modeling Cheat Sheet (OWASP, en inglés)](https://cheatsheetseries.owasp.org/cheatsheets/Threat_Modeling_Cheat_Sheet.html)
- [Threat model en Wikipedia (en inglés)](https://en.wikipedia.org/wiki/Threat_model)

## Términos relacionados

- [Internet](https://tidbit.legios.com.ar/es/internet/): Una red mundial de redes que conecta cualquier aparato con cualquier otro.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [API](https://tidbit.legios.com.ar/es/api/): El menú de cosas que un programa le deja pedir a otro programa.
- [Microsoft](https://tidbit.legios.com.ar/es/microsoft/): La empresa de Windows y Office, que hoy es igual de importante como nube con Azure.
