#cybersecurity #web #owasp #pentest

OWASP Top 10: As Vulnerabilidades Web Mais Críticas

Um guia prático sobre as 10 vulnerabilidades web mais comuns, com exemplos reais e como mitigá-las no seu código.

BS Breno Salomão ·

O OWASP Top 10 é a referência mais reconhecida para segurança em aplicações web. Atualizado periodicamente com base em dados reais de vulnerabilidades, ele serve como guia tanto para desenvolvedores quanto para profissionais de segurança.

A01 — Broken Access Control

A vulnerabilidade mais crítica da lista. Acontece quando usuários conseguem acessar recursos além de suas permissões.

Exemplo de código vulnerável:

# Flask — sem verificação de autorização
@app.route('/admin/users/<int:user_id>')
def get_user(user_id):
    return User.query.get(user_id)  # qualquer um pode acessar!

Correção:

@app.route('/admin/users/<int:user_id>')
@login_required
@require_role('admin')
def get_user(user_id):
    return User.query.get_or_404(user_id)

A02 — Cryptographic Failures

Dados sensíveis expostos por uso incorreto (ou ausência) de criptografia.

Erros comuns:

  • Senhas armazenadas em MD5 ou SHA1 sem salt
  • Transmissão de dados sensíveis via HTTP
  • Chaves criptográficas hardcoded no código

Boas práticas:

  • Use bcrypt ou argon2 para senhas
  • TLS 1.2+ obrigatório em produção
  • Nunca commite segredos — use variáveis de ambiente

A03 — Injection

SQL Injection ainda é um dos ataques mais explorados. Um input malicioso pode destruir seu banco de dados inteiro.

-- Vulnerável
SELECT * FROM users WHERE name = '" + input + "'

-- Input do atacante: ' OR '1'='1'; DROP TABLE users; --

Correção: sempre use queries parametrizadas ou ORMs:

# SQLAlchemy — seguro
User.query.filter_by(name=input_name).first()

A04 — Insecure Design

Falhas arquiteturais que não podem ser corrigidas apenas com patches. Exemplo: um sistema que permite brute-force ilimitado de senhas por não ter projetado rate limiting.

Princípios de design seguro:

  • Threat modeling desde o início
  • Princípio do menor privilégio
  • Defense in depth

A05 — Security Misconfiguration

Configurações padrão inseguras, mensagens de erro detalhadas, serviços desnecessários expostos.

Checklist básico:

  • Debug mode desligado em produção
  • Headers de segurança configurados (CSP, HSTS, X-Frame-Options)
  • Portas e serviços desnecessários fechados
  • Credenciais padrão alteradas

A06 — Vulnerable Components

Usar bibliotecas desatualizadas com CVEs conhecidas. O ataque à Equifax (2017) explorou exatamente isso — uma vulnerabilidade no Apache Struts que já tinha patch disponível.

# Auditoria de dependências Python
pip-audit

# Node.js
npm audit

Conclusão

Segurança não é feature — é requisito. O OWASP Top 10 é um excelente ponto de partida, mas o aprendizado contínuo é indispensável. Para ir mais fundo, recomendo o OWASP Testing Guide e praticar em labs como HackTheBox e TryHackMe.