Vulnerabilidades que afetam o OAuth da Microsoft e GitHub leva a ataques de redirecionamento

Principais vantagens

  • Vulnerabilidades em implementações OAuth2.0 populares da Microsoft e de outros levam a ataques de redirecionamento que contornam a maioria das soluções de detecção de phishing e soluções de segurança de e-mail.
  • A Proofpoint observou ataques em grande escala visando com sucesso centenas de usuários de locatários de clientes da Proofpoint, e os números aumentam diariamente.
  • A maioria dos URLs de phishing estavam abusando dos domínios do Azure da Microsoft para hospedar os ataques de phishing, fazendo com que parecessem mais legítimos.
  • As campanhas detectadas incluem, entre outras, phishing do Outlook Web Access, phishing de login do PayPal e coleta de cartão de crédito.

Visão geral

A Proofpoint descobriu vários métodos novos e anteriormente desconhecidos para iniciar um ataque de redirecionamento de URL usando as implementações OAuth2.0 populares da Microsoft e de outros. Aplicativos em nuvem de terceiros usam OAuth 2.0 para obter acesso limitado aos recursos de usuários protegidos nas principais plataformas, como Microsoft 365 e Google Workspace. Os pesquisadores de ameaças da Proofpoint começaram a detectar esses ataques de redirecionamento contra ambientes Microsoft 365 em fevereiro de 2020. 

Vulnerabilidades de redirecionamento aberto surgem quando um aplicativo da web incorpora parâmetros controláveis ​​pelo usuário para especificar um link de redirecionamento. Um invasor pode criar uma URL para um aplicativo da web que causa um redirecionamento para um domínio externo arbitrário. Ataques clássicos de redirecionamento aberto manterão o alvo de redirecionamento na própria URL. No novo tipo que descobrimos, o URL de destino de redirecionamento é configurado na estrutura do provedor OAuth, sem qualquer validação desse URL.

Além disso, o URL de destino de redirecionamento estará ausente do URL legítimo e, portanto, ignorará a maioria das soluções de detecção de phishing e soluções de segurança de e-mail. A vítima que clica no URL confia no provedor OAuth e não espera um redirecionamento imediato, como observamos neste tipo de ataque. Isso torna a sequência de ataque mais encoberta e potente em comparação com os clássicos ataques de redirecionamento aberto.

Ataques reais visando a implementação OAuth da Microsoft

Analisamos os dados do Proofpoint e encontramos ataques direcionados em grande escala usando modi operandi (MOs), que discutiremos em detalhes posteriormente nesta postagem do blog. Os ataques usam dezenas de aplicativos distintos de terceiros do Microsoft 365 com URLs de redirecionamento mal-intencionados definidos para eles. Eles atingiram com sucesso centenas de usuários de inquilinos de clientes da Proofpoint, e os números continuam crescendo diariamente.

Todos os aplicativos de terceiros estavam sendo entregues por meio de um URL da Microsoft com um parâmetro de consulta response_type ausente, com a intenção de redirecionar usuários desavisados ​​para diferentes URLs de phishing. A maioria dos URLs de phishing estavam abusando dos domínios do Azure da Microsoft para hospedar os  ataques de phishing , fazendo com que parecessem mais legítimos. O kit de phishing usado nesses ataques foi abordado em detalhes por SeclarityIO  aqui . 

As campanhas detectadas incluem, entre outras, phishing do Outlook Web Access, phishing de login do PayPal e coleta de cartão de crédito – e essas campanhas ainda estão vivas e em evolução.

Uma campanha de phishing do PayPal está abusando do sistema de login login.live.com “Contas da Microsoft”, que não requer autenticação do usuário antes de redirecionar para a página de phishing. O seguinte GIF demonstra o redirecionamento depois que o usuário clica no link de URL legítimo da Microsoft:GIF que demonstra um esquema de phishing do PayPal, em que um usuário é redirecionado após clicar em um link de URL legítimo da Microsoft

Figura 1. GIF demonstrando um esquema de phishing do PayPal, em que um usuário é redirecionado após clicar em um link de URL legítimo da Microsoft

Como a Microsoft implementa OAuth 2.0

OAuth 2.0 é um protocolo amplamente adotado para autorização. Ao desenvolver um aplicativo OAuth, os desenvolvedores devem registrar seus aplicativos na estrutura do provedor OAuth para obter um ID de aplicativo (cliente) exclusivo e, como parte desse processo, eles fornecem seu URI de redirecionamento. O provedor OAuth redireciona o usuário com a resposta de autorização para o URI de redirecionamento.

Existem muitos fluxos OAuth 2.0 diferentes  . Um ataque de redirecionamento requer um dos seguintes fluxos: fluxo de código de autorização, fluxo implícito e fluxo híbrido, que combina os fluxos de autorização e implícito.

A implementação do OAuth 2.0 da Microsoft depende do ponto de extremidade da plataforma de identidade da Microsoft (v2.0), ou o ponto de extremidade do Azure AD mais antigo, para autenticar usuários antes do processo de autorização.

O diagrama a seguir explica um fluxo de login OAuth básico (também conhecido como OpenID Connect). Mas a ideia geral é verdadeira para o fluxo de código de autorização OAuth, que é o caso de uso principal e mais prevalente.

Fluxo de login OAuth típico

Figura 2. Fluxo de login típico do OAuth

Posteriormente nesta postagem, discutiremos o login.live.com, que é outro sistema de login para contas pessoais da Microsoft que o OAuth 2.0 usa.

Os fluxos OAuth relevantes começam com um usuário navegando para (ou sendo redirecionado para) a URL de autorização, que está localizada no   endpoint / authorize sob a URL API correta.

No caso da plataforma de identidade da Microsoft, o URL apresenta o seguinte formato:

Formato de URL de fluxo OAuth da plataforma de identidade da Microsoft

Figura 3. Formato de URL do fluxo OAuth da plataforma de identidade da Microsoft

E no caso do ponto de extremidade v1.0 Azure AD, a URL apresenta este formato:

Formato de ponto de extremidade de URL para o ponto de extremidade v1.0 do Azure AD

Figura 4. Formato de endpoint de URL para o endpoint v1.0 Azure AD

Ambos os URLs requerem os   parâmetros client_id  e  response_type para um URL válido, enquanto a v2.0 também requer o parâmetro de escopo. Outros parâmetros de consulta são opcionais.

Observe que os pontos de extremidade de autorização no URL  https://login.windows.net  redirecionam automaticamente para  https://login.microsoftonline.com  com todos os parâmetros de consulta fornecidos. Isso significa que todos os fluxos válidos e inválidos mencionados nesta postagem também se aplicam a URLs que começam com  https://login.windows.net em  vez de  https://login.microsoftonline.com .

Nesse ponto, os usuários precisarão se autenticar e, em seguida, autorizar as permissões do aplicativo.

As permissões autorizadas permitirão o acesso do aplicativo aos recursos do usuário. Assim que o usuário consentir, o servidor de autorização redireciona o usuário para a URL de redirecionamento do aplicativo.

Tela de login da Microsoft, permissões necessárias

Figura 5. Tela de login da Microsoft, permissões necessárias

Como quebrar o fluxo válido

A cadeia normal de eventos do protocolo OAuth detalhado acima ocorre quando todos os parâmetros de consulta necessários estão presentes e contêm um valor válido. Para acionar um ataque de redirecionamento, o invasor modifica alguns parâmetros ou elimina outros completamente. Em seguida, o usuário é  redirecionado para um URL de redirecionamento controlado pelo invasor após clicar em um URL de aparência legítima pertencente à Microsoft  e se identificar por meio de um dos pontos de extremidade de autenticação da Microsoft.

A Microsoft, por design, envia respostas de erro ao URL de redirecionamento do aplicativo para que o aplicativo tenha a chance de tratá-los. Junto com o fato de que valores específicos para determinados parâmetros de consulta podem disparar um erro logo após a autenticação, a escolha de design da Microsoft torna possível um ataque de redirecionamento. Um invasor pode, portanto, criar uma URL especial usando um dos mecanismos que descreveremos mais tarde nesta postagem e enviar essa URL para vítimas em potencial por e-mail ou qualquer outro meio de comunicação.

Então, quais são os casos de erro que causam um redirecionamento? Apresentaremos diferentes MOs, cada um começando com um  URL legítimo de propriedade da Microsoft  seguido por um  redirecionamento pela própria Microsoft  para um URL controlado pelo invasor com interação mínima do usuário em todo o fluxo:

1. Quando o  parâmetro de consulta response_type  está ausente ou contém um valor não relevante (qualquer coisa diferente de “token”, “código” ou “id_token” ou uma combinação dos dois últimos valores), o usuário será redirecionado pela Microsoft logo após a autenticação . O diagrama a seguir ilustra um URL clicado por um usuário, com o  parâmetro response_type  ausente no URL:

Fluxo de ataque response_type ausente

Figura 6. Fluxo de ataque de response_type ausente

2. Quando o  parâmetro de escopo  existe, mas contém um valor inválido (qualquer valor que irá acionar um  erro “invalid_resource” ), o usuário será redirecionado novamente pela Microsoft após a autenticação. A documentação oficial afirma que isso pode ser causado por qualquer escopo pertencente a um “recurso inválido porque não existe, o Azure AD não pode localizá-lo ou não está configurado corretamente”. 

Um exemplo simples de um valor de escopo inválido é um erro de digitação no valor do escopo. Um invasor pode criar um escopo ruim com a intenção de confundir o usuário com um escopo real (como Openld, onde em vez da letra maiúscula “I” há um “L” minúsculo). O diagrama a seguir ilustra o cenário de um escopo inválido sendo usado no URL:

Fluxo de ataque de escopo inválido

Figura 7. Fluxo de ataque de escopo inválido

3. Se todos os parâmetros de consulta forem válidos e o usuário acessar a tela de consentimento, clicar no botão “Cancelar” também fará com que o usuário seja redirecionado para a URL controlada pelo invasor.

Permissões da Microsoft solicitadas tela de consentimento

Figura 8. Tela de consentimento solicitada de permissões da Microsoft

O terceiro caso, embora não seja um redirecionamento imediato, representa uma ameaça perigosa. Nessa situação, clicar no botão “Aceitar” dará ao aplicativo malicioso acesso aos recursos do usuário, enquanto clicar no botão “Cancelar” redirecionará o usuário para a URL de redirecionamento malicioso do aplicativo. O último cenário pode levar a um novo conjunto de ameaças – pense em phishing de credencial, download forçado de um arquivo malicioso ou até mesmo encadear o redirecionamento com outra vulnerabilidade para entregar uma ameaça completamente diferente.

Quebrando um sistema de login diferente da Microsoft

A Microsoft mantém um sistema de login totalmente diferente para contas pessoais, denominado “contas Microsoft”, onde os usuários podem consentir com o mesmo tipo de aplicativos registrados por meio do Portal do Azure, usando URLs do seguinte formato:

URL de OAuth de contas pessoais da Microsoft

Figura 9. URL OAuth de contas pessoais da Microsoft

Todos os MOs de redirecionamento mencionados anteriormente também estão disponíveis neste sistema de login. Uma diferença substancial é que no caso deste formato de URL, os redirecionamentos acontecem  antes mesmo  do processo de autenticação. Isso significa que ao usar os métodos mencionados anteriormente para redirecionar o usuário inocente junto com este formato de URL, o usuário nem mesmo terá a chance de fazer o login e o redirecionamento, pela própria Microsoft, acontecerá assim que o usuário clicar no link criado com códigos maliciosos URL

Fluxo de ataque de contas da Microsoft

Figura 10. Fluxo de ataque de contas da Microsoft

Quebrando o fluxo OAuth para diferentes provedores

Outros provedores de OAuth também sofrem de vulnerabilidades de redirecionamento aberto semelhantes. GitHub, um serviço popular de hospedagem de código baseado em git, que também pertence à Microsoft, permite que os usuários criem aplicativos OAuth que automatizam e melhoram os fluxos de trabalho. Usando o GitHub como o provedor de identidade para autenticar os usuários, qualquer pessoa pode registrar um aplicativo OAuth enquanto fornece um URL de redirecionamento que pode ser um URL de phishing malicioso.

Depois de registrar seu aplicativo e obter seu client_id, existem vários cenários de erro em que o GitHub, por design, redirecionará os usuários para o URL de redirecionamento malicioso:

1. Quando o   parâmetro de consulta redirect_uri difere do URL definido pelo aplicativo, os usuários serão redirecionados (após a autenticação) para o URL de redirecionamento definido para o aplicativo. Isso significa que os invasores podem direcionar os usuários para clicar em URLs de consentimento incorporados com qualquer URL legítimo para causar um redirecionamento para um URL malicioso diferente. O seguinte URL não redirecionará para o URL legítimo, mas para o URL original registrado para o aplicativo:

URL GitHub OAuth

Figura 11. URL do GitHub OAuth

2. Se o usuário entrar na página de consentimento com sucesso, mas rejeitar o acesso ao aplicativo (clicando no botão “Cancelar”), ele também será redirecionado para o URL de redirecionamento. Embora seja uma prática perigosa, o URL de redirecionamento é mencionado na parte inferior da página de consentimento, com o texto “A autorização irá redirecionar para: <URL de redirecionamento>.” Observe que o texto não menciona que o cancelamento também redirecionará os usuários para o URL de redirecionamento.

3. Mesmo se o aplicativo com o URL de redirecionamento malicioso for suspenso pelo GitHub, os usuários ainda serão redirecionados para o URL malicioso.

Ao contrário da Microsoft e do GitHub, a implementação OAuth do Google está lidando com erros de URL dentro de seu domínio com páginas de erro especiais do Google. Portanto, nossos pesquisadores não conseguiram encontrar vulnerabilidades de redirecionamento OAuth semelhantes. No entanto, existem vários fluxos de redirecionamento não errôneos nos quais um usuário pode ser induzido a uma página de phishing:

1. O registro de um aplicativo OAuth de login com um URL de redirecionamento malicioso na estrutura do Google não requer verificação pelo Google. O seguinte URL de exemplo fará com que o Google redirecione o usuário, logo após a autenticação, para o URL de redirecionamento malicioso (mencionado com o parâmetro de consulta “redirect_uri”), sem pop-ups de tela de consentimento adicionais:

URL OAuth do Google

Figura 12. URL OAuth do Google

2. Um caso mais grave de redirecionamento aberto foi encontrado no fluxo de consentimento do administrador para aplicativos de mercado. Qualquer aplicativo de mercado legítimo pode ser usado, e tudo o que é necessário é o identificador do aplicativo. Com esse identificador, um URL com o seguinte formato pode ser criado:

URL OAuth do espaço de trabalho do Google

Figura 13. URL OAuth do Google Workspace

Depois que um usuário administrador clica no link e se autentica, a tela de consentimento desse aplicativo é exibida. Se o administrador clicar no botão “Cancelar”, o Google redirecionará o administrador para o URL malicioso fornecido, mesmo que esse URL não corresponda ao URL de redirecionamento definido pelo aplicativo.

Técnicas eficazes de mitigação

O phishing é mais fácil com ataques de redirecionamento secreto que exploram vulnerabilidades de implementação de OAuth e usam domínios legítimos da Microsoft. Esses ataques podem enganar até os usuários mais experientes em tecnologia. As implementações de outros provedores de OAuth que observamos, como Google ou LinkedIn, nos mostram que existem maneiras melhores de tratamento de erros para manter a estrutura OAuth mais segura.

Uma maneira é redirecionar o usuário para o domínio do provedor com uma explicação detalhada do erro. Se encaminhar o usuário para a URL de redirecionamento do desenvolvedor for essencial, isso pode ser feito de maneira segura para reduzir o risco de usuários inocentes de phishing. Técnicas de mitigação eficazes apresentam ao usuário um aviso claro de que ele está saindo do aplicativo atual, implementando um longo atraso antes do redirecionamento automático do usuário ou forçando o usuário a clicar no link antes do redirecionamento.

O phishing de usuários inocentes continua sendo o método de ataque mais bem-sucedido para comprometer as credenciais do usuário e violar a rede da sua organização no processo. Os sistemas de proteção de e-mail são indefesos contra esses ataques. Ao abusar da infraestrutura OAuth, esses ataques entregam e-mails maliciosos a seus alvos sem serem detectados. Esses ataques ao PayPal podem levar ao roubo de informações financeiras, como cartões de crédito. Ataques de phishing na Microsoft podem levar a fraude, roubo de propriedade intelectual e muito mais.

Domínios de URL de phishing

Abaixo está uma lista de todos os URLs que observamos aplicativos maliciosos usando para redirecionar usuários:

102871.z13.web.core.windows [.] Net / redirect.htm 

 118921.z13.web.core.windows [.] Net / redirect.htm 

 59328.z13.web.core.windows [.] Net / redirect.htm 

 91829.z13.web.core.windows [.] Net / redirect.htm 

 bewaio.z13.web.core.windows [.] net / redirect.htm 

 apqiuz.z13.web.core.windows [.] net / redirect.htm 

 cdoiaioa.z13.web.core.windows [.] net / redirect.htm 

 csadawzq.z13.web.core.windows [.] net / redirect.htm 

 cwasdcawz.z13.web.core.windows [.] net / redirect.htm 

 zoopqp.z13.web.core.windows [.] net / redirect.htm 

 7172981.z13.web.core.windows [.] Net / redirect.htm 

 287191.z13.web.core.windows [.] Net / redirect.htm 

 279102.z13.web.core.windows [.] Net / redirect.htm 

 901829.z13.web.core.windows [.] Net / redirect.htm 

 178710.z13.web.core.windows [.] Net / redirect.htm 

 391722.z13.web.core.windows [.] Net / redirect.htm 

 2910992.z13.web.core.windows [.] Net / redirect.htm 

 40192.z13.web.core.windows [.] Net / redirect.htm 

 618291.z13.web.core.windows [.] Net / redirect.htm 

 817892.z13.web.core.windows [.] Net / redirect.htm 

 528102.z13.web.core.windows [.] Net / redirect.htm 

 116258.z13.web.core.windows [.] Net / redirect.htm 

 29190.z13.web.core.windows [.] Net / redirect.htm 

 49281.z13.web.core.windows [.] Net / redirect.htm 

 23811.z13.web.core.windows [.] Net / redirect.htm 

 49187.z13.web.core.windows [.] Net / redirect.htm 

 39281.z13.web.core.windows [.] Net / redirect.htm 

 49287.z13.web.core.windows [.] Net / redirect.htm 

 12787.z13.web.core.windows [.] Net / redirect.htm 

 51871.z13.web.core.windows [.] Net / redirect.htm 

 19281.z13.web.core.windows [.] Net / redirect.htm 

 49271.z13.web.core.windows [.] Net / redirect.htm 

 39871.z13.web.core.windows [.] Net / redirect.htm 

 172914.z13.web.core.windows [.] Net / redirect.htm 

 127100.z13.web.core.windows [.] Net / redirect.htm 

 39182.z13.web.core.windows [.] Net / redirect.htm 

 cijuaiu.z13.web.core.windows [.] net / redirect.htm

 38e1-138-199-58-114.ngrok [.] I / informationssk

 66d0-185-91-121-4.ngrok [.] I / informationssk

 769b-216-131-110-210.ngrok [.] I / informationssk

 c578-143-202-163-94.ngrok [.] i / informationssk

 f1e7-185-108-106-250.ngrok [.] i / informationssk

 ff99-185-245-84-32.ngrok [.] i / informationssk

 www.lifetivate[.]com/wp-admin/js

 tuffgigmusic[.]com/imdmlm/pp

 tuffgigmusic[.]com/immmnf/pp

 tuffgigmusic[.]com/immmnn/pp

 tuffgigmusic[.]com/impho/pp

 i12313212111478.blogspot[.]com

 i8974541122.blogspot[.]com

 i98742138576.blogspot[.]com

 id2021serviceupp.blogspot[.]com

 montana.co [.] ke / pp

 persiken[.]com/in

Fonte: https://www.proofpoint.com/