lemur: Vulnerabilidade de autorização insuficiente no endpoint PUT /api/1/roles/<id>
O endpoint PUT /api/1/roles/<id> em lemur/roles/views.
O que mudou
O endpoint PUT /api/1/roles/<id> em lemur/roles/views.py permite que qualquer membro de uma role modifique o nome e a lista de membros dessa role, devido a uma verificação de autorização insuficiente (apenas RoleMemberPermission, que é OR-semântico para admin ou membro). O endpoint DELETE exige corretamente permissão de admin.
Quem isso afeta
Todas as instalações do Lemur onde usuários não-admin são membros de roles que concedem acesso a certificados ou autoridades. Atacantes que são membros de uma role podem adicionar ou remover outros usuários, renomear a role e escalar privilégios lateralmente.
O que fazer hoje
Aplique a correção adicionando o decorador @admin_permission.require(http_exception=403) ao método put em lemur/roles/views.py, espelhando o handler de delete. Alternativamente, implemente uma classe de permissão dedicada para ownership de role, se a delegação seletiva for desejada.