O mínimo que qualquer pessoa desenvolvedora deve saber sobre vulnerabilidades
TL,DR
O artigo aborda o conceito de vulnerabilidades, suas formas de exploração e classificação através de CVEs, além de apresentar as principais ferramentas utilizadas para identificá-las, bem como a importância do OWASP TOP 10 na garantia da segurança de aplicativos WEB.
Durante os vários anos que eu trabalhei como desenvolvedora, a segurança não era um grande problema na minha cabeça. A maior parte do tempo eu já recebia de forma meio pronta o que eu deveria fazer para corrigir a vulnerabilidade (geralmente indicada por um pentester ou pela OWASP).
Hoje, trabalhando em um time de segurança, eu consigo perceber como a maior parte dos devs (e isso me inclui no passado) não possuem clareza sobre o que pode ser classificado como uma vulnerabilidade, como é feita a classificação e também como elas são descobertas. São estes temas que pretendo discorrer neste artigo.
Entendendo o que é uma vulnerabilidade
Basicamente, qualquer coisa que possa ser usada ou explorada de forma intenciona (e principalmente maliciosa) por pessoas que não deveriam poder realizar aquela ação.
Uma vulnerabilidade pode vir de várias formas: erro de código ou de arquitetura de sistema, portas abertas na infraestrutura, falhas na configuração de políticas de acesso ou de rede, ausência de validações em entradas de dados, ausência ou má configuração de criptografias... Esta lista pode ser infinita.
Encontrando vulnerabilidades
O grande trabalho dos times de segurança é encontrar as possíveis vulnerabilidades no sistema e corrigi-las antes que ocorra um ataque. Para isso, são usadas várias ferramentas. Aqui listaremos algumas das mais comuns.
Teste de Penetração (Pentest)
Não é necessariamente o mais comum, mas com certeza é o mais famoso, já que emula a forma como os crackers atacam o sistema.
Análise Estática de Segurança de Aplicação (Static Application Security Testing - SAST)
É um scan que é realizado na base de código (incluindo binários, em alguns casos) para encontrar algumas vulnerabilidades de "assinatura", como por exemplo vulnerabilidade de dependências.
Análise Dinâmica de Segurança de Aplicação(Dynamic Application Security Testing - DAST)
São testes automáticos que simulam um ataque ativo contra a aplicação, com o objetivo de encontrar vulnerabilidades.
Auditoria de configurações
Geralmente é utilizado para validar que todas as configurações (como por exemplo as de IAM ou de criptografia) estão como o desejado, e que estão em pleno funcionamento.
Entendendo CVEs
CVE - Common Vulnerabilities and Exposures é uma lista pública de falhas de segurança. São classificadas por um número do tipo CVE-2023-1234567, com os quatro primeiros algarismos sempre representando o ano em que a vulnerabilidade foi registrada. Este número é chamado de CNA (CVE Numbering Authority). Ao ser tornada pública, uma CVE necessariamente deve ter um CNA, uma descrição da vulnerabilidade e evidências da existência dela.
A lista de CVEs é mantida pela Mitre Corporation.
Reconhecendo uma CVE
Para ser considerada uma CVE, uma vulnerabilidade deve atender a três critérios:
1. Resolução independente
A correção da vulnerabilidade não deve ser dependente da correção de nenhuma outra vulnerabilidade.
2. Agente afetado reconhecido
O fornecedor ou mantenedor daquele software (ou hardware) deve reconhecer que determinada falha afeta a segurança do software OU alguém deve detalhar um relatório de vulnerabilidade expondo o impacto daquela falha, e também a forma como ela viola a politica daquele produto.
3. Afetar somente um ambiente
Bugs que afetam ambientes diferentes possuem diferentes CVEs para cada produto. Em caso de bibliotecas compartilhadas (como no caso do Log4J), só terá uma CVE única como uma vulnerabilidade caso seja impossível usar o código da biblioteca sem ser afetado pelo bug.
OWASP TOP 10
OWASP é uma organização sem fins lucrativos que se dedica a garantir a segurança de aplicativos WEB. Regularmente ela publica um relatório chamado OWASP TOP 10, citando as dez vulnerabilidades mais exploradas. Este relatório é feito de forma colaborativa por uma equipe que reúne especialistas em segurança de todo o mundo. O último relatório foi publicado em 2021 e trouxe três novas vulnerabilidades para a lista.
Conclusão
Neste artigo, foi possível entender o que é uma vulnerabilidade, os tipos mais comuns, como são encontradas e classificadas através de CVEs e a importância do OWASP TOP 10. É evidente que a segurança da informação é cada vez mais importante no mundo digital em que vivemos e a conscientização sobre vulnerabilidades é fundamental para prevenir ataques cibernéticos e proteger dados sensíveis. Cabe aos desenvolvedores e equipes de segurança trabalharem juntos para garantir a segurança dos sistemas e a proteção das informações confidenciais dos usuários.
Top comments (1)
Não sou dev, então posso estar sendo parcial puxando a sardinha pro nosso lado na segurança, mas adorei o artigo ;) gosto sempre de lembrar que desenvolvimento é uma área enorme, e segurança também. É muito mais fácil quem gosta de uma trabalhar junto com quem gosta da outra, do que alguém ter o domínio de ambas (difícil, mas não impossível, claro) e ser cobrado por isso.