OWASP Top 10: 2021

As vulnerabilidades mais críticas em aplicações web e como mitigá-las

security_guide.sh

$ Análise detalhada das 10 principais vulnerabilidades web

$ Com exemplos práticos e soluções eficazes

# Baseado no relatório oficial OWASP 2021

Introdução ao OWASP Top 10

O OWASP Top 10 é um documento essencial para desenvolvedores e profissionais de segurança, destacando as ameaças mais críticas para aplicações web.

riscos

$ Perda de dados sensíveis

$ Comprometimento de sistemas

$ Impacto financeiro e reputacional

benefícios

$ Melhor proteção para usuários

$ Conformidade com regulamentações

$ Redução de custos com segurança

As 10 Vulnerabilidades

A01:2021

Controle de Acesso Quebrado

Descrição

Falhas que permitem que usuários acessem recursos ou executem ações não autorizadas, ultrapassando suas permissões designadas.

Exemplos

exploit.sh
GET /admin/user?id=123 HTTP/1.1
# Acessando dados de outro usuário

POST /api/change-role HTTP/1.1
{"user_id": 456, "role": "admin"}
Elevação de Privilégio Acesso Não Autorizado Exposição de Dados

Mitigação

  • Implementar controle de acesso baseado em funções (RBAC)
  • Validar permissões em cada requisição
  • Limitar acesso a endpoints sensíveis
  • Implementar padrão "Negar por padrão"
solução.js
// Middleware de verificação de acesso
function checkPermission(req, res, next) {
if (req.user.role !== 'admin') {
return res.status(403).send('Acesso negado');
}
next();
}
RBAC JWT Validação Dupla
A02:2021

Falhas Criptográficas

Descrição

Proteção inadequada de dados sensíveis devido a más práticas criptográficas, como algoritmos fracos ou implementação incorreta.

Exemplos

vulnerability.sql
# Senhas armazenadas em texto claro
INSERT INTO users VALUES (1, 'admin', 'senha123');

# Uso de algoritmo de hash fraco
password = md5('senha123');
Dados Não Criptografados Chaves Fracas Violação de Privacidade

Mitigação

  • Usar algoritmos modernos (Argon2, bcrypt, PBKDF2)
  • Implementar HTTPS em todas as páginas
  • Gerenciar chaves de forma segura (HSM, KMS)
  • Não armazenar dados desnecessários
solution.js
// Usando bcrypt para hash de senhas
const bcrypt = require('bcrypt');
const saltRounds = 12;

const hash = await bcrypt.hash('senha123', saltRounds);
const match = await bcrypt.compare('senha123', hash);
TLS 1.3 HSM Argon2

Ferramentas Recomendadas

OWASP ZAP

Scanner automatizado de vulnerabilidades em aplicações web

Pentesting Automation

Burp Suite

Plataforma para testes de segurança em aplicações web

Proxy Scanner

ESLint Security

Plugin para identificar problemas de segurança em código JavaScript

SAST Code Analysis

Evolução do OWASP Top 10

2021 2017 Mudanças
A01: Controle de Acesso A5: Controle de Acesso ▲ 4 posições
A02: Falhas Criptográficas A3: Exposição de Dados Sensíveis Nova categorização
A03: Injeção A1: Injeção ▬ Mantida
A04: Design Inseguro Novo Nova categoria