← Base de Vulnerabilidades
Autorização A01:2021-Broken Access Control CVSS 8.8

Broken Access Control — Controle de Acesso Quebrado

Broken Access Control é o risco #1 do OWASP Top 10 2021. Engloba IDOR, escalada de privilégio e bypass de autorização. Veja testes e remediação para APIs REST.

Comum em: Todas as aplicações web e APIs — a mais universal das vulnerabilidades · Dificuldade: Variável — de trivial (rota sem auth) a complexa (lógica de negócio)

O Que É Broken Access Control

Broken Access Control (Controle de Acesso Quebrado) é a categoria mais ampla e mais prevalente de vulnerabilidades — #1 no OWASP Top 10 2021. Engloba: IDOR (acesso a recursos de outros usuários), escalada de privilégio (usuário vira admin), bypass de middleware de autenticação, e acesso a rotas administrativas sem autorização. Em APIs REST, manifesta-se quando o servidor não verifica consistentemente se o usuário autenticado tem permissão para a ação específica que está realizando.

Exemplo Real de Ataque

HTTP Request / Response
# Bypass de autorização em rota admin
# UI bloqueia a rota, mas a API não tem middleware de autenticação:
GET /api/v1/admin/relatorios/financeiro
# Via browser: redireciona para /login
# Via curl sem token:
curl https://api.empresa.com.br/api/v1/admin/relatorios/financeiro

HTTP/1.1 200 OK  ← Sem autenticação, retorna dados de todos os clientes!
[{"id": 1, "cpf": "...", "saldo": 14750.00}, ...]

Impacto no Negócio e Compliance

Acesso não autorizado a dados de clientes (violação LGPD), ações administrativas por usuários comuns (criação de usuários, acesso a dados de todos os tenants), exfiltração massiva de dados. É a causa raiz de grande parte dos vazamentos de dados reportados no Brasil nos últimos anos.

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N

Como Remediar

// ✅ Middleware de autorização em TODAS as rotas protegidas
// Express.js — exemplo com middleware por rota e role

const requireAuth = (req, res, next) => {
  if (!req.user) return res.status(401).json({error: 'Não autenticado'});
  next();
};

const requireRole = (...roles) => (req, res, next) => {
  if (!roles.includes(req.user.role)) {
    return res.status(403).json({error: 'Sem permissão'});
  }
  next();
};

// Aplique em todas as rotas — nunca confie apenas na UI
router.get('/admin/relatorios', requireAuth, requireRole('admin'), handler);
router.get('/admin/usuarios', requireAuth, requireRole('admin', 'support'), handler);

// ✅ Princípio: deny-by-default — bloqueie tudo, libere explicitamente

Como a Veyronn Detecta Esta Vulnerabilidade

Conduzimos testes de controle de acesso sistemáticos: acesso horizontal (User A vs User B), vertical (User vs Admin), bypass de autenticação em rotas protegidas, e acesso a funcionalidades não expostas na UI mas disponíveis via API.

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.