Pesquisadores de cibersegurança descobriram um novo pacote suspeito carregado no registro de pacotes npm, projetado para instalar um cavalo de Troia de acesso remoto em sistemas comprometidos.
O pacote em questão é glup-debugger-log, que visa usuários da ferramenta de desenvolvimento gulp, fingindo ser um “registrador para gulp e plugins gulp”. Até agora, ele foi baixado 175 vezes.
A empresa de segurança da cadeia de suprimentos de software, Phylum, que descobriu o pacote, disse que ele vem com dois arquivos obfuscados que trabalham em conjunto para implantar a carga maliciosa.
“Um funciona como uma espécie de iniciador de drop, preparando o terreno para a campanha de malware ao comprometer a máquina-alvo se atender a certos requisitos, em seguida, baixando componentes de malware adicionais, e o outro script fornece ao atacante um mecanismo de acesso remoto persistente para controlar a máquina comprometida”, disse.
A investigação mais aprofundada do Phylum sobre o arquivo package.json da biblioteca – que atua como um arquivo de manifesto que detalha todos os metadados associados a um pacote – encontrou o uso de um script de teste para executar um arquivo JavaScript (“index.js”) que, por sua vez, chama um arquivo JavaScript obfuscado (“play.js”).
O segundo arquivo JavaScript funciona como um iniciador para buscar o próximo estágio do malware, mas não antes de executar uma série de verificações de interfaces de rede, tipos específicos de sistemas operacionais Windows (Windows NT) e, em uma reviravolta incomum, o número de arquivos na pasta Desktop.
“Eles verificam para garantir que a pasta Desktop do diretório de casa da máquina contenha sete ou mais itens”, explicou o Phylum.
“À primeira vista, isso pode parecer absurdamente arbitrário, mas provavelmente é uma forma de indicador de atividade do usuário ou uma maneira de evitar a implantação em ambientes controlados ou gerenciados, como VMs ou instalações novas. Parece que o atacante está mirando máquinas de desenvolvedores ativos.”
Assumindo que todas as verificações sejam concluídas com sucesso, ele lança outro JavaScript configurado no arquivo package.json (“play-safe.js”) para estabelecer a persistência. O carregador ainda inclui a capacidade de executar comandos arbitrários a partir de um URL ou de um arquivo local.
O arquivo “play-safe.js”, por sua vez, estabelece um servidor HTTP e escuta na porta 3004 para comandos de entrada, que são então executados. O servidor envia a saída do comando de volta ao cliente na forma de uma resposta em texto simples.
O Phylum descreveu o cavalo de Troia como ao mesmo tempo rudimentar e sofisticado, devido à sua funcionalidade mínima, natureza autocontida e sua dependência de obfuscação para resistir à análise.
“Isso destaca a paisagem em constante evolução do desenvolvimento de malware nos ecossistemas de código aberto, onde os atacantes estão empregando técnicas novas e inteligentes na tentativa de criar malware compacto, eficiente e furtivo que esperam poder escapar da detecção, mantendo ao mesmo tempo capacidades poderosas”, disse a empresa.