# Modelagem de ameaças

A modelagem de ameaças é um processo dentro do ciclo de vida do desenvolvimento de software seguro que consiste no levantamento de contra-medidas de segurança que resolvem as ameaças ao software. O processo de modelagem de ameaça deve ser aplicado no início do projeto e continuar durante todo o ciclo de vida da aplicação.

## Passos

O processo de modelagem consiste dos seguintes passos:

### Identificar os bens

O primeiro passo consiste em identificar os recursos valiosos a serem protegidos pelo sistema. Esses recursos são itens que o atacante deseja acessar, controlar ou até mesmo destruir. Há três perspectivas muito utilizadas:
* itens que os atacantes desejam
* itens que se deseja proteger
* trampolins para qualquer uma dessas
Normalmente as informações que os atacantes querem são:
* Número do RG
* Número CPF
* Número de cartões de crédito
* Senhas
* Login de Acesso

### Criar um resumo da arquitetura

Nesse passo deve-se documentar tudo o que a aplicação faz, os recursos que utiliza e como são acessados, todo o seu funcionamento. Deve-se documentar os seus casos de uso e toda tecnologia implementada e desenvolver diagramas de toda a estrutura da aplicação.

### Decompor a aplicação

Nesse passo a arquitetura da aplicação é decomposta, criando um perfil de segurança para a aplicação. O objetivo do perfil de segurança é dar cobertura às vulnerabilidades no projeto, implementação ou configuração de implantação da aplicação.
Analisa-se pequenas partes da aplicação de modo a identificar limites de confiança, de fluxo de dados, pontos de entradas e saídas. Na identificação do limite de confiança analisa-se se os dados realmente funcionam e se as entradas de usuários são confiáveis. No fluxo de dados observa-se de onde vem os dados e para onde irão. Pontos de entrada e saída incluem a rede principal e projeto de infra-estrutura de rede.

### Identificar as ameaças

Nesse processo descreve-se as ameaças que poderiam afetar a aplicação, tendo em mente os objetivos de um invasor e o conhecimento da arquitetura e das vulnerabilidades potenciais da aplicação.

### Documentar as ameaças

Nesse passo documenta-se cada ameaça usando um modelo comum de ameaça que defina um conjunto principal de atributos para cada ameaça, levando em conta o alvo, as técnicas utilizadas em um ataque e as medidas que resolva os problemas.

### Estimar as ameaças

Estima-se as ameaças para priorizar e tratar primeiro as mais significativas e que representam o maior risco. O processo de estimativa mede a probabilidade da ameaça contra os danos que poderiam ocorrer caso um ataque ocorra. Deve-se prever que certas ameaças não garantem nenhuma ação quando se compara o risco apresentado pela ameaça com os custos resultantes de redução.

## Resultado

O resultado do processo de elaboração de modelos inclui a documentação dos aspectos de segurança da arquitetura da sua aplicação e uma lista de ameaças relacionadas. O modelo de ameaça ajuda a orquestrar os membros da equipe de desenvolvimento e a focar nas mais potentes ameaças.
A elaboração de modelos de ameaças é um processo iterativo. É um documento que se desenvolve e sobre os quais vários membros da equipe podem trabalhar.
O modelo de ameaças pode ser usado pelos seguintes grupos de pessoas:
* Designers podem usá-lo para proteger escolhas no projeto a respeito das tecnologias e funcionalidade.
* Desenvolvedores que escrevem códigos podem usá-lo para reduzir os riscos.
* Os testadores podem escrever casos de teste se a aplicação está vulnerável a ameaças identificadas pelas análises.
A partir do modelo inicial, pode-se criar um relatório mais formal que inclua atributos adicionais, tal como um Bug ID, que pode ser usado para vincular a ameaça em um sistema de rastreamento de bugs.