OWASP TOP 10 API - Broken Function Level Authorization

OWASP TOP 10 API - Broken Function Level Authorization

No OWASP TOP 10 API 2023 foi incluída uma nova vulnerabilidade conhecida como Broken Function Level Authorization. Nesse artigo vamos conhecer essa vulnerabilidade.

O que é o Broken Function Level Authorization?

O Broken Function Level Authorization é uma vulnerabilidade que permite com que um atacante acesse funções em endpoints que ele não deveria ter acesso.

Cenários em que encontramos o Broken Function Level Authorization

Imagine que um jogo utilize uma API para gerenciar os cargos dos jogadores. A API em questão possuí os endpoints:

/v1/players/roles/:id
/v1/players/roles/add/:id

O endpoint "/v1/players/roles/:id" é utilizado para verificar os cargos/niveis do jogador referente ao "id" especificado na rota. Esse endpoint é aberto para que o jogo verifique os cargos dos jogadores.

O endpoint "/v1/players/roles/add/:id" é utilizado para atribuir um novo cargo/nivel à um jogador, portante esse endpoint deve ser protegido para que apenas administradores tenham acesso. Mas e se esse endpoint não estivesse configurado para bloquear requisições de usuários que não possuem permissões de administradores? Caso isso acontecesse, qualquer usuário/jogador conseguiria atualizar seus cargos/niveis dentro do jogo.

Cenário #1

Suponhamos que o token "xxx.xxx.xxx" não possuí permissões de administradores.

GET /v1/players/roles/12
Host: api.example.com
x-access-token: xxx.xxx.xxx

200 OK
...
{
    "status":"success",
    "role": "Soldier"
}
POST /v1/players/roles/add/12
Host: api.example.com
Content-type: application/json
...
x-access-token: xxx.xxx.xxx

{
    "newrole": "Legend",
    "oldrole": "Soldier"
}


200 OK
...

{
	"status":"success",
	"message": "role updated"
}

Esse cenário está vulnerável a Broken Function Level Authorization, pois um endpoint que contém uma função administrativa deveria ser configurado apenas para administradores, mas está exposto para usuários comuns.

Como prevenir o Broken Function Level Authorization?

Configure as permissões corretas para endpoints que contém funções administrativas. Uma boa prática é utilizar middlewares para gerenciar autorização dos endpoints, pois se uma middlware foi configurada em "/v1/admin", o comum é que todas as rotas que vierem depois de "/v1/admin/xxx" irão precisar de autorização também, assim evitando o Broken Function Level Authorization.

Referências

API-Security/editions/2023/en/0xa5-broken-function-level-authorization.md at master · OWASP/API-Security
OWASP API Security Project. Contribute to OWASP/API-Security development by creating an account on GitHub.