Agentes de ameaças desconhecidos foram encontrados propagando versões trojanizadas do jQuery no npm, GitHub e jsDelivr no que parece ser uma instância de um ataque “complexo e persistente” à cadeia de suprimentos.
“Esse ataque se destaca devido à alta variabilidade entre os pacotes”, disse Phylum em uma análise publicada na semana passada.
“O invasor habilmente escondeu o malware na função 'finish' raramente usada do jQuery, que é chamada internamente pela função mais widespread 'fadeTo' de seus utilitários de animação.”
![Cíber segurança](https://i0.wp.com/blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPFFLXZHfTA0FUmsAJ30SeqiM34x3Qes8BjBSTnhm4zHUJUal87CZLGZFJ7f5vxdaZIyNeTzf7fA-8s0CQhiG9ltxRFReWpgvmp2VfSMbjmN8i0yCv_74a3h7HaGxNlFqr5LEyPghIcxNNfXkksw3nQvKsqKKAU4wsl5Ll9UKu2hv6fbtXy4PHGNBW8SxC/s1200/a_d.png?resize=700%2C87&ssl=1)
Até 68 pacotes foram vinculados à campanha. Eles foram publicados no registro npm de 26 de maio a 23 de junho de 2024, usando nomes como cdnjquery, footersicons, jquertyi, jqueryxxx, logoo e sytlesheets, entre outros.
Há evidências que sugerem que cada um dos pacotes falsos foi montado e publicado manualmente devido ao grande número de pacotes publicados de várias contas, às diferenças nas convenções de nomenclatura, à inclusão de arquivos pessoais e ao longo período em que foram carregados.
Isso é diferente de outros métodos comumente observados, nos quais os invasores tendem a seguir um padrão predefinido que ressalta um elemento de automação envolvido na criação e publicação dos pacotes.
As alterações maliciosas, segundo o Phylum, foram introduzidas em uma função chamada “finish”, permitindo que o agente da ameaça exfiltre dados de formulários de websites para uma URL remota.
Investigações posteriores descobriram que o arquivo jQuery trojanizado estava hospedado em um repositório do GitHub associado a uma conta chamada “indexsc”. Também estão presentes no mesmo repositório arquivos JavaScript contendo um script apontando para a versão modificada da biblioteca.
“Vale a pena notar que o jsDelivr constrói essas URLs do GitHub automaticamente, sem precisar enviar nada explicitamente para o CDN”, disse Phylum.
“Provavelmente, é uma tentativa do invasor de fazer com que a fonte pareça mais legítima ou de passar furtivamente por firewalls usando o jsDelivr em vez de carregar o código diretamente do GitHub.”
O desenvolvimento ocorre no momento em que o Datadog identificou uma série de pacotes no repositório Python Bundle Index (PyPI) com recursos para baixar um binário de segundo estágio de um servidor controlado pelo invasor, dependendo da arquitetura da CPU.