Sem categoria

Modelagem de Ameaças – o que é e por que desenvolvedores devem ficar atentos a isso

Dentro do processo de construção de um software, entender sua funcionalidade e identificar possíveis requisitos de segurança é função primordial. É essa atividade que pode ser um diferencial entre seu software se tornar seguro ou não. Este artigo tem como finalidade apresentar aos times de desenvolvimento a Modelagem de Ameaças, ou mesmo Threat Modeling

Você também pode ouvir esse conteúdo:

Realizar modelagem de ameaças é buscar identificar cenários que possam permitir a um atacante comprometer ou mesmo causar algum dano a nossa aplicação. Se temos esta visão de cenários, é possível que possamos identificar requisitos de segurança que possam mitigar ou mesmo eliminar estes cenários.

Mas, por que este artigo traz no título a ideia de que é para desenvolvedores? Sim, claro que é, quem mais conhece a aplicação? Quem vai trabalhar na solução? Quem vai implementar os requisitos? O time de segurança? Desculpa mas não, serão os desenvolvedores que irão atuar diretamente, então não há ninguém melhor do que eles, com a ajuda de profissionais experientes, a desenvolver a Modelagem de Ameaças.

Dev, vá se acostumando, isso ainda vai ser seu !

O que é Modelagem de Ameaças e onde ela começa

Acredito que o primeiro passo em nosso artigo seja explicar para aqueles que ainda não tiveram contato com o tema, o que vem a ser e o que não é Modelagem de Ameaças.

Primeiro quero começar com o que não é Modelagem de Ameaças. 

Buscar por cenários de ataques não vai entregar aos analistas vulnerabilidades –  este não é o objetivo da Modelagem de Ameaças. Então, mesmo sendo comum termos alguns profissionais com essa visão, modelar um sistema não é buscar por vulnerabilidades.

Se buscarmos pelo conceito inicial, a Modelagem de Ameaças acontece na etapa de Design de uma aplicação. Consequentemente, não temos a aplicação em si ainda, então como seria possível termos as vulnerabilidades? 

Não seria necessário neste momento, mas é importante salientar que não há o que se discutir sobre quando e em que momento acontece a Modelagem. Isso é claro dentro da metodologia, e ela acontece na fase de Design. Isso é importante porque também temos esse entendimento em vários times – “Podemos escolher quando vamos realizar a Modelagem de Ameaças?” –  não, não podem, o processo de SDLC é bem claro e definido, apenas siga-o, não invente a roda.

Bom, agora que entendemos o que não é Modelagem de Ameaças, vamos buscar entender o que vem a ser.

O que diz a Owasp

Na Conviso, usamos a OWASP como uma fonte muito importante para a gente, e mesmo tendo inúmeras outras metodologias que tratam do tema, vamos usar como base a que é descrita na OWASP mas, com um toque Conviso nela.

Olhando para a definição que temos na OWASP, podemos dizer que :

“Threat modeling works to identify, communicate, and understand threats and mitigations within the context of protecting something of value.

A threat model is a structured representation of all the information that affects the security of an application.”

O que, em uma tradução livre podemos colocar como:

“Modelagem de Ameaças visa identificar, comunicar e entender as ameaças, busca mitigar dentro de um contexto de proteção de alguma coisa de valor.

Modelagem de ameaças é uma representação estruturada de todas as informações que afetam a segurança de uma aplicação.”

Mas, se entendermos que a Modelagem de Ameaças é uma metodologia estruturada e que tem a finalidade de nos ajudar a identificar cenários, e a partir deles criar nossos requisitos de segurança, tudo fica mais simples.

Mas como isso pode acontecer?

O que fazer com problemas complexos?

Quando olhamos para a construção de uma aplicação, é comum que os problemas que ela venha a solucionar sejam quebrados em problemas menores, isso facilita e ajuda na hora de criarmos a aplicação. 

