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.
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
# 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.
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 explicitamenteComo 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.
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.
