Broken Object Level Authorization (BOLA) — Vazamento de Dados Sensíveis em APIs
A vulnerabilidade Broken Object Level Authorization (BOLA) é uma das falhas mais críticas em Cyber Security envolvendo APIs modernas, permitindo que atacantes acessem objetos e registros que deveriam estar protegidos por mecanismos de autorização.
Devido à sua alta incidência em aplicações reais, o BOLA ocupou o topo do ranking do OWASP API Security Top 10 (2019) e permanece como uma das ameaças mais relevantes na edição de 2023. A exploração dessa vulnerabilidade pode levar ao vazamento de informações pessoais, dados financeiros, documentos confidenciais e registros internos, comprometendo a privacidade dos usuários e a integridade do sistema.
Como ocorre o BOLA?
Essa vulnerabilidade ocorre quando a aplicação não valida corretamente se o usuário autenticado possui permissão para acessar um recurso específico, expondo dados sensíveis de outros usuários.
Explorando o BOLA
Na maioria das vezes, a exploração dessa vulnerabilidade será simples. Imagine que uma API está fazendo uma busca nos registros do banco de dados através de um ID contido nos cabeçalhos da requisição HTTP. Por exemplo: X-Profile-Id. Se algum usuário mal intencionado, alterasse o ID contido nesse cabeçalho para "1", a aplicação iria retornar os dados do perfil do usuário 1. Essa vulnerabilidade é muito critica em cenários que contém informações sigilosas.
Vamos praticar!
Para explorarmos o BOLA, criamos um laboratório simples.
Entrando na página principal, vemos um botão para visualizar os dados do usuário "guest":

Ao clicar no botão "View Profile", recebemos um json que contém dados do usuário. Podemos analisar a requisição HTTP que o javascript está realizando quando clicamos neste botão. Para isso, podemos utilizar o Burp Suite ou qualquer outro proxy de sua preferência.

Vemos que no cabeçalho da requisição, o X-Profile-Id se refere ao ID do nosso usuário. Se alterarmos o valor desse cabeçalho para "1", poderíamos ler os dados do usuário pertencente ao ID 1.

Viu só como essa vulnerabilidade é simples de se explorar?! Apesar de ser algo simples, geralmente passa despercebido pelos desenvolvedores. Por esse motivo ela é muito comum em programas de bug bounty. No cenário demonstrado acima, essa vulnerabilidade pode ser abusada para obter dados pessoais dos usuários. Agora, imagine essa vulnerabilidade em um sistema bancário, ou em um sistema governamental... Seria bem crítico, não acha? Nem sempre essas vulnerabilidades serão classificadas como baixa criticidade, pois tudo depende do cenário e o impacto que um atacante poderia causar.
Como protegemos uma aplicação contra o BOLA?
Para protegermos uma aplicação contra essa vulnerabilidade é bem simples, basta verificarmos se o identificador do usuário é igual ao identificador enviado na requisição. No cenário acima, poderíamos verificar se o cabeçalho "X-Profile-Id" é igual ao "ID" do usuário em que estamos autenticados. Caso ele seja diferente, podemos bloquear a solicitação.
Referencias:
Laboratório
Onde praticar Hacking ?
O Hacking Club é uma plataforma de treinamento em cybersecurity, que permite você aprender hacking de forma totalmente prática.
Temos mais de 50 ambientes com vulnerabilidades reais com write-ups para você treinar e aprender hacking. Semanalmente lançamos máquinas gratuitas para você praticar e se desafiar no hacking!
