ATALAIA
  1. Início
  2. Serviços
  3. Threat Modeling
03Estação 03 · Design

Threat Modeling

Uma hora com quem conhece melhor a funcionalidade: produto, o dev lead e segurança. Saímos com as ameaças que importam e o responsável por cada correção.

Dentro da hora

Escolha um passo, ou deixe correr. Cada fala é o que alguém na sala diz de facto.

Passo 1Escolher a funcionalidade

Uma funcionalidade ou serviço que importa neste trimestre, não o parque inteiro.

PRODUTOEste trimestre é a troca em parceiros: os utilizadores gastam pontos em lojas parceiras.

ATALAIAEntão é essa. Há dinheiro a circular e um parceiro envolvido. Só esse fluxo, hoje.

DEV LEADToca no ledger, na API do parceiro e no ecrã de troca.

Sai da salaFuncionalidade: trocar pontos em lojas parceiras

Passo 2Desenhar em conjunto

Fluxos de dados e fronteiras de confiança num só quadro, com produto, devs e cyber na sala.

DEV LEADA app chama o redeem, debitamos o ledger e depois pedimos um voucher ao parceiro.

ATALAIADesenhem uma linha tracejada onde começa a rede do parceiro. É uma fronteira de confiança.

DEVELOPERE o parceiro chama-nos de volta para confirmar. Esse webhook é público.

Sai da salaQuadro: 6 fluxos, 2 fronteiras de confiança

Passo 3Encontrar as ameaças

Perguntas ao estilo STRIDE, histórias de atacantes e as perguntas que ninguém fez ainda.

ATALAIAE se alguém enviar o redeem duas vezes, no mesmo instante?

DEVELOPERDois débitos em corrida. Podiam gastar os mesmos pontos duas vezes.

CHAMPIONE um webhook falso podia confirmar vouchers que ninguém pagou.

PRODUTOO gasto duplo é o que o negócio não pode aceitar. Fica em primeiro.

Sai da sala4 ameaças encontradas, 2 classificadas como altas

Passo 4Transformá-las em tickets

Cada ameaça sai como um ticket, um responsável e um teste.

DEV LEADChave de idempotência no redeem. Esse ticket é meu, neste sprint.

ATALAIAWebhooks assinados com a chave do parceiro. A QA fica com a corrida como teste.

PRODUTOE o modelo vai para o repo. Fazemos o próximo sem vocês.

Sai da sala4 tickets, 3 testes de abuso

  • ATALAIA
  • PRODUTO
  • DEV LEAD
  • PROGRAMADOR
  • CHAMPION

O quadro, ao fim de uma hora

É isto que a sala desenha: caixas, setas, linhas tracejadas onde a confiança muda e um pin em cada ameaça.

DISPOSITIVO DO UTILIZADORBACKEND DE RECOMPENSASREDE DO PARCEIROredeem(offer)debitar pontosemitir voucherconfirmarmarcar como usadoApp de recompensasmobileAPI gatewayauth, rate limitServiço de trocaredeem()Webhook/partner/confirmLedger de pontosdatastoreAPI do parceiroexterno1234
  1. 1
    Tampering · gasto duplo

    Duas trocas correm entre a verificação do saldo e o débito. Ticket: chave de idempotência e um débito condicional.

  2. 2
    Spoofing · confirmação falsa

    Qualquer pessoa pode chamar o webhook público. Ticket: callbacks assinados, validados com a chave do parceiro.

  3. 3
    Disclosure · chave do parceiro

    A chave da API do parceiro está num ficheiro de configuração. Ticket: movê-la para o cofre de segredos e rodá-la.

  4. 4
    Abuso · trocas em massa

    Bots trocam pontos a partir de muitas contas. Ticket: rate limit por utilizador e um teste de abuso na QA.

Antes e depois

Antes

Threat models escritos só pela segurança descrevem um sistema que ninguém reconhece. Escritos tarde demais, descrevem um sistema que já foi lançado.

  • As revisões de segurança acontecem depois de o código estar escrito
  • Ninguém sabe dizer que funcionalidades lidam com dinheiro, identidade ou dados pessoais
  • Os findings chegam num PDF e ficam por lá
Depois
  • Um threat model escrito pela sua equipa connosco, no seu próprio repo
  • Ameaças priorizadas, cada uma ligada a um ticket do backlog e a um responsável
  • Casos de abuso que a sua equipa de QA pode transformar em testes
  • Um formato de uma hora que a sua equipa consegue fazer sem nós

Formato típico: uma sessão por funcionalidade, ou uma curta série de sessões para criar o hábito.

Vamos conversar

Uma chamada de 30 minutos. Sem slides, sem tabela de preços, e um próximo passo em qualquer caso.