Compreender a modelagem de ameaças

Concluído

A modelagem de ameaças é um elemento central do Microsoft Security Development Lifecycle (SDL) e uma prática de segurança fundamental para a criação de aplicativos seguros. É uma técnica de engenharia que ajuda você a identificar sistematicamente ameaças, ataques, vulnerabilidades e contramedidas que podem afetar seu aplicativo.

O que é modelagem de ameaças

Finalidade: A modelagem de ameaças fornece uma abordagem estruturada para entender os riscos de segurança em seu aplicativo. Em vez de esperar que você tenha pensado em todos os possíveis problemas de segurança, a modelagem de ameaças orienta você por um processo sistemático para identificar e lidar com ameaças.

Benefícios: Você pode usar a modelagem de ameaças para:

  • Moldar o design da aplicação: Influencie as decisões de arquitetura com base em considerações de segurança, em vez de adicionar segurança como uma reflexão posterior.
  • Cumpra os objetivos de segurança: Certifique-se de que seu aplicativo atenda aos objetivos de segurança e aos requisitos de conformidade da sua organização.
  • Reduzir o risco: Reduza sistematicamente os riscos de segurança identificando e abordando ameaças durante o projeto, em vez de descobri-las na produção.
  • Priorize o trabalho de segurança: Concentre os esforços de segurança nas ameaças mais significativas, em vez de tentar resolver tudo de uma só vez.
  • Comunique preocupações de segurança: Forneça uma linguagem comum para desenvolvedores, equipes de segurança e partes interessadas discutirem segurança.

Acessibilidade: A abordagem foi concebida tendo em mente especialistas que não são especialistas em segurança. A modelagem de ameaças é acessível a todos os desenvolvedores, não apenas aos especialistas em segurança, por meio de orientações claras sobre a criação e análise de modelos de ameaças.

O processo de modelagem de ameaças em cinco estágios

A modelagem de ameaças segue um processo sistemático de cinco etapas:

Diagrama mostrando os cinco estágios de modelagem de ameaças: Definir requisitos de segurança, Diagramar a arquitetura do aplicativo, Identificar ameaças, Mitigar ameaças e Validar mitigações.

1. Definir requisitos de segurança

Estabeleça metas de segurança: Antes de analisar ameaças, esclareça o que significa segurança para seu aplicativo:

Requisitos de confidencialidade:

  • Que dados devem permanecer confidenciais?
  • Quem deve ter acesso a informações sensíveis?
  • Durante quanto tempo devem os dados permanecer confidenciais?
  • Quais são as consequências das violações de confidencialidade?

Requisitos de integridade:

  • Que dados ou operações devem ser protegidos contra modificações não autorizadas?
  • Como detetar se os dados foram adulterados?
  • Quais são as consequências das violações de integridade?

Requisitos de disponibilidade:

  • Que garantias de tempo de atividade são exigidas?
  • Qual é o tempo de inatividade aceitável para diferentes componentes?
  • Qual é o impacto da indisponibilidade nos negócios?

Requisitos de conformidade:

  • Que requisitos regulamentares se aplicam (GDPR, HIPAA, PCI DSS, etc.)?
  • Que normas da indústria devem ser cumpridas (ISO 27001, SOC 2, etc.)?
  • Que obrigações contratuais de segurança existem com os clientes?

Exemplos de requisitos: "As informações de pagamento do cliente devem permanecer confidenciais. Apenas os sistemas de processamento de pagamentos autorizados podem aceder a estes dados. Todos os acessos devem ser registrados para fins de auditoria. Os dados devem ser criptografados em trânsito e em repouso."

2. Crie um diagrama de aplicativo

Visualize sua arquitetura: Crie um diagrama que represente a arquitetura do seu aplicativo, mostrando:

Componentes do sistema:

  • Servidores Web, servidores de aplicações, bases de dados, microsserviços.
  • Serviços externos e APIs dos quais seu aplicativo depende.
  • Sistemas de autenticação e autorização.
  • Balanceadores de carga, camadas de cache, filas de mensagens.

