Dez pacotes npm com erros de digitação intencionais, carregados em 4 de julho de 2025, foram encontrados baixando um infostealer que visa dados sensíveis em sistemas Windows, Linux e macOS. Esses pacotes, que imitam bibliotecas populares, evadiram a detecção por meio de múltiplas camadas de ofuscação e acumularam quase 10.000 downloads. A empresa de cibersegurança Socket relatou a ameaça, observando que os pacotes ainda estão disponíveis no registro.
Em 4 de julho de 2025, atores de ameaças carregaram dez pacotes maliciosos no registro npm, usando typosquatting para se passar por software legítimo como TypeScript, discord.js, ethers.js, nodemon, react-router-dom e zustand. Os pacotes—typescriptjs, deezcord.js, dizcordjs, dezcord.js, etherdjs, ethesjs, ethetsjs, nodemonjs, react-router-dom.js e zustand.js—enganaram desenvolvedores a instalá-los ao aparecerem nos resultados de busca pelos nomes reais.
Após a instalação, um script postinstall é ativado, gerando um terminal oculto que executa 'app.js' e limpa a janela para evitar detecção. Esse carregador emprega quatro camadas de ofuscação: um invólucro eval de auto-decodificação, descriptografia XOR com chave dinâmica, payload codificado em URL e ofuscação pesada de fluxo de controle. Ele exibe um CAPTCHA ASCII falso no terminal para parecer legítimo, depois envia a geolocalização da vítima e a impressão digital do sistema para um servidor de comando e controle.
O malware subsequentemente baixa um binário infostealer de 24 MB empacotado com PyInstaller adaptado ao SO do host. Essa ferramenta extrai credenciais de keyrings do sistema, incluindo Windows Credential Manager, macOS Keychain e opções do Linux como SecretService, libsecret e KWallet. Ela também mira navegadores baseados em Chromium e Firefox para perfis, senhas salvas e cookies de sessão, além de chaves SSH em diretórios comuns e tokens como OAuth, JWT e chaves API.
Dados roubados são comprimidos em arquivos e armazenados em /var/tmp ou /usr/tmp antes da exfiltração para o servidor do atacante em 195.133.79.43. Apesar do relatório da Socket ao npm, os pacotes ainda estavam disponíveis no final de outubro de 2025. Especialistas instam desenvolvedores afetados a remover os pacotes, rotacionar todas as credenciais e verificar fontes de editores respeitáveis para prevenir compromissos.
