As 10 principais vulnerabilidades do OWASP
15 de outubro de 2020
0 minutos de leituraAplicações nativas da nuvem, com suas arquiteturas distribuídas compostas por muitas bibliotecas e serviços de terceiros, são alvos atraentes para hackers. O fato de 82% de todas as vulnerabilidades serem encontradas no código das aplicações não passa despercebido pelos invasores, que buscam usar esse vetor para comprometer as redes onde as aplicações são implantadas. Por isso, proteger aplicações web tornou-se uma necessidade crítica para os negócios.
O que é o OWASP?
O Open Web Application Security Project (OWASP) é uma comunidade global sem fins lucrativos que busca promover a segurança de aplicações na web. Um dos princípios centrais do OWASP é disponibilizar sua base de conhecimento de forma gratuita e acessível em seu site. Com dezenas de milhares de membros e centenas de núcleos, o OWASP é considerado uma fonte altamente confiável, e desenvolvedores contam com suas orientações essenciais sobre segurança de aplicações web e segurança de APIs.
Todo desenvolvedor de aplicações, independentemente do nível de experiência, precisa se esforçar para entender as vulnerabilidades de segurança no código e evitar falhas de segurança de aplicações frustrantes e muitas vezes dispendiosas. O que é o OWASP Top 10?
A cada poucos anos, o OWASP revisa e publica sua lista das 10 principais vulnerabilidades de aplicações web. A lista inclui não apenas as principais ameaças do OWASP Top 10, mas também o possível impacto de cada vulnerabilidade e como evitá-las. Ela é compilada a partir de diversas fontes especializadas, como consultores e fornecedores de segurança e equipes de segurança de empresas e organizações de todos os portes. É reconhecida como um guia essencial de boas práticas de segurança para aplicações web.
O OWASP publicou recentemente o OWASP Top 10 de 2021, com três novas categorias, quatro categorias cujos nomes e escopo foram alterados e algumas consolidações na lista.
O OWASP Top 10 tem como principal objetivo conscientizar. No entanto, desde sua estreia em 2003, empresas passaram a usá-lo como um padrão de fato do setor para AppSec. Uma análise atenta do documento mostra que ele destaca especificamente a quantidade de CWEs (Common Weakness Enumeration, ou Enumeração de Fraquezas Comuns) associadas a cada categoria.
Prepare-se para vulnerabilidades de dia zero com a Snyk
Saiba como a Snyk ajuda seus desenvolvedores a corrigir vulnerabilidades de dia zero mais rapidamente, reduzindo a exposição e os riscos.
A lista mais recente das 10 principais vulnerabilidades do OWASP e dos riscos de segurança para aplicações web
A lista mais recente do OWASP Top 10 foi publicada em 24 de setembro de 2021, durante o 20º aniversário do OWASP. Se você conhece a lista de 2020, vai notar grandes mudanças na edição de 2021: a injeção de SQL deixou o primeiro lugar, ocupado agora pelo controle de acesso quebrado.
As 10 principais vulnerabilidades do OWASP
Nesta seção, vamos explorar cada uma das 10 principais vulnerabilidades do OWASP para entender melhor seus impactos e como evitá-las.
1. Falhas no controle de acesso
Os controles de acesso de segurança de um site devem limitar cada visitante às páginas ou seções necessárias para seu tipo de usuário. Por exemplo, administradores de um site de comércio eletrônico precisam poder adicionar links ou promoções. Essas funções não devem estar disponíveis para outros tipos de visitantes.
É importante incentivar desenvolvedores a adotar a disciplina de “segurança em primeiro lugar” para evitar armadilhas, como sistemas de gerenciamento de conteúdo (CMS) que concedem permissões de acesso total por padrão, inclusive no nível de administrador. Falhas no controle de acesso podem permitir que visitantes acessem painéis administrativos, servidores, bancos de dados e outras aplicações críticas para os negócios. Essa ameaça do OWASP Top 10 pode até redirecionar navegadores para URLs maliciosas.
Como corrigir falhas no controle de acesso
Há várias maneiras de corrigir vulnerabilidades de controle de acesso:
Adote o princípio do menor privilégio, concedendo a cada função o menor nível de acesso necessário para realizar suas tarefas.
Exclua contas que não são mais necessárias ou estão inativas.
Audite as atividades em servidores e sites para saber quem está fazendo o quê e quando.
Se houver vários pontos de acesso, desative aqueles que não forem necessários naquele momento.
Mantenha os servidores enxutos, desativando serviços desnecessários.
2. Falhas criptográficas
Dados em trânsito e em repouso — como senhas, números de cartão de crédito, registros de saúde, informações pessoais e segredos comerciais — precisam de proteção extra devido ao risco de falhas criptográficas (exposição de dados confidenciais). Isso é especialmente importante quando os dados estão sujeitos a leis de privacidade como GDPR, CCPA e outras. Algum dado é enviado em texto simples? Há algoritmos ou protocolos criptográficos desatualizados ou inseguros em uso por padrão ou em código antigo? É possível que chaves criptográficas padrão estejam sendo usadas, que chaves fracas estejam sendo geradas e reutilizadas ou que o gerenciamento e a rotação adequados de chaves estejam sendo negligenciados? É possível incluir chaves criptográficas nos repositórios de código-fonte? A criptografia não é obrigatória? Os dados recebidos estão criptografados?
Como corrigir falhas criptográficas
Desative o preenchimento automático em formulários que coletam dados.
Reduza ou minimize a superfície de exposição dos dados.
Criptografe os dados em trânsito e em repouso.
Use as técnicas de criptografia mais atuais.
Desative o armazenamento em cache em formulários que coletam dados.
Use funções de hash fortes, adaptativas e com salt para armazenar senhas.
3. Injeção
Vulnerabilidades de injeção podem ocorrer quando uma consulta ou comando é usado para inserir dados não confiáveis no interpretador por meio de injeção de SQL, de comandos do sistema operacional, NoSQL ou LDAP. Os dados maliciosos inseridos por esse vetor enganam o interpretador e fazem a aplicação executar ações para as quais não foi projetada, como gerar comandos inesperados ou acessar dados sem a autenticação adequada.
Qualquer aplicação que aceite parâmetros como entrada pode estar vulnerável a ataques de injeção. O nível de risco está diretamente relacionado ao rigor das medidas de validação de entrada da aplicação.
Como corrigir vulnerabilidades de injeção
Ataques de injeção podem ser evitados com uma combinação das seguintes abordagens:
Separe comandos e dados para evitar ataques que substituem dados por comandos executados indevidamente.
Escreva consultas SQL com parâmetros, em vez de montar o comando apenas com o conteúdo fornecido pelo usuário. Elas são chamadas de consultas parametrizadas ou instruções preparadas.
Elimine o interpretador usando uma API segura.
Implemente validação positiva no servidor e um sistema de detecção de intrusões que identifique comportamentos suspeitos no cliente.
4. Design inseguro
Design inseguro é um termo abrangente que inclui vários tipos de falha e é definido como “ausência ou deficiência no projeto de controles”. Modelagem de ameaças, padrões de design seguro e arquiteturas de referência estão entre as novas categorias de 2021, que reforçam a necessidade de ampliar o uso dessas práticas. Como comunidade, precisamos ir além de “shift left” no código e incluir tarefas prévias à codificação, essenciais aos princípios de Secure by Design.
Como corrigir problemas de design inseguro
Para ajudar a analisar e implementar medidas de segurança e privacidade, estabeleça e use um ciclo de vida de desenvolvimento seguro em parceria com profissionais de AppSec.
Crie e use uma biblioteca de padrões ou componentes de design seguro prontos para uso.
Use a modelagem de ameaças em fluxos críticos de autenticação, controle de acesso, lógica de negócios e outros fluxos essenciais.
Inclua requisitos e controles de segurança nas histórias de usuário.
Implemente verificações de plausibilidade em cada camada da aplicação, do frontend ao backend.
Escreva testes unitários e de integração para garantir que todos os fluxos importantes resistam às ameaças identificadas no modelo. Liste os casos de uso e de uso indevido para cada camada da aplicação.
Divida as camadas do sistema e da rede de acordo com os requisitos de exposição e proteção.
Limite o consumo de recursos por usuários e serviços.
5. Configuração de segurança incorreta
A Gartner estima que até 95% das violações na nuvem são resultado de erros humanos. Configurações incorretas de segurança são uma das principais causas dessa estatística, e o OWASP observa que essa é a vulnerabilidade mais comum entre as dez principais. Há muitos tipos de configuração incorreta que expõem as empresas a riscos de cibersegurança, incluindo:
Manter configurações padrão inseguras
Recursos de armazenamento em nuvem com acesso amplo demais
Configurações incompletas
Cabeçalhos HTTP configurados incorretamente
Mensagens de erro detalhadas que contêm informações confidenciais
Como corrigir configurações de segurança incorretas
Configurações de segurança incorretas podem ocorrer em praticamente qualquer lugar do ambiente, incluindo dispositivos conectados à rede, bancos de dados, servidores web e de aplicações e contêineres. As práticas a seguir ajudam a manter o ambiente bem configurado:
Use modelos para implantar ambientes de desenvolvimento, teste e produção pré-configurados de acordo com as políticas de segurança da organização.
Use arquiteturas de aplicações segmentadas para minimizar os riscos de elementos configurados de forma insegura e mantenha uma biblioteca de imagens de contêiner configuradas corretamente.
Implante plataformas mínimas e remova recursos e serviços não utilizados.
Monitore continuamente recursos de nuvem, aplicações e servidores em busca de configurações de segurança incorretas e corrija os problemas detectados em tempo real, usando fluxos de trabalho automatizados sempre que possível.
6. Componentes vulneráveis e desatualizados
Aplicações web distribuídas modernas costumam incorporar componentes de código aberto, como bibliotecas e frameworks. Qualquer componente com uma vulnerabilidade conhecida se torna um elo fraco que pode comprometer a segurança de toda a aplicação.
Embora o uso de componentes de código aberto com vulnerabilidades conhecidas apareça abaixo em termos de gravidade dos problemas de segurança, ele ocupa o primeiro lugar quando o OWASP Top 10 é classificado pela frequência com que uma vulnerabilidade foi a causa raiz de uma violação de dados real.
Como corrigir componentes vulneráveis e desatualizados
A defesa mais eficaz é a análise contínua de todos os componentes do código em busca de vulnerabilidades conhecidas, seguida pela aplicação de um patch ou outra correção o mais rápido possível. Algumas práticas recomendadas aumentam a eficácia dessa defesa:
Todos os componentes incorporados aos frameworks da empresa devem estar sob gerenciamento de configuração.
O scanner precisa detectar automaticamente todos os componentes que devem ser monitorados.
A análise deve usar uma base de dados de vulnerabilidades abrangente e enriquecida com dados de inteligência de ameaças.
Os fluxos de trabalho de gerenciamento de patches — para identificar, testar e implantar o patch correto — devem ser automatizados ao máximo para minimizar o risco operacional associado à aplicação de patches.
7. Falhas de identificação e autenticação
Quando as aplicações executam incorretamente funções relacionadas ao gerenciamento de sessões ou à autenticação de usuários, invasores podem comprometer senhas, chaves de segurança ou tokens de sessão e assumir, temporária ou permanentemente, a identidade e as permissões de outros usuários. Essa vulnerabilidade representa uma grave ameaça à segurança da aplicação e dos recursos que ela acessa, além de poder comprometer seriamente outros ativos conectados à mesma rede.
Como corrigir falhas de autenticação
Estas são as principais recomendações de boas práticas do OWASP para reduzir vulnerabilidades de autenticação quebrada:
Implemente autenticação multifator.
Não implante aplicações com credenciais padrão, especialmente para usuários com privilégios de administrador.
Exija senhas fortes.
Monitore atentamente as tentativas de login malsucedidas.
Use um gerenciador seguro de sessões que gere IDs de sessão aleatórios e com validade limitada. Nunca inclua IDs de sessão em URLs.
8. Falhas de integridade de software e dados
Falhas de integridade de software e dados são aquelas em que o código e a infraestrutura não protegem contra violações de integridade. Um exemplo é um programa que usa plug-ins, bibliotecas ou módulos de fontes, repositórios ou redes de distribuição de conteúdo (CDNs) não confiáveis. Acesso não autorizado, código malicioso ou comprometimento do sistema podem ser riscos de um pipeline de CI/CD desprotegido. Além disso, muitos programas agora têm recursos de atualização automática que permitem obter e aplicar atualizações em aplicativos previamente confiáveis sem as verificações de integridade necessárias. Com esse recurso, invasores podem distribuir e executar as próprias atualizações em todos os sistemas.
Como corrigir falhas de integridade de software e dados
Use assinaturas digitais ou medidas semelhantes para garantir que o programa ou os dados sejam autênticos e não tenham sido adulterados.
Para reduzir o risco de introdução de código ou configurações prejudiciais no pipeline de desenvolvimento, implemente um processo de revisão para alterações no código e nas configurações.
Verifique se bibliotecas e dependências, como npm ou Maven, usam repositórios confiáveis. Se o seu perfil de risco for mais elevado, considere hospedar um repositório interno aprovado com componentes conhecidos e confiáveis.
Para proteger a integridade do código durante os processos de build e deploy, verifique se o pipeline de CI/CD tem segregação, configuração e controles de acesso adequados.
Não envie dados serializados sem assinatura ou criptografia a clientes não confiáveis sem algum tipo de verificação de integridade ou assinatura digital para detectar adulterações ou ataques de repetição.
9. Registro e monitoramento insuficientes
Estudos indicam que o tempo entre o ataque e sua detecção pode chegar a 200 dias e, muitas vezes, ser ainda maior. Esse intervalo dá aos criminosos cibernéticos tempo de sobra para adulterar servidores, corromper bancos de dados, roubar informações confidenciais e instalar código malicioso.
Como corrigir
Implemente ferramentas de registro e auditoria prontamente disponíveis para detectar rapidamente atividades suspeitas e tentativas de acesso não autorizado. Mesmo quando um ataque detectado não tem sucesso, o registro e o monitoramento são ferramentas valiosas para analisar a origem e o vetor do ataque e entender como reforçar políticas e controles de segurança para impedir invasões.
10. Falsificação de solicitação do lado do servidor (SSRF)
A falsificação de solicitação do lado do servidor (também chamada de SSRF) é uma falha de segurança na web que permite que um invasor obrigue um aplicativo do lado do servidor a enviar solicitações HTTP para qualquer domínio que ele escolher.
Uma falha de SSRF ocorre quando um aplicativo web busca um recurso remoto sem validar a URL fornecida pelo usuário. Mesmo que o programa esteja protegido por um firewall, VPN ou outro tipo de lista de controle de acesso à rede, um invasor pode forçá-lo a enviar uma solicitação forjada para um destino inesperado.
Como corrigir
Implemente a validação de entradas.
Use expressões regulares (RegEx).
Aceite apenas o formato de endereço IP esperado (IPv4 ou IPv6).
Para comparar com a lista de permissões, use como endereço IP o valor retornado pela biblioteca de método/saída.
Valide os nomes de domínio recebidos.
Consulte a série de guias práticos da OWASP.
Quais são as outras vulnerabilidades que não estão na lista da OWASP?
A OWASP afirma com toda clareza em sua metodologia que, por definição, a lista Top 10 é apenas um subconjunto de questões importantes de segurança, e que as organizações devem estar atentas a outros riscos de segurança.
Você deve acompanhar outras vulnerabilidades zero-day recém-descobertas em ambientes reais e manter um plano de resposta para lidar com elas quando surgirem.

