Conhecendo o Broken Object Level Authorization
O Broken Object Level Authorization, mais conhecido como (BOLA), esteve no topo da lista do OWASP API Security TOP 10 2019 ( e continua em 2023).
O que é o BOLA?
O BOLA é uma vulnerabilidade que se encontra em aplicações web, especificamente em APIs. Ela permite com que o atacante acesse informações que não os pertence, como dados pessoais, informações financeiras, documentos sigilosos de outros usuários.
Como ocorre o BOLA?
Essa vulnerabilidade ocorre quando a aplicação acessa dados registrados utilizando algum identificador (nome, apelido, ID) inserido pelo usuário. Se o sistema não estiver verificando o identificador, provavelmente estará vulnerável.
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!