Fluxos de dados:

  • Como os dados se movem entre componentes.
  • Que dados cada ligação transmite.
  • Direção do fluxo de dados.
  • Pontos de transformação de dados.

Limites de segurança:

  • Limites de confiança onde os níveis de privilégio mudam.
  • Limites de rede entre diferentes zonas de segurança.
  • Limites do processo entre diferentes contextos de execução.
  • Limites físicos entre diferentes locais ou nuvens.

Elementos de exemplo:

  • Usuários que se conectam através da internet.
  • Firewall de aplicativo Web na borda da rede.
  • Servidores Web numa DMZ.
  • Servidores de aplicativos em uma rede protegida.
  • Servidores de banco de dados em uma rede altamente restrita.
  • Gateway de pagamento externo para processamento de transações.

3. Identificar ameaças

Identificação sistemática de ameaças: Use abordagens estruturadas para identificar ameaças potenciais:

Metodologia STRIDE: STRIDE é uma estrutura de categorização de ameaças:

  • Spoofing: Ameaças envolvendo falsificação de identidade.
  • Tampering: Ameaças envolvendo modificação não autorizada de dados.
  • Repudiação: Ameaças em que os utilizadores negam ter realizado ações.
  • IDivulgação de informações: Ameaças envolvendo acesso não autorizado a informações.
  • Denial of Service: Ameaças que impedem utilizadores legítimos de aceder aos sistemas.
  • Elevation of Privilege: Ameaças onde os usuários obtêm permissões não autorizadas.

Aplique o STRIDE aos fluxos de dados: Examine cada fluxo de dados em seu diagrama e considere como cada categoria STRIDE pode ser aplicada:

  • Um invasor pode falsificar a fonte desses dados?
  • Esses dados podem ser adulterados durante a transmissão ou armazenamento?
  • Ações legítimas sobre esse fluxo de dados podem ser repudiadas?
  • Informações sensíveis poderiam ser divulgadas por meio desse fluxo?
  • Esse fluxo poderia ser usado para causar negação de serviço?
  • Esse fluxo poderia ser explorado para obter privilégios elevados?

Exemplos comuns de ameaças:

  • Injeção de SQL: O invasor manipula consultas de banco de dados por meio de entrada de usuário não higienizada (adulteração, divulgação de informações, elevação de privilégio).
  • Seqüestro de sessão: O invasor rouba tokens de sessão para se passar por usuários (falsificação, elevação de privilégio).
  • Homem-no-meio: O invasor interceta comunicações entre componentes (Divulgação de informações, Falsificação).
  • Ataque DDoS: O invasor sobrecarrega os sistemas com tráfego (Negação de Serviço).

4. Mitigar ameaças

Desenvolver contramedidas: Para cada ameaça identificada, desenvolver medidas de atenuação adequadas:

Estratégias de mitigação:

  • Eliminar: Remova totalmente o componente ou recurso vulnerável se não for essencial.
  • Prevenir: Implemente controles que tornem a ameaça impossível (por exemplo, a validação de entrada impede ataques de injeção).
  • Detetar: Implemente monitoramento e alertas para detetar tentativas de exploração de ameaças.
  • Responda: Desenvolver procedimentos de resposta a incidentes para quando as ameaças são exploradas.

Exemplos de atenuações:

  • Ameaça de injeção de SQL: Use consultas parametrizadas e validação de entrada para evitar ataques de injeção.
  • Ameaça de sequestro de sessão: Implemente o gerenciamento seguro de sessão com HTTPS, cookies seguros e tempos limite de sessão curtos.
  • Ameaça man-in-the-middle: Aplique o TLS para todas as comunicações e implemente a fixação de certificados.
  • Ameaça DDoS: Use serviços de proteção contra DDoS baseados em nuvem e implemente o limite de taxa.

Documentar decisões: Registrar decisões de mitigação, incluindo:

  • Que ameaças são abordadas.
  • Que abordagem de mitigação foi escolhida.
  • Por que razão esta abordagem é adequada?
  • Quem é responsável pela implementação.
  • Quaisquer riscos residuais que permaneçam.