Quando seguimos no mesmo sentido, só que agora olhando para problemas de segurança das aplicações, buscando identificar quais seriam os requisitos de segurança, isso nem sempre é tão simples, e pode facilmente se mostrar um problema bem complexo.

Nosso objetivo enquanto profissionais de segurança é buscar olhar para a aplicação e tentar mitigar ou mesmo eliminar possíveis ameaças que ela venha a enfrentar, temos que estar à frente e pensar em cenários, e a partir destes cenários identificar quais seriam os requisitos de segurança que apontamos como necessários.

O conceito é o mesmo, o que fizemos foi olharmos de um ângulo diferente!

Modelagem é um processo colaborativo

Entenda, neste caso e em muitos, o conjunto das experiências dos participantes vai ser muito melhor que a abordagem individual, por isso adote uma abordagem colaborativa.

Trabalhar, identificar e perceber cenários de ataques não é um trabalho fácil e nem simples. Acumular experiências no processo de Modelagem de Ameaças é importante e vai ajudar o time a desenvolver um resultado muito melhor, muito mais eficiente do ponto de vista de requisitos de segurança.

Qual a profundidade da Modelagem ?

Essa é uma pergunta bem comum, e a resposta é simples.

Comece devagar e depois vá melhorando! O que isso quer dizer? Na própria documentação da OWASP podemos ter essa resposta, veja:

“Ideally, a high-level threat model should be defined early on in the concept or planning phase, and then refined throughout the lifecycle.”

Ou seja:

“Idealmente um modelo de ameaças de mais alto nível deve ser definido logo nos primeiros estágios, desenho e planejamento, e vai refinando durante o ciclo de vida.”

Aqui vale lembrar que sempre que o processo de desenvolvimento voltar para a fazer de design, mesmo em modelos ágeis isso acontece inúmeras vezes, a Modelagem de Ameaças deve ser revista, ser revalidada e melhorada. 

Isso é natural, pois agora um novo cenário foi criado, novas ameaças podem ter se tornado mais reais ao cenários atual e muita coisa pode ter mudado. O recado é simples – Modelagem é um processo vivo, constante!

O que podemos esperar depois de tudo isso?

Bom, eu particularmente eu espero que você, desenvolvedor, entenda que é importante você estudar sobre o tema, isso uma hora ou outra vai chegar até você. 

Espero pelo menos ter criado um pouco de curiosidade sobre o tema, e se entender posso tentar ajudar com suas dúvidas. 

E por último, mas não menos importante: estude, entenda e perceba que o processo de Modelagem de Ameaças pode ajudar você a desenvolver aplicações melhores e mais seguras. Pode inclusive te ajudar a reduzir o seu trabalho, tendo que voltar a corrigir código que já deveria ter sido criado mais seguro.

Entenda, desenvolver errado e desenvolver certo dá o mesmo trabalho, então por que fazer da forma mais difícil? 

Se tiverem interesse, posso partir para um outro artigo mostrando de forma mais detalhada como executar uma modelagem. Deixe nos comentários se gostaria de ler mais sobre o tema!

Nova call to action
About author

Articles

Mais de 15 anos de experiência em segurança da informação e aplicações, graduado em processamento de dados, trabalhei como professor universitário e participei ativamente como instrutor de treinamento para mais de 6000 desenvolvedores em equipes de TI. Sou pai de duas meninas e trader nas horas vagas.
Related posts
Code FightersSem categoria

Code Comprehension: O que é?

Antes de discutir Code Comprehension, é importante falar um pouco sobre Engenharia de Software.
Read more
Sem categoria

Os 3 primeiros passos para incluir AppSec em sua empresa

Para iniciar, precisamos entender o que é segurança de aplicações. Ao contrário do que muitos…
Read more
Sem categoria

Software Bill Of Materials (SBOM) - o que é e como funciona

Neste artigo, vamos abordar um exemplo que pode explicar o que vem a ser o  Software Bill of…
Read more

Deixe um comentário