Ir al contenido
angel.library

Modelo de amenazas para aplicaciones web

Un modelo de amenazas no es una lista genérica. Dibuja navegador, API, base de datos, storage, proveedores, CI/CD y administradores. Marca límites de confianza y qué datos cruzan cada uno.

  1. ¿Qué activo protegemos: cuentas, dinero, PII, disponibilidad, código o reputación?
  2. ¿Quién puede iniciar el flujo y qué controla?
  3. ¿Dónde se autentica y dónde se autoriza?
  4. ¿Qué input llega a intérpretes, templates, SQL, shell o URLs remotas?
  5. ¿Qué ocurre si repiten, alteran, retrasan o multiplican la operación?
  6. ¿Cómo detectamos abuso y cómo recuperamos el servicio?

Un atacante puede robar una sesión, forzar una request desde otro sitio, cambiar el id del usuario o abusar del endpoint miles de veces. Controles: reautenticación, autorización sobre el usuario de sesión, protección CSRF, notificación al correo anterior, rate limit y log de auditoría.

Evalúa probabilidad, impacto y exposición. Un panel interno no es automáticamente seguro; una credencial filtrada puede volverlo público. Prioriza acceso roto, secretos, operaciones irreversibles, dependencias de supply chain y rutas que consumen recursos caros.

Revisa el modelo cuando cambien autenticación, proveedores, datos sensibles o arquitectura. Cada incidente y bug de autorización debe alimentar el documento.

Empieza con una tabla sencilla: activo, propietario, impacto, ubicación y controles actuales. Después dibuja cada salto entre navegador, CDN, API, workers, base de datos, almacenamiento, proveedor de pagos y panel administrativo. Un límite de confianza existe cuando cambia la identidad, el nivel de privilegio o la capacidad de controlar el dato.

FlujoActivoRiesgo si se alteraControl mínimo
Crear una ordendinero e inventariocobro duplicado o stock negativoautorización, idempotencia y transacción
Subir avatararchivo y disponibilidadmalware o consumo de almacenamientolímites, tipo real y storage no ejecutable
Webhook de pagoestado de la ordenmarcar como pagada una orden falsafirma, replay protection y auditoría

Cada riesgo debe terminar en un control verificable y una prueba. “Proteger el endpoint” es demasiado abstracto; “rechazar una orden si el usuario no es propietario, repetir el webhook no cambia el total y registrar el evento” sí puede comprobarse. Define también la señal que mostraría un abuso y quién debe responder.

Antes de fusionar una funcionalidad, pregunta qué datos nuevos entran, qué permisos cambian, qué operaciones cuestan dinero o CPU, qué tercero se incorpora y cómo se revoca el acceso. Para cambios pequeños basta una nota en el pull request; para pagos, datos sensibles o nuevos límites de confianza, realiza una sesión breve con desarrollo, producto y operaciones.