Modelagem de Ameaças, o primeiro passo para o Desenvolvimento Seguro de Aplicações

Fernando Silva
5 min readJun 7, 2023
Processo Modelagem de Ameaças

O que é modelagem de ameaças?

A modelagem de ameaças analisa as representações de uma aplicação para destacar as preocupações sobre as características de segurança e privacidade.

De um alto nível, quando modelamos ameaças, fazemos quatro perguntas principais:

  1. Em que estamos trabalhando?
  2. O que pode dar errado?
  3. O que você irá fazer sobre isso?
  4. Fizemos um trabalho bom o suficiente?

Por que modelagem de ameaças?

Ao executar a modelagem de ameaças, você começa a reconhecer o que pode dar errado em uma aplicação. Ela também permite identificar problemas de design e implementação que exigem mitigação, seja no início ou durante toda a vida útil da aplicação. A saída do modelo de ameaça, conhecida como ameaças, informa as decisões que você pode tomar nas fases subsequentes de design, desenvolvimento, teste e pós-implantação.

Quem deve modelar ameaças?

Você. Todos. Qualquer pessoa que esteja preocupada com a privacidade, segurança e proteção da sua aplicação.

Como começo a fazer Modelagem de Ameaças?

Um guia interessante é o Threat Modeling Manifesto, use como uma referência para desenvolver ou refinar uma metodologia que melhor atenda às suas necessidades. Seguir as orientações do Manifesto resultará em uma modelagem de ameaças mais eficaz e produtiva. Por sua vez, isso ajudará você a desenvolver aplicações, sistemas e organizações mais seguras e protegê-las contra ameaças aos seus dados e serviços. O Manifesto contém ideias, mas não é um manual, e é independente de metodologia. Consulte o Manifesto para mais informações.

Objetivos da Modelagem de Ameaças

A modelagem de ameaças é uma família de atividades para melhorar a segurança, identificando ameaças e, em seguida, definindo contramedidas para prevenir ou mitigar os efeitos de ameaças a aplicação. Uma ameaça é um evento indesejável potencial ou real que pode ser mal-intencionado (como um ataque DoS) ou acidental (falha de um dispositivo de armazenamento). A modelagem de ameaças é uma atividade planejada para identificar e avaliar ameaças de aplicações.

Modelagem de Ameaças no Ciclo de Vida do Desenvolvimento

A modelagem de ameaças é melhor aplicada continuamente ao longo de um projeto de desenvolvimento de software. O processo é essencialmente o mesmo em diferentes níveis de abstração, embora as informações fiquem cada vez mais granulares ao longo do ciclo de vida. Idealmente, um modelo de ameaça de alto nível deve ser definido no início do conceito ou fase de planejamento e, em seguida, refinado ao longo do ciclo de vida. À medida que mais detalhes são adicionados ao sistema, novos vetores de ataque são criados e expostos. O processo contínuo de modelagem de ameaças deve examinar, diagnosticar e abordar essas ameaças.

É uma parte natural de refinar uma aplicação para que novas ameaças sejam expostas. Por exemplo, quando você seleciona uma determinada tecnologia — como Java, por exemplo — você assume a responsabilidade de identificar as novas ameaças que são criadas por essa escolha. Mesmo as escolhas de implementação, como o uso de expressões regulares para validação, podem introduzir novas ameaças em potencial.

A atualização dos modelos de ameaças é aconselhável após eventos como:

  • Um novo recurso é lançado
  • Ocorre um incidente de segurança
  • Mudanças arquitetônicas ou de infraestrutura

Modelagem de Ameaças: estrutura de quatro perguntas

Uma possível ameaça existe quando a probabilidade combinada da ocorrência da ameaça e o impacto que ela teria na organização criam um risco significativo. A estrutura de quatro perguntas citado anteriormente pode ajudar a organizar a modelagem de ameaças:

  1. Em que estamos trabalhando?
  2. O que pode dar errado?
  3. O que você irá fazer sobre isso?
  4. Fizemos um trabalho bom o suficiente?

Existem muitos métodos ou técnicas que podem ser usados ​​para responder a cada uma dessas perguntas. Não existe uma maneira “certa” de avaliar o espaço em busca de possíveis ameaças, mas existem modelos estruturados para ajudar a tornar o processo mais eficiente.

Tentar avaliar todas as combinações possíveis do agente de ameaça, ataque, vulnerabilidade e impacto costuma ser uma perda de tempo e esforço. É útil refinar o espaço de busca para determinar em quais possíveis ameaças focar.

  • Avalie o escopo — Em que estamos trabalhando? Isso pode ser tão pequeno quanto um sprint ou tão grande quanto um sistema inteiro.
  • Identifique o que pode dar errado — Isso pode ser tão simples quanto um brainstorm ou tão estruturado quanto usar STRIDE, Kill Chains ou Attack Trees.
  • Identifique contramedidas ou gerencie riscos — Decida o que você fará com cada ameaça. Isso pode ser para implementar uma mitigação ou aplicar as abordagens aceitar/transferir/eliminar do gerenciamento de riscos.
  • Avalie seu trabalho — Você fez um trabalho bom o suficiente para o sistema em questão?

Processo Estruturado de Modelagem de Ameaças

O processo de modelagem de ameaças pode ser decomposto em três etapas de alto nível. Cada etapa é documentada à medida que é executada. O documento resultante é o modelo de ameaça e suas contramedidas para a aplicação.

Etapa 1: Decompor a Aplicação

A primeira etapa no processo de modelagem de ameaças está relacionada ao entendimento da aplicação e como ela interage com entidades externas.

Etapa 2: Determine e Classifique as Ameaças

O uso de uma metodologia de categorização de ameaças é fundamental para a identificação de ameaças. Uma categorização de ameaça como STRIDE pode ser usada ou o Application Security Frame (ASF) que define categorias de ameaças como Auditoria e Registro, Autenticação, Autorização, Gerenciamento de Configuração, Proteção de Dados em Armazenamento e Trânsito, Validação de Dados e Gerenciamento de Exceções.

Etapa 3: Determinar Contramedidas e Mitigação

Uma ameaça pode ser mitigada com a implementação de uma contramedida. Essas contramedidas podem ser identificadas usando listas de mapeamento de contramedidas de ameaças. Depois que uma classificação de risco é atribuída às ameaças na etapa 2, é possível classificar as ameaças do maior ao menor risco e priorizar os esforços de mitigação.

Para mais informações sobre como elaborar um processo formal e estruturado para modelagem de ameaças de uma aplicação é possível consultar o projeto da OWASP em Processo de Modelagem de Ameaças.

Benefícios

Feito corretamente, a modelagem de ameaças fornece uma “linha de visão” clara em um projeto que justifica os esforços de segurança. O modelo de ameaças permite que as decisões de segurança sejam tomadas de forma racional, com todas as informações na mesa.

O processo de modelagem de ameaças produz naturalmente um argumento de garantia que pode ser usado para explicar e defender a segurança de uma aplicação. Um argumento de garantia começa com algumas reivindicações de alto nível e as justifica com subafirmações ou evidências.

Referências:
https://www.threatmodelingmanifesto.org

https://owasp.org/www-community/Threat_Modeling

https://owasp.org/www-community/Threat_Modeling_Process

https://www.microsoft.com/en-us/securityengineering/sdl/threatmodeling

https://www.microsoft.com/en-us/securityengineering/sdl

--

--

Fernando Silva

Application Security Engineer | OWASP Chapter Leader | AppSec | MSc CyberSecurity | Systems Development Analyst