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.