OWASP Top 10:2025 explicado em português
As 10 categorias de risco da lista OWASP 2025, o que mudou desde 2021, um exemplo real de cada uma em aplicações web e com Supabase, e como cada uma é testada em uma auditoria.
O que é o OWASP Top 10
O OWASP Top 10 é a lista dos riscos de segurança mais críticos em aplicações web, mantida pela OWASP, uma fundação sem fins lucrativos. É a referência mais usada em auditorias, contratos e certificações, e a versão 2025 é a primeira atualização desde 2021.
A lista não é um checklist completo: é o mínimo que toda auditoria precisa cobrir. Cada categoria reúne dezenas de falhas específicas (CWEs).
O que mudou desde 2021
Duas categorias novas, uma que deixou de existir e várias mudanças de posição. A maior mudança de leitura: configuração insegura subiu para o segundo lugar, e a cadeia de suprimentos (dependências, build e pipeline) virou categoria própria.
| Categoria | 2021 | 2025 |
|---|---|---|
| Broken Access Control | A01 | A01, agora inclui SSRF |
| Security Misconfiguration | A05 | A02 |
| Vulnerable and Outdated Components | A06 | A03, ampliada para Software Supply Chain Failures |
| Cryptographic Failures | A02 | A04 |
| Injection | A03 | A05 |
| Insecure Design | A04 | A06 |
| Identification and Authentication Failures | A07 | A07, como Authentication Failures |
| Software and Data Integrity Failures | A08 | A08 |
| Security Logging and Monitoring Failures | A09 | A09, como Logging and Alerting Failures |
| Server-Side Request Forgery (SSRF) | A10 | Deixou de ser categoria própria |
| Mishandling of Exceptional Conditions | — | A10, nova |
A01: Controle de acesso quebrado
Broken Access Control
O sistema deixa um usuário ver ou fazer o que não deveria.
Exemplo: Trocar o ID na URL (pedido 1042 por 1043) e ver o pedido de outro cliente. Tabela do Supabase sem RLS.
Como é testada: Matriz papel × recurso × ação com usuários reais de cada perfil; troca de IDs em toda requisição.
A02: Configuração insegura
Security Misconfiguration
Padrões inseguros, recursos desnecessários ligados, cabeçalhos ausentes.
Exemplo: Source maps publicados, CORS aberto para qualquer origem, painel de administração exposto.
Como é testada: Leitura do build publicado, cabeçalhos, CSP, CORS e TLS; revisão da configuração da nuvem.
A03: Falhas na cadeia de suprimentos
Software Supply Chain Failures
Dependências, ferramentas de build e pipeline comprometidos ou vulneráveis.
Exemplo: Pacote npm com vulnerabilidade conhecida; ação do GitHub referenciada por tag que pode mudar.
Como é testada: Análise de dependências confirmando se a função afetada é usada; lockfile; ações fixadas por hash; SBOM.
A04: Falhas de criptografia
Cryptographic Failures
Dado sensível sem proteção em trânsito ou em repouso, ou algoritmo fraco.
Exemplo: Backup do banco sem criptografia; senha guardada com hash rápido sem salt.
Como é testada: TLS, criptografia em repouso, armazenamento de senhas e gestão de chaves.
A05: Injeção
Injection
Entrada do usuário interpretada como código ou comando.
Exemplo: SQL montado com texto do usuário; XSS em comentário exibido sem escape.
Como é testada: Cada entrada rastreada até o destino (banco, tela, shell, URL) por análise estática e testes.
A06: Design inseguro
Insecure Design
Falha na regra de negócio, não no código.
Exemplo: Cupom aplicável infinitas vezes; reset de senha que não expira.
Como é testada: Modelagem de ameaças por fluxo crítico e casos de abuso.
A07: Falhas de autenticação
Authentication Failures
Login, sessão e recuperação de conta frágeis.
Exemplo: Login sem limite de tentativas; sessão que continua válida após o logout.
Como é testada: Fluxos de login, token, reset, MFA e logout testados um a um.
A08: Falhas de integridade de software ou dados
Software or Data Integrity Failures
Código ou dados aceitos sem verificar a origem.
Exemplo: Webhook de pagamento aceito sem conferir a assinatura; workflow que roda código de forks com segredos.
Como é testada: Assinaturas de webhook, integridade do pipeline e de atualizações.
A09: Falhas de registro e alerta
Security Logging and Alerting Failures
Ataques que não deixam rastro nem disparam alerta.
Exemplo: Mil tentativas de login sem nenhum registro; leitura em massa de dados sem alerta.
Como é testada: Eventos de teste que precisam aparecer no log e disparar alerta.
A10: Tratamento incorreto de condições excepcionais
Mishandling of Exceptional Conditions
Erros e situações inesperadas tratados de forma insegura.
Exemplo: Erro que devolve o stack trace e a consulta SQL; falha na verificação que libera o acesso em vez de negar.
Como é testada: Entradas inválidas, limites e falhas de dependências, conferindo que o sistema nega por padrão e não vaza detalhe.
Como a lista entra em uma auditoria
Na Salak, cada categoria é testada por pelo menos duas técnicas diferentes (por exemplo, análise estática e teste com usuários reais), e cada achado do relatório traz a categoria OWASP e o código CWE. O método mostra as 16 técnicas e onde cada categoria é coberta.