Explicando o TOP 4 da OWASP "Design Inseguro" para desenvolvedores
Tags: owasp, appsec, beginners, security
Published: 2023-02-23 18:23:08

Olá, mais uma vez! 

Vamos agora falar de uma categoria nova e que chamou bastante a atenção quando foi lançada pelo OWASP TOP 10 em 2021, o "Design Inseguro".

Vou esclarecer brevemente sobre ela neste texto, uma vez que algumas pessoas podem ter dificuldade em compreendê-la.

[Aqui você pode aprender mais sobre a importância do design seguro](https://bit.ly/3StCACX).

## O que é "Design Inseguro"

A categoria de risco "Design Inseguro", na 4ª posição do OWASP TOP 10,  se concentra nos riscos relacionados a falhas de design e arquitetura, com um apelo para o uso de modelagem de ameaças e padrões de design seguros.

Assim como uma casa, que precisa de um bom projeto arquitetônico para garantir que seja segura e funcional, um software também precisa de um bom design para garantir que seja seguro e confiável. 

## Mas não é só corrigir as vulnerabilidades na hora da implementação?

Não é bem assim...

O design inseguro e a implementação insegura são conceitos diferentes visto que possuem causas e remediações distintas!


Enquanto um design seguro ainda pode ter problemas de implementação, um design inseguro não pode ser corrigido apenas com uma implementação perfeita, já que os controles de segurança necessários nunca foram criados para se defender contra ataques específicos.

Ou seja, mesmo que a implementação seja feita de forma perfeita, o design inseguro permanece, e é necessário investir um tempo pensando no design seguro para garantir a segurança do sistema.

## Então tudo começa no início

Uma das causas para o design inseguro é a falta de compreensão dos riscos de negócios inerentes ao software que está sendo desenvolvido. 

Portanto, é essencial que desenvolvedores considerem os riscos de segurança desde o início do projeto, para garantir que o software tenha um design seguro e implementação correta, garantindo a segurança da aplicação.


## Quais são as vulnerabilidades dessa categoria?

Até aqui muito abstrato, certo? Falhas de design inseguro ocorrem quando equipes de desenvolvimento, qualidade e segurança não consideram ou avaliam adequadamente as ameaças durante a fase de design do código. 

Com o cenário de ameaças em constante evolução, a mitigação das vulnerabilidades de design requer uma modelagem de ameaças consistente para evitar métodos de ataque conhecidos. Sem um design seguro, é difícil identificar e corrigir falhas arquitetônicas, como:

- Armazenamento desprotegido de credenciais;


- Falhas de projeto no gerenciamento de identidade e acesso;


- Violações de limite de confiança que podem levar a _Injection_;


- Geração de mensagens de erro contendo informações confidenciais;

Na [documentação da OWASP](https://owasp.org/www-project-top-10-ci-cd-security-risks/) você pode encontrar mais detalhes sobre essas vulnerabilidades.

## Como desenvolvedores podem se prevenir?

Para prevenir vulnerabilidades de design inseguro, é fundamental aplicar uma mentalidade "shift left", trazendo a segurança desde o início do ciclo de desenvolvimento de software. Para tanto, é importante ter conhecimento do framework OWASP SAMM a fim de entender melhor sobre todos esses processos.

[Temos essa série que sintetiza o OWASP SAMM para profissionais da área.](https://bit.ly/3XXtfEs)

## Faça uma modelagem de ameaças
Uma das maneiras mais eficazes de garantir que a segurança seja considerada desde o início é através da modelagem de ameaças. Ela é uma técnica usada para identificar potenciais ameaças e vulnerabilidades em um sistema e gerar requisitos de segurança.

Ao fazer a modelagem de ameaças no início do ciclo de desenvolvimento, as equipes podem antecipar e mitigar as vulnerabilidades de segurança, economizando tempo e dinheiro em correções tardias e, possivelmente, em violações de segurança. 

## Construa seguro desde cedo
Espero que tenha ficado claro sobre o risco de "Design Inseguro" que, embora muitos ainda acreditem que a segurança deva ser implementada apenas na fase final, é essencial considerar os riscos de segurança desde o início do projeto. 

Sendo assim, a modelagem de ameaças é uma das maneiras mais eficazes de garantir que a segurança seja considerada logo na etapa de planejamento. 

[Você pode aprender mais sobre modelagem de ameaças aqui](https://bit.ly/3StCACX).

[Consulte aqui a documentação inteira da OWASP.](https://owasp.org/www-project-top-10-ci-cd-security-risks/)