OWASP: Conheça as 10 maiores vulnerabilidades de software

Conhecer as vulnerabilidades às quais um software está sujeito é o primeiro passo para combatê-las. Contudo, existem variações de risco e extensão, e é preciso hierarquizar as ameaças para não dispersar as ações de segurança.

Foi com base nesses entendimentos que criaram o projeto OWASP (Open Web Application Security Project) em 2003. Uma iniciativa global e sem fins lucrativos que compila, organiza e atualiza continuamente uma base de conhecimento a respeito das principais vulnerabilidades de software.

A lista das 10 principais vulnerabilidades é atualizada a cada alguns anos – a lista mais recente é de Setembro de 2021. São elas:

  1. Controle de Acesso Quebrado (Broken Access Control)
  2. Falhas de Criptografia
  3. Injeções
  4. Design Inseguro
  5. Má Configuração de Segurança
  6. Componentes Vulneráveis e Datados
  7. Falhas de Identificação e Autenticação
  8. Falhas de Integridade de Dados e Software
  9. Insuficiência de Logging e Monitoramento
  10. Forja de Sever-Side Request

 

Continue lendo o artigo para entender o que essas vulnerabilidades representam – e como combatê-las.

1) Controle de Acesso Quebrado (Broken Access Control)

O problema

É importante manter sob controle as permissões de acesso de usuários a um site. Por exemplo, um cliente de e-commerce não deve ser capaz de acessar as áreas administrativas da loja – a prerrogativa deve ser exclusiva para administradores.

Quando há usuários com permissões amplas de gerenciamento, é preciso tomar um cuidado especial com a segurança: se alguém roubar o acesso, pode comprometer toda a aplicação (painéis de administração, servidores, bases de dados) e até mesmo redirecionar navegadores para outras URLs.

As soluções

  •       Adotar a abordagem de “privilégio mínimo”, dando a cada usuário apenas as permissões necessárias para cumprir suas funções;
  •       Deletar contas que já não são necessárias ou não estão mais ativas;
  •       Auditar atividades em servidores e sites para ter visibilidade das atividades;
  •       Se houver múltiplos pontos de acesso, ativar apenas os necessários;
  •       Desativar serviços que não estão sendo usados, para manter o servidor enxuto.

 

2) Falhas de Criptografia

O problema

Dados sensíveis (senhas, números de cartão de crédito, informações de saúde etc.) podem ser comprometidos por más práticas de criptografia: algoritmos datados; chaves de criptografia fracas ou reutilizadas; descuido no gerenciamento e rotatividade de chaves.

As soluções

  •       Desabilite os recursos de autocompletar e o caching em formulários de coleta de dados;
  •       Reduza tanto quanto possível a superfície de dados;
  •       Criptografe os dados quando estiverem em trânsito ou em repouso;
  •       Use as técnicas de criptografia mais atualizadas;
  •       Use recursos fortes de adaptação e salted hashing ao salvar senhas.

 

3) Injeção

O problema

Injeções são códigos maliciosos inseridos em aplicações web para atacar a estrutura ou coletar dados.

As soluções

  •       Separe comandos e dados, para evitar ataques que substituem dados com execuções de comando indesejadas;
  •       Codifique SQL queries com parâmetros, ao invés de estruturar o comando apenas com input de conteúdos por parte do usuário;
  •       Use APIs seguras para eliminar os intérpretes;
  •       Implemente validações positivas de servidor;
  •       Adote um sistema de segurança capaz de detectar comportamentos suspeitos de clientes.

 

4) Design Inseguro

O problema

Esse conceito (que pode ser traduzido como “fraco ou ausente design de controle”) é bastante amplo e envolve aspectos como modelagem de ameaças, padrões de design de segurança e arquiteturas de referência.

As soluções

  •       Estabeleça e adote um ciclo de desenvolvimento ordenado por profissionais de segurança de aplicações, que ajudem a definir medidas de segurança e privacidade;
  •       Crie e use uma biblioteca de componentes e padrões de design de segurança;
  •       Use modelagem de ameaças na hora de criar autenticações, controles de acesso, lógica de negócios e fluxos-chave;
  •       Inclua linguagem e controle de segurança em histórias de usuários;
  •       Integre checagens de plausibilidade em cada nível da aplicação;
  •       Escreva testes de unidade e de integração para garantir que todos os fluxos importantes são resistentes aos modelos de ameaça;
  •       Limite o consumo de recursos para usuários e serviços.

5) Má Configuração de Segurança

O problema

De todas as vulnerabilidades listadas aqui, esta é a mais comum (segundo estudo do Gartner, cerca de 95% das brechas na Nuvem são resultados de erro humano). Entre as falhas dessa categoria, temos configurações incompletas, falhas na configuração de cabeçalhos de HTTP, mensagens de erro que mostram informações sensíveis e armazenamentos em nuvem “acessíveis demais”.

