Milhões de repositórios do GitHub estão vulneráveis ao sequestro de repositório de dependência, também conhecido como repojacking, uma vulnerabilidade da cadeia de suprimentos que pode ajudar invasores a desencadearem ataques em larga escala.
O alerta vem da equipe de segurança da AquaSec, fornecedora de uma plataforma integrada de segurança na nuvem, que analisou uma amostra de 1,25 milhão de repositórios do GitHub e descobriu que cerca de 2,95% deles são vulneráveis ao repojacking. Extrapolando esse percentual para toda a base de repositórios do GitHub de mais de 300 milhões, os pesquisadores da AquaSec estimam que o problema afeta aproximadamente 9 milhões de projetos.
As alterações de nome de usuário e nome de repositório são frequentes no GitHub, pois as organizações podem obter um novo gerenciamento por meio de aquisição ou fusão, ou podem mudar para um novo nome de marca. Quando isso acontece, um redirecionamento é criado para evitar a quebra de dependências para projetos que usam código de repositórios que mudaram de nome; no entanto, se alguém registrar o nome antigo, esse redirecionamento se tornará inválido.
O repojacking é um ataque em que um hacker registra um nome de usuário e cria um repositório usado por uma organização no passado, mas que mudou de nome desde então. Ao fazer isso, qualquer projeto ou código que dependa das vinculações do projeto atacado para buscar dependências e códigos no repositório controlado pelo invasor, que pode conter malware, é alvo de injeção remota de código. Isso afeta grandes projetos de empresas como Google, GitHub, Facebook, Kubernetes, NodeJS, Amazon e muitos outros.
O GitHub sabe dessa possibilidade e implementou algumas defesas para ataques repojacking. No entanto, a AquaSec relata que as soluções até agora foram incompletas e facilmente contornadas. Por exemplo, o GitHub protege apenas projetos altamente populares, mas esses projetos podem usar uma dependência de um repositório menos popular e vulnerável que não é coberto, portanto, o comprometimento da cadeia de suprimentos também os afeta.
Além disso, o GitHub protege repositórios com mais de 100 clones na semana anterior à mudança de nome, indicando preparações maliciosas. Esta proteção não cobre projetos que se tornaram populares após a mudança de nome ou transferência de propriedade.
Veja isso
GitHub torna 2FA obrigatório para desenvolvedores ativos
GitHub disponibiliza relatórios privados de vulnerabilidades
Para destacar a importância do problema, a AquaSec examinou organizações renomadas em busca de repositórios vulneráveis e encontrou casos exploráveis em repositórios gerenciados pelo Google e Lyft. No caso do Google, um arquivo readme contendo instruções sobre como construir o projeto bastante popular “Mathsteps” apontava para um repositório do GitHub pertencente à Socratic, empresa que o Google adquiriu em 2018 e não existe mais.
No caso da Lyft, o ataque seria mais automatizado, pois a AquaSec encontrou um script de instalação no repositório da empresa que busca um arquivo ZIP de outro repositório, vulnerável ao repojacking. Um invasor registrando um novo nome de usuário e repositório com os nomes corretos pode injetar seu código em qualquer pessoa que execute o script “install.sh” do Lyft.
Os pesquisadores de segurança da AquaSec dizem que infelizmente, o risco de repojacking é generalizado, difícil de mitigar e pode ter graves repercussões para organizações e usuários. Por isso, os proprietários de projetos devem minimizar ao máximo os recursos que obtêm de repositórios externos.