Conhecendo o Broken Object Level Authorization

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:

API-Security/0xa1-broken-object-level-authorization.md at master · OWASP/API-Security
OWASP API Security Project. Contribute to OWASP/API-Security development by creating an account on GitHub.
OWASP API Security Project | OWASP Foundation
OWASP API Security Project on the main website for The OWASP Foundation. OWASP is a nonprofit foundation that works to improve the security of software.
API-Security/0x11-t10.md at master · OWASP/API-Security
OWASP API Security Project. Contribute to OWASP/API-Security development by creating an account on GitHub.

Laboratório

GitHub - crowsec-edtech/Lab-Broken-Object-Level-Authorization: Lab de Broken Object Level Authorization (BOLA)
Lab de Broken Object Level Authorization (BOLA). Contribute to crowsec-edtech/Lab-Broken-Object-Level-Authorization development by creating an account on GitHub.

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!