Adorado por desenvolvedores. Confiável para a segurança.
As ferramentas da Snyk, pensadas para desenvolvedores, oferecem segurança integrada e automatizada para atender às suas necessidades de governança e conformidade.
Vulnerabilidades da OWASP: perguntas frequentes
O que é uma vulnerabilidade OWASP?
Vulnerabilidades OWASP são falhas ou problemas de segurança publicados pelo Open Web Application Security Project. Os problemas relatados por empresas, organizações e profissionais de segurança são classificados de acordo com a gravidade do risco que representam para aplicações web.
Quais são as 10 principais vulnerabilidades da OWASP?
A lista das 10 principais vulnerabilidades da OWASP é compilada e publicada a cada três ou quatro anos, destacando as vulnerabilidades de segurança mais críticas. Além disso, a lista traz exemplos das falhas, explica como elas podem ser exploradas por invasores e sugere métodos para reduzir ou eliminar a exposição das aplicações.
Qual é o risco número 1 de segurança de aplicações apontado pela OWASP?
A injeção é a vulnerabilidade número 1 apontada pela OWASP. Ela pode enviar dados não confiáveis por meio de SQL ou de outros caminhos, como LDAP, permitindo que o interpretador acesse dados não autorizados ou execute comandos não previstos pela aplicação.
Como testar vulnerabilidades do OWASP Top 10?
A OWASP oferece um guia de testes detalhado, com casos de teste para diversos cenários. Muitas equipes de desenvolvimento adotaram uma abordagem mais automatizada, usando softwares para analisar o código em busca de vulnerabilidades, gerar alertas automaticamente e aplicar as práticas recomendadas de forma consistente.
Como usar o OWASP Top 10?
A lista OWASP Top 10 é uma ferramenta para que desenvolvedores e equipes de segurança avaliem práticas de desenvolvimento e reflitam sobre a segurança de aplicações web. Embora não abranja todas as vulnerabilidades de aplicações web, ela oferece um parâmetro de referência que dá mais visibilidade às questões de segurança.
