Solução
Controle de acesso/permissões pode parecer uma coisa simples, mas em um sistema complexo as coisas podem desandar fácil, fácil. Não atoa que no OWASP Top Ten de 2021, Broken Access Control (A01_2021-Broken_Access_Control) está em primeiro lugar, como a categoria de vulnerabilidade mais comum nas aplicações web.
Sobre esse exercício, existe uma escalação de privilégios possível devido ao design mal feito nas permissões de acesso dos endpoints em relação aos cargos.
Repare que o endpoint
PATCH /groups/{group_id}/members/{user_id}
pode
ser usado para atualizar o cargo de um membro. Um moderador
só pode alterar o cargo de um membro para
colaborator
ou member
, assim
garante que ele não possa escalar privilégios promovendo
outro membro à administrador… Certo?
Bom, mas o design não prevê em momento algum
quais contas de usuário o moderador tem permissão para
alterar o cargo. Ou seja, um moderador pode alterar os
cargos de todos os administradores de um grupo para
member
(ou colaborator
).
Quando ele fizesse isso, não haveria mais administradores
no grupo e então ele poderia usar o endpoint
POST /groups/{group_id}/promote
para se
promover à administrador.
Se você acha que esse recurso de autopromoção para administrador é irrealista, saiba que existe uma rede social muito famosa — e que você conhece e provavelmente usa — que tem um recurso exatamente assim.