15.000 Repositórios Go Module no GitHub Vulneráveis a Ataques de Repojacking
5 de Dezembro de 2023

Uma nova pesquisa descobriu que mais de 15.000 repositórios de módulos Go no GitHub estão vulneráveis a um ataque chamado repojacking.

"Mais de 9.000 repositórios estão vulneráveis ao repojacking devido a alterações no nome de usuário do GitHub", disse Jacob Baines, diretor de tecnologia da VulnCheck, em um relatório compartilhado com o The Hacker News.

"Mais de 6.000 repositórios estavam vulneráveis ao repojacking devido à exclusão de contas."

Coletivamente, esses repositórios representam não menos do que 800.000 versões de módulos Go.

PRÓXIMO WEBINAR Aprenda Detecção de Ameaças Internas com Estratégias de Resposta de Aplicação.

Descubra como a detecção de aplicativos, resposta e modelagem de comportamento automatizado podem revolucionar sua defesa contra ameaças internas.

Repojacking, um portmanteau de "repositório" e "sequestro", é uma técnica de ataque que permite que um ator mal intencionado se aproveite das alterações e exclusões de nomes de usuários de contas para criar um repositório com o mesmo nome e o nome de usuário pré-existente para encenar ataques a cadeia de suprimentos de software de código aberto.

No início de junho, a empresa de segurança na nuvem Aqua revelou que milhões de repositórios de software no GitHub provavelmente estão vulneráveis à ameaça, incentivando organizações que passam por mudanças de nome a garantir que ainda possuem seu nome anterior como reservas para evitar tal abuso.

Os módulos escritos na linguagem de programação Go são particularmente suscetíveis ao repojacking, pois, ao contrário de outras soluções de gerenciamento de pacotes como npm ou PyPI, eles são descentralizados pelo fato de serem publicados em plataformas de controle de versão como GitHub ou Bitbucket.

"Qualquer um pode então instruir o espelho do módulo Go e pkg.go[.]dev a armazenar os detalhes do módulo", disse Baines.

"Um invasor pode registrar o nome de usuário recém-desocupado, duplicar o repositório do módulo e publicar um novo módulo em proxy.golang[.]org e go.pkg.dev."

Para impedir que os desenvolvedores baixem pacotes potencialmente inseguros, o GitHub implementou uma contramedida chamada aposentadoria de namespace de repositório popular que bloqueia tentativas de criar repositórios com os nomes de namespaces aposentados que foram clonados mais de 100 vezes antes de as contas dos proprietários serem renomeadas ou excluídas.

Mas a VulnCheck observou que essa proteção não é útil quando se trata de módulos Go, pois eles são armazenados em cache pelo espelho do módulo, eliminando a necessidade de interagir ou clonar um repositório.

Em outras palavras, pode haver módulos populares baseados em Go que foram clonados menos de 100 vezes, resultando em uma espécie de desvio.

"Infelizmente, mitigar todas essas ações de repojacking é algo que o Go ou o GitHub terão que assumir", disse Baines.

"Uma terceira parte não pode registrar razoavelmente 15.000 contas do GitHub.

Até então, é importante que os desenvolvedores Go estejam cientes dos módulos que usam e do estado do repositório de onde os módulos se originaram."

A revelação também surge quando a Lasso Security disse que descobriu 1.681 tokens de API expostos no Hugging Face e no GitHub, incluindo aqueles associados ao Google, Meta, Microsoft e VMware, que potencialmente poderiam ser explorados para encenar ataques na cadeia de suprimentos, envenenamento de dados de treinamento e roubo de modelos.

Publicidade

Aprenda hacking e pentest na prática com esse curso gratuito

Passe por todas as principais fases de um pentest, utilizando cenários, domínios e técnicas reais utilizados no dia a dia de um hacker ético. Conte ainda com certificado e suporte, tudo 100% gratuito. Saiba mais...