5. Validação de mitigações

Verificar a eficácia: Depois de implementar mitigações, valide se elas abordam efetivamente as ameaças identificadas:

Testes de segurança:

  • Os testes de penetração para verificar ameaças não podem ser explorados.
  • Revisões de código de segurança para confirmar que as mitigações foram implementadas corretamente.
  • Verificação de segurança automatizada para detetar vulnerabilidades perdidas.
  • Exercícios de Red Team para testar as defesas contra cenários de ataques realistas.

Validação contínua: As ameaças e mitigações evoluem:

  • Novas ameaças surgem à medida que a tecnologia muda.
  • As atenuações existentes podem tornar-se ineficazes.
  • As alterações na aplicação podem introduzir novas vulnerabilidades.

Modelagem de ameaças no ciclo de vida do desenvolvimento

Processo em curso: A modelagem de ameaças não deve ser uma atividade única. Deve fazer parte do seu ciclo de vida de desenvolvimento típico:

Projeto inicial: Conduza uma modelagem abrangente de ameaças durante o projeto inicial do aplicativo para influenciar as decisões de arquitetura.

Desenvolvimento de funcionalidades: Execute a modelagem de ameaças ao adicionar novos recursos significativos que alteram os limites de segurança ou introduzem novos fluxos de dados.

Atualizações regulares: Revise e atualize periodicamente os modelos de ameaças, mesmo sem grandes alterações, à medida que o cenário de ameaças evolui.

Resposta a incidentes: Atualize os modelos de ameaças após incidentes de segurança para incorporar as lições aprendidas.

Redução progressiva do risco: Essa abordagem iterativa permite refinar seu modelo de ameaça e reduzir progressivamente o risco ao longo do tempo, em vez de tentar lidar com todos os riscos de uma só vez.

Microsoft Threat Modeling Tool

A Microsoft fornece uma ferramenta gratuita que torna a modelagem de ameaças mais acessível e estruturada:

Finalidade: A Microsoft Threat Modeling Tool facilita a modelagem de ameaças para todos os desenvolvedores por meio de uma notação padrão para visualizar componentes do sistema, fluxos de dados e limites de segurança.

Identificação automatizada de ameaças: A ferramenta ajuda os modeladores de ameaças a identificar classes de ameaças que devem considerar com base na estrutura do seu projeto de software. À medida que você cria seu diagrama de aplicativo, a ferramenta sugere automaticamente ameaças potenciais com base nos componentes e fluxos de dados definidos.

Principais capacidades: A Ferramenta de Modelagem de Ameaças permite que qualquer desenvolvedor ou arquiteto de software:

Comunique o projeto de segurança:

  • Crie representações visuais da arquitetura do sistema.
  • Use uma notação consistente que as equipes de segurança e os desenvolvedores entendam.
  • Documente decisões de arquitetura relevantes para a segurança.
  • Partilhe modelos de ameaças com as partes interessadas para análise e feedback.

Analise projetos:

  • Identificar possíveis problemas de segurança usando metodologias comprovadas (STRIDE).
  • Gere automaticamente listas de ameaças com base na estrutura do aplicativo.
  • Priorize ameaças com base na gravidade e na probabilidade.
  • Compare diferentes alternativas de design de uma perspetiva de segurança.

Gerencie mitigações:

  • Sugira mitigações para ameaças identificadas.
  • Acompanhe o status da implementação da mitigação.
  • Documente as decisões e a fundamentação da segurança.
  • Gere relatórios para revisões de segurança e conformidade.

Primeiros passos:

  • A ferramenta é gratuita e está disponível para download na Microsoft.
  • Inclui modelos para tipos de aplicação comuns.
  • A orientação integrada ajuda os novos usuários a aprender conceitos de modelagem de ameaças.
  • A integração com o Azure DevOps permite vincular ameaças a itens de trabalho.

Recursos adicionais

Para obter mais informações sobre modelagem de ameaças, consulte: