Bug no GitHub permitia aplicativos de terceiros ganharem permissões elevadas

por | julho 2022 | Blog | 0 Comentários

No final de fevereiro, a Aqua teve conhecimento de um bug na GitHub que permitia aplicações de terceiros conectarem-se a ele para gerar novos escopos de tokens de instalação com permissões elevadas.

Por exemplo, se alguém se conectasse ao app Codecov em sua conta do GitHub com acesso “somente leitura” para os repositórios, durante essa janela, o app poderia criar um token com acesso de gravação a eles.

Esse bug pode ter levado a maiores problemas de segurança, incluindo perda de dados e vazamentos de segredos e credenciais. Desde que o GitHub descobriu o bug, o escopo atual do impacto ainda não foi determinado.

O que são Apps GitHub?

Os GitHub Apps são a maneira oficialmente recomendada de se integrar aplicações. Eles permitem mudar as funcionalidades à nível de superfície do GitHub por meio de webhooks e APIs.

Os desenvolvedores podem construir integrações para adicionar suas próprias features do GitHub, processos de automação de rotina, e workflows estendidos em seus projetos. Atualmente, existem mais de 580 apps no Marketplace da GitHub, e os mais populares tem centenas de milhares de instalações.

Eles podem ser instalados tanto nas organizações quanto em contas individuais, e podem garantir acesso a repositórios específicos. Para instalar um App GitHub, é preciso ser o dono de uma organização e ter acesso com permissões de administrador em um repositório. Por padrão, somente donos de organizações podem gerenciar as configurações do GitHub Apps.

Como GitHub Apps realizam autenticação usando Tokens?

De acordo com a GitHub, os Apps GitHub devem realizar autenticação usando tanto uma web token JSON (JWT), OAuth token, ou token de acesso de instalação. O bug que foi revisado é interessante para este último.

Tokens de instalação são gerados com JWT, sendo necessário entender o que eles são e como eles são usados.

JWT é um padrão aberto que define uma maneira segura de transmitir informações como um objeto JSON. Essa informação pode ser verificada e confiada pois é digitalmente assinada. JWT é comumente usada para autorizações por grandes empresas de tecnologia. Ela permite delegação de acesso seguro, habilitando apps de terceiros a trocarem informações de credenciais de forma segura sem que os usuários forneçam suas senhas.

Por exemplo, um usuário quer fornecer acesso a sua lista de amigos à um jogo. Ele pode utilizar o OAuth, com JWT como token, para pedir esse recurso da conta do Facebook com a autorização do proprietário. Os tokens OAuth geralmente ficam ativos por menos de uma hora para prevenir vazamentos e usos maliciosos.

Depois que ele consegue a autorização, o jogo (ou qualquer outro aplicativo de terceiro desse tipo), pode solicitar por esse token de escopo OAuth sempre que precisar para acessar o recurso, conseguindo um novo token válido, ainda que por tempo limitado.

O que deu errado com esses tokens?

Geralmente o os Apps GitHub criam um tokens de escopo de instalação baseados nos escopos e permissões concedidas quando um aplicativo é instalado em uma conta de usuário ou organização. Por exemplo, se for concedido ao app o acesso a leitura dos dados de usuário do perfil, o escopo do token que o app gera pode ter a permissão “read:user”.

O bug recente permitia que os Apps GitHub gerassem escopos de tokens de instalação com permissões elevadas por mais ou menos cinco dias entre 25 de fevereiro e 2 de março. Por exemplo, um app poderia ter gerado um token com permissão “write:user”, que é mais elevado em comparação com a permissão “read:user” concedida. Cada um desses tokens era válido por até uma hora.

De toda forma o app não seria capaz de alcançar novas permissões para escopos adicionais além dos escopos originalmente concedidos, como por exemplo, escopos “package”.

A GitHub diz que isso começou uma investigação imediatamente e que consertaram esse bug rapidamente.

Impacto potencial

A exposição a esse bugo é extensa, e o impacto potencial pode ser massivo. Toda companhia que usa o GitHub e tem um App GitHub instalado — praticamente todos — podem ter sido afetados por isso. Entretanto, a GitHub não tem evidências de que esse bug foi explorado para propósitos maliciosos.

Potencialmente, cada token que foi gerado durante a janela do bug, pode ter ganhado acesso de administrador, que pode ser muito danoso para uma organização. Por exemplo, se um repositório privado de um software de vendedor tiver seu código fonte e propriedade intelectual vazada ou deletada, pode literalmente significar o fim da companhia.

Mitigação e recomendações

O impacto verdadeiro desse problema em um ambiente vai depender do escopo de permissão que foi concedido ao app terceirizado quando foi instalado. O GitHub foi incapaz de determinar se esse bug foi explorado, e os tokens de ciclo de vida curtos que podem ter sido gerados e usados de formas maliciosa já se foram.

No entanto, a recomendação da Aqua Security é a revisão de todos os apps GitHub instalados, seus escopos e permissões.

A longo prazo, uma solução que governa o acesso de apps de terceiro apropriadamente no supply chain de softwares pode ajudar a evitar tais riscos no futuro. Por exemplo, a Cloud Native Application Protection Platform (CNAPP) da Aqua, fornece uma solução para a cadeia de suprimentos de software, sendo capaz de proteger as empresas contra esse tipo de ameaça.

Conclusão

Problemas como esse aumentam os riscos para as organizações. A falta de gerenciamento, controle e visibilidade desses apps de terceiros e cadeia de suprimentos de software no geral é o motivo dos agentes de ameaças estarem aumentando ataques de coleta de informações e infiltrações. Somente em 2021, ataques ao supply chain de software aumentaram em 300%.

Além disso, aplicativos de terceiros nem sempre se comportam como esperado e podem revelar dados confidenciais.

Saiba mais sobre a análise dessa ameaça feita pela Aqua clicando aqui, e conte com a M3 para levar a segurança da Aqua Security até seus clientes, que com certeza fazem uso de apps GitHub.

Entre em contato com nosso time clicando aqui.