DEV Community

Thiago Bertuzzi 👨🏻‍💻
Thiago Bertuzzi 👨🏻‍💻

Posted on • Updated on

Código seguro com OWASP e SSDLC - 1 Top Ten

Ladrão roubando dados

Fala galera,

tudo beleza?

Dando continuidade ao conteudo de segurança para código, hoje vamos falar dela a OWASP. Em um artigo anterior eu expliquei como funiona o Desenvolvimento Seguro, S-SDLC na parte da teoria, porem agora vamos começar a entender de vez como podemos melhorar nosso código do ponto de vista de segurança.

Antes de mais nada o que é, quem é onde vive e o que come a OWASP?

A Open Web Application Security Project ou OWASP é uma organização sem fins lucrativos fundada em 2001, cuja missão é melhorar a segurança do software. Seu nome completo reflete sua missão e importancia na segurança de aplicativos web, mas suas atividades vão além disso, abrangendo várias áreas de segurança.

A organização é composta por uma comunidade global de especialistas em segurança, desenvolvedores, engenheiros, e outros profissionais que compartilham seu conhecimento e experiência para criar recursos e ferramentas de segurança acessíveis a todos.

A Owasp em sim possui 3 objetivos : Fornecer Recursos Educacionais, Desenvolver Ferramentas e Padrões e Promover Melhores Práticas. Tudo voltado para que tenhamos uma ideia de onde seguir boas praticas para termos aplicações mais seguras.

Owasp Top Ten

Bertuzzi com Checklist

Uma das contribuições mais reconhecidas da OWASP é o "OWASP Top Ten". Esta é uma lista anual das dez principais vulnerabilidades de segurança em aplicativos da web.

O objetivo do OWASP Top Ten é conscientizar sobre as ameaças mais críticas e ajudar as organizações a priorizar seus esforços de segurança. As vulnerabilidades incluídas na lista podem variar ao longo do tempo à medida que as ameaças evoluem, mas geralmente incluem problemas como injeção de SQL, autenticação inadequada, exposição de dados sensíveis e muitos outros.

Traduzindo para nosso querido portugues o Owasp Top Ten aborda os seguintes tópicos :

1. Injeção: Vulnerabilidades que ocorrem quando dados não confiáveis são inseridos em comandos ou consultas não seguras, permitindo que um atacante execute código malicioso.

Por exemplo dados não confiáveis são inseridos diretamente em instruções SQL, permitindo que um atacante execute comandos maliciosos no banco de dados.

string userInput = Request.Query["search"];
string query = $"SELECT * FROM Produtos WHERE Nome = '{userInput}'";
Enter fullscreen mode Exit fullscreen mode

2. Quebra de Autenticação: Falhas na autenticação e gerenciamento de sessões que podem permitir que um invasor assuma a identidade de outro usuário.

if (senhaDigitada == usuario.Senha) {
    // Acesso concedido
}
Enter fullscreen mode Exit fullscreen mode

3. Exposição de Dados Sensíveis: Quando informações confidenciais são acessíveis por pessoas não autorizadas devido a configurações inadequadas ou vulnerabilidades na aplicação.

string cartaoCredito = HttpContext.Request["cartao"];
Enter fullscreen mode Exit fullscreen mode

4. Controle de Acesso Quebrado: Falhas na aplicação de autorização e controle de acesso, permitindo que usuários não autorizados acessem recursos protegidos.

if (!User.IsInRole("Administrador")) {
    // Usuário não autorizado
}
Enter fullscreen mode Exit fullscreen mode

5. Má Configuração de Segurança, Logs e dados: Configurações incorretas que podem abrir brechas de segurança, como servidores web com informações de depuração ativadas.

"Logging": {
    "LogLevel": {
        "Default": "Debug"
    }
}
Enter fullscreen mode Exit fullscreen mode

6. Falha de Segurança em Componentes: Quando componentes de terceiros, como bibliotecas ou frameworks, contêm vulnerabilidades conhecidas que podem ser exploradas.

dotnet add package VulnerableLibrary --version 1.0

Enter fullscreen mode Exit fullscreen mode

7. Cross-Site Scripting (XSS): Vulnerabilidades que permitem que um invasor injete scripts maliciosos em páginas da web vistas por outros usuários.

string userInput = Request.Query["comment"];
Response.Write("Comentário: " + userInput);
Enter fullscreen mode Exit fullscreen mode

8. Deserialização Insegura: Quando dados não confiáveis são desserializados sem verificação adequada, permitindo que um atacante execute código arbitrário.

MemoryStream stream = new MemoryStream(Convert.FromBase64String(serializedData));
BinaryFormatter formatter = new BinaryFormatter();
object obj = formatter.Deserialize(stream);
Enter fullscreen mode Exit fullscreen mode

9. Regras de Negócios Quebrada: Falhas na lógica de negócios que podem ser exploradas por atacantes.

if (usuario.ID == 1) {
    // Acesso total concedido
}
Enter fullscreen mode Exit fullscreen mode

10. Redirecionamento e Encaminhamento Não Confiável: Quando aplicativos permitem que um invasor redirecione ou encaminhe um usuário para sites maliciosos, comprometendo sua segurança.

Response.Redirect(Request.Query["url"]);
Enter fullscreen mode Exit fullscreen mode

Respeitando e implementando essas dicas do TOP TEN sua aplicação tem o minimo de segurança aceitavel para estar no ar.

Claro que isso é apenas um resumo, para entender melhor é necessario revisar toda a documentação do OWASP TOP TEN

Porem é uma introdução pois no proximo artigo iremos falar de OWASP ASVS então nos vemos la!

Espero ter ajudado!

Aquele abraço!

Top comments (0)