Na última quarta-feira, dia 3 de Agosto, Um agente malicioso clonou mais de 35 mil repositórios do GitHub e arescentou código malicioso em códigos-fonte clonados. A aposta do malfeitor – que criou os clones com nomes que utilizavam typosquatting, era de que muitos desenvolvedores fossem enganados e utilizassem o código adulterado. Esse código malicioso era capaz de coletar detalhes do ambiente em que fosse executado. O código pode coletar as identidades do dispositivo e do usuário e, possivelmente, dados confidenciais adicionais. Esse código incluía a capacidade de baixar malware adicional de um site de terceiros. Esse malware adicional pode explorar ainda mais qualquer aplicativo ou ambiente que esteja usando esse código originado nos repositórios clonados como armas no GitHub.
Veja isso
Falsos metadados põem em risco recursos no GitHub
GitHub coloca em open source o seu sistema de IAM
“Os atacantes usaram técnicas de Typosquatting (também chamado de sequestro de URL) para clonar e republicar repositórios populares com nomes de contas falsos, imitando os originais e adicionando commits (realização de um conjunto de mudanças) extras com código malicioso. O objetivo dos atacantes era roubar variáveis de ambiente e, em alguns casos, até habilitar backdoors para máquinas”, explica Lotem Finkelsteen, chefe de Inteligência de Ameaças da Check Point Software Technologies.
A comunidade de desenvolvedores identificou o implante malicioso dentro do código que foi baixado do GitHub que, imediatamente, temeu que o código-fonte dos repositórios originais tivesse sido infectado por esse malware. No entanto, após mais pesquisas, ficou claro que o código infectado era de fato um código clonado que havia sido baixado do GitHub sob a suposição de que o desenvolvedor estava baixando o repositório original não malicioso.
Isso tem implicações potencialmente catastróficas para a cadeia de suprimentos de software, em que um desenvolvedor despretensioso baixa erroneamente um repositório de código clonado que inclui código malicioso, usa-o para seus próprios propósitos e, sem saber, fornece a seus usuários um código que inclui malware.
“Este ataque destaca novamente como é fácil conduzir ataques à cadeia de suprimentos. Esses tipos de ataques estão se espalhando amplamente em canais de código aberto, de NPM (Node Package Manager) e PYPI (Python Package Index) e, agora, para o GitHub. Na Check Point Software, nossa missão é manter o desenvolvimento seguro contra os ataques e ameaças à cadeia de suprimentos”, reforça Finkelsteen.
Este ataque recente foi executado no GitHub, o repositório de código mais popular usado por mais de 83 milhões de desenvolvedores em todo o mundo. Seu repositório permite que os desenvolvedores rastreiem e controlem o código-fonte que eles armazenam no repositório. Seus usuários representam a maior comunidade de codificação do mundo. É comum que os desenvolvedores baixem repositórios de código e usem o código em seus próprios aplicativos.
Em uma situação em que um desenvolvedor deseja alterar significativamente o código de outro, ele usa a função Clone do GitHub. Isso permite que um desenvolvedor crie uma cópia exata do código de outra pessoa – onde a versão original permanece intocada sob o gerenciamento de seu autor original. Ele mantém suas estatísticas de interação existentes, como visualizações, contribuições e seguidores, enquanto a nova versão clonada está sob nova propriedade, sem estatísticas de interação associadas a ela, porque essencialmente é um novo código (embora copiado de algo existente).
Como evitar ataques à cadeia de suprimentos
A prática de colocar a segurança no ponto mais inicial possível do processo de desenvolvimento (shifting security “left”) e fornecer às equipes de segurança ferramentas automatizadas para o DevOps inserir a segurança em seus pipelines não é nova, mas a adoção é lenta. Essa tentativa de atacar inúmeros ambientes e aplicativos é um exemplo claro de que a segurança da cadeia de suprimentos é crítica.
Neste sentido, é importante ter ferramentas de segurança automatizadas para desenvolvedores para garantir que todo o código seja centrado na proteção, pois verificam a infraestrutura como código e o código-fonte para eliminar ameaças na fase inicial.