Dar aos usuários tempo para detectar e atualizar pacotes sequestrados pode ajudar os desenvolvedores a evitar o uso de código malicioso no desenvolvimento de software.

O sequestro de pacotes de software de código aberto para inserir código malicioso tornou-se uma forma popular de os invasores espalharem malware rapidamente pela cadeia de fornecimento de software. Mas agora, uma nova pesquisa descobriu que se os usuários esperarem cerca de 14 dias antes de atualizar esses pacotes de software para novas versões, eles poderão evitar os efeitos posteriores dos ataques de sequestro de pacotes.
Pesquisadores da JFrog investigaram o comprometimento de vários pacotes de software de código aberto, alguns com centenas de milhões de downloads. Eles analisaram o tempo necessário para que o ataque fosse descoberto e quantas vezes o pacote foi baixado antes que a atividade maliciosa pudesse ser mitigada.
No final das contas, eles descobriram que pode levar de apenas algumas horas a mais de uma semana para que os desenvolvedores de projetos ou mantenedores desses pacotes descubram o código malicioso e produzam uma atualização que resolva o problema, de acordo com um relatório compartilhado com o Dark Reading.
Isso significa que esperar cerca de duas semanas antes de atualizar para qualquer nova versão de um pacote de software de código aberto geralmente é uma aposta segura.
“Os usuários que esperarem cerca de 14 dias antes de atualizar para a versão mais recente de um pacote (contando a partir do dia em que a versão mais recente foi publicada) deverão estar imunes a ataques de sequestro de pacotes, já que nesse período o ataque deverá ser descoberto e as versões maliciosas do pacote serão removidas”, disse Shachar Menashe, diretor sênior de pesquisa de segurança da JFrog, ao Dark Reading.
Ascensão do sequestro de pacotes
O sequestro de pacote ocorre quando um agente de ameaça externo ou um desenvolvedor ou mantenedor de projeto injeta código malicioso em uma atualização do pacote. Quando isso ocorre, é apenas uma questão de tempo até que os usuários do pacote descubram que algo está errado, “seja por causa da carga útil do sequestro ou simplesmente auditando a alteração no código do pacote”, explica Menashe.
O aumento da popularidade de repositórios de pacotes como npm e PyPI deu aos invasores uma rota direta para infectar dezenas de milhares de usuários em questão de dias com um ataque de sequestro de pacotes, comprometendo o código-fonte aberto que os desenvolvedores usam para construir software, ele diz.
Também é mais fácil comprometer a conta de um desenvolvedor em um site de repositório do que encontrar uma vulnerabilidade crítica de dia zero e explorá-la, tornando o sequestro de pacotes mais fácil e uma maneira de causar um impacto mais amplo do que um ataque de vulnerabilidade clássico, diz Menashe.
O tempo para detecção é importante

Os pesquisadores do JFrog decidiram descobrir quanto tempo leva desde o momento em que o sequestro de pacote está ativo até o momento em que os usuários do pacote descobrem que há um problema e trabalham com os desenvolvedores do projeto para lançar uma atualização.
“Esse período é muito significativo, pois é o período em que os usuários do pacote ficam realmente suscetíveis ao ataque”, diz Menashe.
Para identificar um prazo geral para detecção, eles avaliaram vários exemplos de sequestro de pacotes sob duas perspectivas: sequestro de pacote externo e sequestro de pacote próprio.
O primeiro ocorre quando um terceiro injeta código malicioso no pacote – sequestrando a conta de um mantenedor de código para ofuscar o código malicioso como uma contribuição legítima para o projeto. O último ocorre quando desenvolvedores ou mantenedores legítimos injetam código malicioso em um pacote como forma de protesto.
Sequestros de pacotes externos
Os casos de sequestro de pacotes externos que os pesquisadores do JFrog examinaram incluíram o sequestro da biblioteca PyTorch Python usando uma dependência de código malicioso em dezembro passado que tinha como alvo desenvolvedores de aprendizado de máquina (ML); e os compromissos separados dos pacotes de software “ua-parser-js” e “coa” com um criptominerador em outubro de 2021 e novembro de 2021, respectivamente.
Os sequestros tinham potencial para ramificações significativas para a comunidade de desenvolvedores, já que PyTorch tem mais de 180 milhões de downloads e ua-parser-js quase um bilhão, enquanto coa é a pedra angular de mais de 5 milhões de repositórios de código aberto no GitHub e é baixado cerca de 9 milhões de vezes por semana.
No caso do sequestro do PyTorch, os usuários levaram cinco dias para descobrir que algo estava errado, período durante o qual o pacote foi baixado mais de 3.000 vezes; os usuários do analisador e do coa levaram apenas horas para detectar o malware nos pacotes, descobriram os pesquisadores.
Sequestros de auto-pacote

A equipe JFrog também investigou três exemplos de sequestro de autopacote, dois dos quais – os pacotes npm “colors” e “faker” que são populares entre os desenvolvedores Node.js – ocorreram simultaneamente em janeiro de 2022, quando o autor sabotou os pacotes com um número infinito de loop para protestar contra grandes corporações que não contribuem para a comunidade de código aberto.
O sequestro bloqueou efetivamente os projetos de software que dependem dos pacotes e foi detectado dois dias após o lançamento das versões maliciosas, descobriram os pesquisadores.
Em março de 2022, um desenvolvedor adicionou código ao pacote node-ipc que corrompeu o sistema de arquivos de máquinas russas e bielorrussas para protestar contra a invasão russa da Ucrânia em 2022. Nesse caso, o desenvolvedor demorou um pouco – cerca de oito dias – para descobrir o problema após o lançamento da versão maliciosa do pacote, de acordo com a JFrog.
Outras Mitigações
Além da regra geral de esperar cerca de duas semanas para atualizar um pacote de software para a versão mais recente, os desenvolvedores e organizações também podem enfrentar a ameaça de ataques à cadeia de suprimentos de software examinando cuidadosamente os pacotes antes de incluí-los em seus softwares, de acordo com JFrog.
Estão disponíveis ferramentas de curadoria que podem ajudar as organizações a definir um conjunto de regras para determinar quais pacotes os desenvolvedores podem acessar ou para bloquear o download de pacotes de terceiros lançados há menos de 14 dias. Isso pode ajudar a impedir o download de pacotes de repositórios públicos que apresentam riscos potenciais à segurança — como em casos de pacotes sequestrados.
JFrog também publicou uma postagem no blog para ajudar desenvolvedores e organizações a detectar como códigos maliciosos estão ocultos em pacotes de software para que possam evitar usá-los em seus projetos.
Para saber mais, clique aqui.