A falha reside no mecanismo de OAuth, em que as aplicações confiam em domínios de terceiros e que não estão registados pela Microsoft.
Com esta situação, a vítima podia sofrer o roubo de dados sensíveis, os servidores de produção podiam ser comprometidos, dados manipulados, encriptação dos dados de uma empresa, entre outros danos.
Como funciona o mecanismo de autorização por OAuth?
Essencialmente uma aplicação da Microsoft pode pedir acesso a partir de um URL em whitelist pela própria Microsoft para fazer login. Depois de aprovada, recebe um token com permissões específicas que a permite agir em nome do "dono" do token. O problema está no facto de alguns URL's dessa whitelist não estarem previamente registados no portal do Azure. Os URL's que estão na web API, confiáveis segundo a Microsoft, terminam com o sufixo cloudapp.net, azurewebsites.net e cloudapp.azure.com; mas grande parte deles não estavam registados no portal do Azure. O que significa que o atacante podiam tomar controlo desses domínios, registando-os. E dessa forma eles seriam aprovados por defeito.
Qualquer pessoa que pedisse um token em nome de um utilizador com privilégios para o graph.windows.net, se não estivesse previamente definido, podia fazer pedidos a endpoints da API, incluindo para fazer o reset de passwords de outros utilizadores no Active Directory, adicionar membros, entre outros.
Outra forma de obtenção de acesso seria colocar uma tag de iframe num website com o atributo src a apontar para um link modificado e convencer a vítima a visitar esse mesmo site. Dessa forma, o browser ao processar o iframe e o domínio microsoftonline.com redirecionaria a vítima a um domínio controlado pelo atacante e, dessa forma, o atacante conseguia obter o token de acesso.
Prevenção:
- Os URI's de redirecionamento na aplicação devem estar certificados
- Os URI's desnecessários devem ser removidos
- As permissões das aplicações com OAuth devem ter aplicado o princípio do mínimo privilégio, garantindo o menor nível possível de privilégios aos utilizadores
- Apicações que não sejam usadas devem ser eliminadas
Mais informações: https://threatpost.com/microsoft-oauth-flaw-azure-takeover/150737/