As soluções

  •       Use templates pré-configurados que cumpram as políticas de segurança da organização;
  •       Mantenha uma biblioteca de imagens de contêiner devidamente configuradas;
  •       Aplique plataformas mínimas e remova funcionalidades e serviços não utilizados;
  •       Monitore continuamente recursos, aplicações e servidores da nuvem para identificar (e remediar o quanto antes) problemas de configuração de segurança.

 

6) Componentes Vulneráveis ou Datados

O problema 

Um volume impressionante de vulnerabilidades se esconde em componentes de software que chamam pouco a atenção dos desenvolvedores. Daí a importância de analisá-los de maneira contínua e eficiente.

As soluções

  •       Todos os componentes integrados no framework da organização devem ter sua configuração gerenciada;
  •       Use um scanner que seja capaz de identificar todos os componentes a serem monitorados;
  •       O escaneamento deve ser aprimorado com o auxílio de uma base de dados de vulnerabilidades;
  •       Automatize tanto quanto possível o fluxo de gerenciamento de patches (identificação, teste e aplicação), para minimizar os riscos operacionais.

 

7) Falhas de Identificação e Autenticação

O problema

Essa categoria de vulnerabilidade combina os itens 1 e 5: sem um gerenciamento apropriado de acessos, há um elevado risco de invasão usando-se as credenciais de usuários.

As soluções

  •       Implemente autenticação em múltiplos fatores;
  •       Não faça deploy com credenciais padrão, especialmente se estiver usando usuários com privilégios administrativos;
  •       Exija senhas fortes;
  •       Monitore tentativas falhas de login;
  •       Use um gerenciador de sessões que seja seguro e gere IDs de sessão aleatórios e com limite de tempo. Importante: nunca inclua IDs de sessão em URLs.

 

8) Falhas de Integração de Software e Dados

O problema

Essa categoria se refere a códigos e infraestrutura que não protegem contra violações de integridade. Como exemplo, podemos citar programas que usem plugins, bibliotecas ou módulos de fontes não confiáveis.

As soluções

  •       Use assinaturas digitais ou recursos similares para garantir que o programa ou os dados são autênticos e não foram adulterados;
  •       Implemente procedimentos de revisão para modificações de código e de configurações;
  •       Garanta que bibliotecas e dependências (como npm ou Maven) usem repositórios confiáveis. Nota: se você tiver um perfil de alto risco, considere a possibilidade de hospedar um repositório interno;
  •       Garanta que seu pipeline de CI/CD tenha segregação, configuração e controle de acesso apropriados;
  •       Use verificações de integridade ou assinaturas digitais para identificar alterações e replays ao lidar com dados não assinados ou não encriptados.

 

9) Insuficiência de Logging e Monitoramento

O problema

O intervalo entre um ataque e a sua identificação pode durar meses – isso quando uma identificação… Tempo mais do que suficiente para que os hackers possam corromper bases de dados, adulterar servidores, plantar códigos maliciosos e roubar dados sensíveis.

As soluções

  •       Use um software de logging e auditoria capaz de detectar rapidamente atividades suspeitas ou tentativas de acesso não autorizadas;
  •       Analise periodicamente as tentativas de ataque, mesmo aquelas que falharam, para aprimorar suas políticas de segurança e identificar as fontes dos ataques.

 

10) Forja de Sever-Side Request

O problema

Essa falha de segurança (conhecida pela sigla SSRF – Server-Side Request Forgery) permite que o hacker force uma aplicação server-side a enviar requisições de HTTP para qualquer domínio. Isso pode ocorrer mesmo com aplicações protegidas por firewall, VPN ou outros meios de controle de acesso de rede.

As soluções

  •       Implemente validações de input;
  •       Use expressões regulares (RegEx);
  •       Aceite apenas formatos de endereços de IP apropriados (IPv4 ou IPv6);
  •       Valide nomes de domínios recebidos;
  •       Para comparar com a lista de permissões, use o valor da biblioteca de método/output como endereço de IP.

 

Uma segurança mal configurada pode colocar tudo a perder com a sua aplicação, por isso é imprescindível contar com o apoio de profissionais experientes e capacitados. Clique aqui e agende uma conversa com um especialista Prime Control!

Newsletter

Assine nossa newsletter e seja avisado sobre novos artigos, cases, eventos e muito mais.

E-books e Relatórios

Conheça nossa base de ebooks, artigos, relatórios e cases. Aprenda sobre as boas práticas de testes, qualidade de software e muito mais.

Tudo disponível para download gratuitamente.