Código Malicioso Injetado no Pacote NPM 'node-ipc': Segredos de Desenvolvedores em Risco
Pesquisadores de cibersegurança descobriram atividade maliciosa em versões recentes do popular pacote NPM **node-ipc**. As versões comprometidas contêm código ofuscado projetado para roubar segredos de desenvolvedores e da nuvem, destacando a crescente sofisticação dos ataques à cadeia de suprimentos de software.

### Versões Comprometidas
**Socket** e **StepSecurity** identificaram três versões maliciosas do pacote **node-ipc**:
* [email protected]
* [email protected]
* [email protected]
Essas versões contêm comportamento de roubo/backdoor ofuscado, projetado para identificar o ambiente do host, enumerar e ler arquivos locais, comprimir e fragmentar os dados coletados, encapsular o payload em um envelope criptográfico e tentar exfiltração através de um endpoint de rede selecionado por lógica de DNS/endereço.
### Exfiltração de Segredos
O código malicioso tenta exfiltrar uma ampla gama de segredos de desenvolvedores e da nuvem para um servidor externo de comando e controle (C2). Isso inclui mais de 90 categorias de credenciais, como **Amazon Web Services**, **Google Cloud**, **Microsoft Azure**, chaves SSH, tokens Kubernetes, configurações do GitHub CLI, configurações do Claude AI e Kiro IDE, estado do Terraform, senhas de banco de dados e histórico de shell.
Os dados coletados são comprimidos em um arquivo GZIP e transmitidos para o domínio `sh.azurestaticprovider[.]net`.
### Comprometimento de Conta
As versões comprometidas foram publicadas por uma conta chamada "atiertant", que não está conectada ao autor original do pacote, "riaevangelist". A conta "atiertant" não tinha histórico de publicações anteriores relacionadas ao pacote **node-ipc**, sugerindo um possível comprometimento de conta ou adição maliciosa como mantenedor.
### Análise Técnica

Ao contrário de ataques típicos que dependem de ganchos de ciclo de vida do NPM, este ataque anexa o payload malicioso como uma Expressão de Função Imediatamente Invocada (IIFE) ao final de `node-ipc.cjs`, fazendo com que o malware seja executado incondicionalmente ao usar `require('node-ipc')`.
A versão 12.0.1 inclui uma verificação de impressão digital SHA-256, comparando-a com um hash codificado. Isso significa que a versão 12.0.1 só está ativa em máquinas onde o caminho do módulo principal corresponde ao hash alvo. As versões 9.x não possuem essa proteção e executarão o payload completo em qualquer sistema que as carregue.
### Técnicas Anti-Detecção
O malware emprega um canal secundário de exfiltração usando registros TXT de DNS após substituir o resolvedor de DNS do sistema pelo DNS Público do **Google** para contornar a segurança baseada em DNS local. Ele resolve `sh.azurestaticprovider.net` usando 1.1.1.1 (primário) ou 8.8.8.8 (fallback) para obter o IP do C2, e então direciona o resolvedor diretamente para o IP do C2 para todas as consultas de exfiltração.
Este sink de DNS direto para C2 é uma técnica anti-detecção notável, pois as consultas de exfiltração nunca atingem resolvedores de DNS públicos, tornando a atividade invisível para organizações que dependem exclusivamente de logs de DNS através de resolvedores corporativos.
Adicionalmente, o malware tenta continuar a execução independentemente, criando cópias de si mesmo em processos filhos desanexados em segundo plano, permitindo que a exfiltração persista mesmo após o término da aplicação pai.
### Implicações
"Esta campanha reflete como os ataques à cadeia de suprimentos de software estão evoluindo além de pacotes maliciosos simples para operações de coleta de credenciais cientes da infraestrutura", disse Avital Harel, líder de pesquisa de segurança na **Upwind**. "Os atacantes estão visando cada vez mais as identidades e os sistemas de automação que impulsionam os pipelines modernos de entrega de software, ao mesmo tempo em que projetam malware especificamente para se misturar ao comportamento normal de desenvolvedores e aplicações."
### Recomendações
Recomenda-se aos usuários:
* Remover as versões comprometidas do **node-ipc** e reinstalar uma versão limpa conhecida (9.2.1 e 12.0.0).
* Assumir o comprometimento e rotacionar credenciais e segredos.
* Auditar a atividade de publicação no NPM para quaisquer pacotes acessíveis com os tokens rotacionados.
* Revisar os logs de execução de fluxo de trabalho em busca de atividades suspeitas.
* Auditar logs da nuvem para verificar ações não autorizadas realizadas por identidades IAM cujas credenciais estavam disponíveis durante a janela de comprometimento.
* Bloquear o tráfego de saída para o domínio C2.