ATALAIA
  1. Inicio
  2. Servicios
  3. Threat Modeling
03Estación 03 · Diseño

Threat Modeling

Una hora con las personas que mejor conocen la funcionalidad: producto, el dev lead y seguridad. Salimos con las amenazas que importan y quién es responsable de cada corrección.

En menos de una hora

Elige un paso o déjalo correr. Cada línea es lo que alguien dice de verdad en la sala.

Paso 1Elige la funcionalidad

Una funcionalidad o servicio que importe este trimestre, no todo el parque.

PRODUCTOEste trimestre toca la redención con partners: los usuarios gastan puntos en tiendas de partners.

ATALAIAEntonces es ese. Se mueve dinero y hay un partner de por medio. Solo ese flujo, hoy.

DEV LEADToca el ledger, la API del partner y la pantalla de redeem.

Sale de la salaFuncionalidad: canjear puntos en tiendas asociadas

Paso 2Dibújalo en equipo

Flujos de datos y límites de confianza en una pizarra, con producto, devs y cyber en la sala.

DEV LEADLa app llama a redeem, debitamos el ledger y luego le pedimos un vale al partner.

ATALAIADibuja una línea discontinua donde empieza la red del partner. Eso es un límite de confianza.

DESARROLLADORY el partner nos llama de vuelta para confirmar. Ese webhook es público.

Sale de la salaTablero: 6 flujos, 2 trust boundaries

Paso 3Encuentra las amenazas

Prompts al estilo STRIDE, historias de atacante y las preguntas que nadie ha hecho todavía.

ATALAIA¿Y si alguien envía redeem dos veces, en el mismo instante?

DESARROLLADORDos débitos compiten. Podrían gastar los mismos puntos dos veces.

CHAMPIONY un webhook falso podría confirmar vales que nadie ha pagado.

PRODUCTOEl doble gasto es lo que el negocio no puede soportar. Ponlo el primero.

Sale de la sala4 amenazas encontradas, 2 de riesgo alto

Paso 4Conviértelos en tickets

Cada amenaza sale como un ticket, un responsable y un test.

DEV LEADClave de idempotencia en redeem. Ese ticket es mío, este sprint.

ATALAIAWebhooks firmados con la clave del partner. QA recibe la race condition como test.

PRODUCTOY el modelo va en el repo. El siguiente lo hacemos sin vosotros.

Sale de la sala4 tickets, 3 tests de abuse case

  • ATALAIA
  • PRODUCTO
  • DEV LEAD
  • DESARROLLADOR
  • CHAMPION

El consejo, tras una hora

Esto es lo que dibuja la sala: cajas, flechas, líneas discontinuas donde cambia la confianza y un pin en cada amenaza.

DISPOSITIVO DEL USUARIOBACKEND DE RECOMPENSASRED DE PARTNERSredeem(offer)debitar puntosemitir cupónconfirmarmarcar como usadoApp de recompensasmobileAPI gatewayauth, rate limitServicio de canjeredeem()Webhook/partner/confirmLibro de puntosdatastorePartner APIexterno1234
  1. 1
    Manipulación · doble gasto

    Dos canjes compiten entre la comprobación del saldo y el débito. Ticket: clave de idempotencia y débito condicional.

  2. 2
    Suplantación · confirmación falsa

    Cualquiera puede llamar al webhook público. Ticket: callbacks firmados, comprobados contra la clave del partner.

  3. 3
    Divulgación · clave de partner

    La API key del partner está en un fichero de configuración. Ticket: moverla al almacén de secretos y rotarla.

  4. 4
    Abuso · canjes masivos

    Los bots canjean desde muchas cuentas. Ticket: rate limit por usuario y un test de abuso en QA.

Antes y después

Antes

Los threat models escritos solo por seguridad describen un sistema que nadie reconoce. Escritos demasiado tarde, describen un sistema que ya salió.

  • Las revisiones de seguridad llegan cuando el código ya está escrito
  • Nadie sabe decir qué funcionalidades gestionan dinero, identidad o datos personales
  • Los hallazgos llegan en un PDF y ahí se quedan
Después
  • Un threat model que tu equipo escribió con nosotros, en tu propio repositorio
  • Amenazas ordenadas, cada una ligada a un ticket del backlog y a un responsable
  • Casos de abuso que tu equipo de QA puede convertir en tests
  • Un formato de una hora que tu equipo puede ejecutar sin nosotros

Formato típico: Una sesión por funcionalidad, o una serie corta de sesiones para sembrar el hábito.

Habladlo

Una llamada de 30 minutos. Sin diapositivas, sin lista de precios y con un siguiente paso en cualquier caso.