Pesquisa paralela de vulnerabilidades do GitHub

Todas as mensagens

Mês passado me deparei Este artigo da leitura escura. Parecia muito familiar. Não demorei muito para perceber que a vulnerabilidade de envenenamento de artefato de fluxo de trabalho cruzado do GitHub discutida no artigo tinha uma semelhança impressionante com o fluxo de trabalho cruzado do GitHub envenenamento de cache vulnerabilidade que relatamos em março de 2022. 

Fluxos de trabalho do GitHub – um componente importante dos pipelines de CI/CD do GitHub

Os fluxos de trabalho do GitHub são usados ​​para definir as ações específicas que devem ser tomadas como parte do pipeline de CI/CD. São processos automatizados que podem ser acionados por eventos específicos em um repositório GitHub. Tais eventos, por exemplo, ocorrem quando o código é enviado para o repositório, quando uma solicitação pull é aberta ou fechada ou quando uma nova versão é publicada. 

 

Os fluxos de trabalho são criados usando um arquivo YAML, que especifica as ações que devem ser executadas quando o fluxo de trabalho é acionado. Essas ações podem ser escritas pelo desenvolvedor ou retiradas do mercado do GitHub, onde mais de 10,000 ações pré-fabricadas podem ser baixadas e usadas.

 

Os fluxos de trabalho são compostos por um ou mais trabalhos, definidos como uma série de etapas. As etapas podem ser uma variedade de ações, como execução de testes, implantação de código ou publicação de um pacote.

Os fluxos de trabalho do GitHub são uma ferramenta poderosa que pode ajudar os desenvolvedores a automatizar e agilizar seus fluxos de trabalho, economizando tempo e esforço e melhorando a confiabilidade de seu processo de desenvolvimento de software, mas eles apresentam falhas integradas. 

 

Existem vários possíveis problemas de segurança que podem surgir ao usar fluxos de trabalho do GitHub. Aqui estão alguns comuns:

 

  1. Acesso não autorizado: Fluxos de trabalho que não estão configurados ou protegidos adequadamente podem ser acessados ​​e acionados por usuários não autorizados. Isso poderia permitir que eles executassem códigos arbitrários ou realizassem outras ações não autorizadas.
  2. Vazamento de segredos: os fluxos de trabalho geralmente exigem o uso de segredos, como chaves de API ou senhas, para acessar recursos externos ou executar determinadas ações. Se esses segredos não forem devidamente protegidos, poderão ser vazados, levando a violações de segurança.
  3. Dependência inseguras: Os fluxos de trabalho que dependem de bibliotecas ou dependências externas podem estar potencialmente vulneráveis ​​a ataques se essas dependências não forem seguras. É importante revisar e atualizar regularmente as dependências para garantir que estejam seguras.
  4. Falta de validação e higienização de entrada: Fluxos de trabalho que não validam adequadamente a entrada podem ser potencialmente explorados para executar código arbitrário ou realizar outras ações não autorizadas.

 

Vamos dar uma olhada mais de perto nas duas vulnerabilidades entre fluxos de trabalho discutidas nos artigos mencionados acima.

Intoxicação por artefato entre fluxos de trabalho

Os artefatos de fluxo de trabalho do GitHub são produtos do trabalho realizado nos pipelines de CI/CD. Normalmente, cada fluxo de trabalho teria seu próprio bucket para armazenar tais artefatos, mas às vezes os fluxos de trabalho precisam acessar artefatos criados por outros fluxos de trabalho. O GitHub não permite que fluxos de trabalho acessem armazenamento/artefatos de diferentes fluxos de trabalho de uma vez. Para contornar isso, existe uma API aprovada pelo GitHub que permite baixar artefatos com base em filtragem básica. O problema é que a API não diferencia entre artefatos que foram carregados por repositórios bifurcados e aqueles carregados pelos repositórios base. Isso significa que o upload de artefatos potencialmente envenenados criados por repositórios bifurcados é um perigo real e presente. 

 

Para remediar esse problema, o GitHub começou a fornecer informações adicionais, bem como metadados de artefatos ao fazer download de artefatos. Essas informações foram projetadas para ajudar o autor a garantir que está baixando o artefato correto. O problema básico dos artefatos de fluxo de trabalho cruzado não é considerado um problema pelo GitHub neste momento. Para saber mais sobre esse assunto, confira o artigo Mencionado acima.

Envenenamento de cache entre fluxos de trabalho

GitHub permite o armazenamento em cache de artefatos e pacotes para acelerar o pipeline de CI/CD. Em vez de baixar artefatos e pacotes necessários repetidamente para cada fluxo de trabalho em que possam ser necessários, eles podem ser armazenados em cache e usados ​​em diferentes fluxos de trabalho. 

 

Como o cache é compartilhado entre fluxos de trabalho, basta uma única violação em um fluxo de trabalho usando o cache com permissão para alterá-lo, e esse cache pode ser envenenado para todos os usos de fluxo de trabalho seguintes. Como o cache só é atualizado quando há um novo artefato ou pacote para download, isso significa que um único cache envenenado pode ficar ativo por um longo tempo, influenciando inúmeras iterações de compilações de software executadas nesse pipeline.

 

O GitHub não considera o problema de um cache potencialmente envenenado. O cache é um recurso útil e sua capacidade de ser compartilhado entre fluxos de trabalho não é considerada um bug ou um problema de segurança total no momento. Para saber mais sobre esse assunto, confira o artigo Mencionado acima.

Imagem de envenenamento de cache do GitHub

Outras vulnerabilidades menos conhecidas do GitHub e como se defender delas

GitHub é um dos sistemas de gerenciamento de controle de origem (SCM) mais populares do mundo. Como tal, também é amplamente utilizado para construir e distribuir software usando seu pipeline, ações e fluxos de trabalho de CI/CD.

As pessoas precisam lembrar que o GitHub foi criado para facilitar o compartilhamento de código e o desenvolvimento conjunto. Ele foi originalmente projetado para desenvolvedores de código aberto e os recursos de contas corporativas e organizacionais foram adicionados posteriormente. Em sua essência, a segurança não era uma grande preocupação do sistema. O fato de você precisar fazer um configuração especial no GitHub para habilitar recursos de segurança em sua conta significa que a ideia de que usando o Git você está inerentemente mais seguro é apenas uma ilusão.   

Ainda este mês, a Scribe apresentará Tzachi Zornstain, chefe da cadeia de suprimentos de software da Checkmarx em um webinar para falar sobre algumas dessas possíveis armadilhas da cadeia de suprimentos de software no GitHub.  

Se você quiser saber mais sobre essa classe menos conhecida de vulnerabilidades e como se defender contra elas, ouça este vídeo sob demanda webinar.

 

bandeira

Este conteúdo é oferecido a você pela Scribe Security, um fornecedor líder de soluções de segurança de cadeia de suprimentos de software ponta a ponta – fornecendo segurança de última geração para artefatos de código e processos de desenvolvimento e entrega de código em todas as cadeias de suprimentos de software. Saiba mais.