Broken Object Property Level Authorization — Falhas de Acesso a Propriedades Sensíveis em APIs

Broken Object Property Level Authorization — Falhas de Acesso a Propriedades Sensíveis em APIs

A vulnerabilidade Broken Object Property Level Authorization (BOPLA) representa uma falha crítica de controle de acesso em APIs modernas, permitindo que usuários acessem ou modifiquem propriedades específicas de objetos sem possuir os privilégios adequados. Diferente de falhas que expõem objetos inteiros, esse problema ocorre em níveis mais granulares da estrutura de dados, tornando sua detecção mais complexa e ampliando os riscos de exposição de informações sensíveis.

Incluída no OWASP API Security Top 10 (2023), essa vulnerabilidade é comum em aplicações que retornam respostas excessivas de dados (excessive data exposure) ou não validam corretamente permissões em campos específicos de requisições e respostas. Quando explorada, pode permitir vazamento de dados confidenciais, manipulação de atributos críticos e elevação indevida de privilégios dentro da aplicação.

No OWSAP TOP 10 2023 RC foi adicionado a vulnerabilidade Broken Object Property Level Authorization que engloba Excessive Data Exposure e Mass Assignment. Veja na imagem abaixo:

Então, quando um usuário tem acesso a propriedades de um objeto sem possuir os privilégios necessarios, significa que a API está vulnerável a Broken Object Property Level Authorization.

Como explorar o Broken Object Property Level Authorization?

Uma das formas de explorar o Broken Object Property Level Authorization é alterar propriedades de um objeto que não teriamos privlégios para alterar. Um exemplo disso é o Mass Assignment, onde alteramos propriedades além das que foram configuradas para o usuário alterar. Para conhecer, explorar e corrigir o Mass Assignment, veja o artigo escrito em nosso blog:

Conhecendo o Mass Assignment
O que é o Mass Assignment?O Mass Assignment é uma vulnerabilidade que permite com que o atacante manipule informações que não poderiam ser atualizadas ou inseridas por um usuário comum no banco de dados. Essa vulnerabilidade geralmente ocorre quando a aplicação não valida os campos enviados pelo usu…

Outra forma de explorar o Broken Object Property Level Authorization é encontrando endpoints que expõe propriedades de um Objeto, segue o exemplo abaixo:

Cenário:
Um aplicativo de uma rede social tem uma funcionalidade de reportar usuários mal intencinados. Nessa funcionalidade, o aplicativo vai enviar uma requisição POST para /api/report/user:

POST /api/report/user

userid=9XuMka&reported_by=4LksI3

E a aplicação responde com as seguintes informações:

{
	"userid_reported": "9XuMka",
    	"user_reported": {
    		"name": "John",
        	"lastName": "Doe",
        	"email": "[email protected]",
        	"age": "25",
            "cpf": "999.999.999-99",
            "birthdate": "1998"
    	}
}

Veja que a aplicação expôs os dados do usuário reportado, como: nome, sobrenome, email, idade, cpf e data de nascimento.

Como se proteger contra o Broken Object Property Level Authorization?

Quando estiver desenvolvendo uma API, fique atento as funcionalidades que comunicam com propriedades de um objeto, como o Mass Assignment. Para proteger contra o Mass Assignment deve verificar e sanitizar o input do usuário para que ele não consiga alterar valores de outras propriedades.

Outro ponto importante é verificar a resposta que enviamos para uma requisição, pois não podemos expor propriedades que não foram especificadas na requisição do lado do cliente. No exemplo acima, vemos que na requisição foi especificado apenas o "userid" e a resposta nos trouxe o nome, sobrenome, email, idade, cpf e data de nascimento do usuário reportado. Isso é prejudicial, pois ajuda os atacantes realizarem phishing com a vítima.

Referências

Introduction to OWASP API Security Top 10 2023 (RC)
Introduction to API: An Application Programming Interface (API) is a component that enables communication between two different systems by following certain rules. It also adds a layer of abstraction between the two systems where the requester does not know how the other system has derived the resul…
API-Security/0xa3-broken-object-property-level-authorization.md at master · OWASP/API-Security
OWASP API Security Project. Contribute to OWASP/API-Security development by creating an account on GitHub.
API-Security/0xa3-excessive-data-exposure.md at master · OWASP/API-Security
OWASP API Security Project. Contribute to OWASP/API-Security development by creating an account on GitHub.
API-Security/0xa6-mass-assignment.md at master · OWASP/API-Security
OWASP API Security Project. Contribute to OWASP/API-Security development by creating an account on GitHub.