Threat actors com ligações com a Coreia do Norte foram associados a um novo conjunto de pacotes maliciosos do npm que se passam por ferramentas de polyfill do Rollup para facilitar acesso remoto e roubo de dados.
Segundo a JFrog, os pacotes “rollup-packages-polyfill-core” e “rollup-runtime-polyfill-core” imitam o projeto legítimo “rollup-plugin-polyfill-node”, inclusive na descrição, nos metadados do repositório e na estrutura do pacote.
“Os pacotes parecidos se posicionam no mesmo espaço de nomes de rollup, polyfill, core e node, o que pode parecer plausível durante uma revisão rápida de dependências”, afirmou a JFrog em uma análise técnica da campanha.
A campanha também envolve outros quatro pacotes, todos já removidos do repositório npm:
- quirky-token
- react-icon-svgs
- rollup-plugin-polyfill-connect
- swift-parse-stream
O ponto mais relevante é que “rollup-packages-polyfill-core” instala e carrega “swift-parse-stream”, enquanto “rollup-runtime-polyfill-core” instala “quirky-token”.
Em paralelo, “react-icon-svgs” foi identificado instalando “rollup-plugin-polyfill-connect” como segunda etapa.
“Os pacotes de segunda etapa são utilitários SVG quase idênticos que buscam um objeto JSON no JSONKeeper e executam o campo model”, disse a empresa de cibersegurança.
“Essa estrutura em camadas, junto com nomes parecidos, metadados que parecem legítimos, execução oculta no momento da instalação, verificações de ambiente e cargas úteis de roubo de credenciais e acesso remoto, é semelhante a campanhas anteriores do Lazarus ligadas à Coreia do Norte no npm.”
Vale destacar que esta não é a primeira vez que threat actors norte-coreanos publicam pacotes npm se passando por ferramentas de polyfill do Rollup.
Em abril de 2026, a Panther detalhou uma campanha prolongada no npm que envolveu a publicação de 108 pacotes maliciosos, distribuídos em 261 versões, para entregar BeaverTail e OtterCookie, duas famílias de malware já associadas ao Contagious Interview.
Entre esses pacotes estava “rollup-plugin-polyfill-route”, publicado em 20 de março de 2026.
O ponto de partida do ataque é um comando de instalação npm codificado em Base64 para “swift-parse-stream” ou “quirky-token”, escondido dentro de “rollup-packages-polyfill-core” ou “rollup-runtime-polyfill-core”.
Os dois pacotes de segunda etapa são disfarçados como utilitários de sanitização de SVG, mas, ao mesmo tempo, acessam uma URL do JSON Keeper para recuperar e executar um malware em JavaScript.
O código em JavaScript faz verificações para evitar execução em ambientes de desenvolvimento em cloud, sandboxes, runtimes serverless e infraestruturas de análise.
Depois de passar por essa barreira, o malware instala as dependências necessárias e se conecta a um servidor externo, “216.126.236[.]244”, para buscar uma carga útil criptografada em JavaScript.
A carga útil decifrada atua então como um loader para scripts adicionais responsáveis por habilitar acesso remoto ao host comprometido, com suporte a sessões interativas de terminal, execução de comandos, captura de tela, encerramento de processos, movimentação do mouse no Windows, cliques, rolagem, pressionamento de teclas e atalhos de teclado usando o pacote “@nut-tree-fork/nut-js”.
O código também rouba dados de navegadores e carteiras de criptomoedas, coleta arquivos que correspondem a extensões específicas e captura periodicamente o conteúdo da área de transferência.
Os recursos se sobrepõem aos do OtterCookie, e o uso de “@nut-tree-fork/nut-js” para controle remoto de mouse e teclado também foi observado em um pacote chamado “express-session-js”, detalhado pela SafeDep em abril de 2026.
O componente coletor de arquivos foi encontrado buscando especificamente históricos de edição associados ao Microsoft Visual Studio Code, Windsurf e Cursor, além de configurações de ferramentas de desenvolvimento e de IA, como AWS, Microsoft Azure, Google Gemini, Anthropic Claude, Foundry, SSH e Z shell (Zsh).
“Os plugins do Rollup costumam ser carregados a partir de arquivos de configuração locais, estações de trabalho de desenvolvedores e tarefas de CI”, disse a JFrog.
“Esses ambientes muitas vezes têm acesso a ativos sensíveis, como código-fonte, tokens do npm, credenciais do git, chaves de cloud, chaves SSH, dados de navegadores e segredos de projetos.”
“A carga útil também vai além de um simples downloader.
Quando as etapas posteriores são executadas, o invasor ganha capacidades de coleta e de controle.
Isso torna a carga útil relevante para estações de trabalho de desenvolvedores e máquinas de build, onde muitas vezes estão presentes chaves de API, chaves SSH, materiais de carteiras, credenciais de cloud e segredos de projetos.”
A divulgação coincide com a descoberta de múltiplos ataques à cadeia de suprimentos de software por Checkmarx, SafeDep e pelo pesquisador de segurança da AWS Chi Tran, com foco em envenenar repositórios de pacotes open source e roubar dados valiosos:
- Um cluster de pelo menos oito forks trojanizados de “pyrogram”, publicados por um threat actor que operava sob múltiplas identidades entre novembro de 2025 e junho de 2026, incluindo uma backdoor oculta que concede controle remoto total sobre qualquer servidor que execute o pacote PyPI infectado, ao permitir a execução de código Python arbitrário ou comandos de shell enviados pelo invasor.
Os resultados da execução dos comandos são exfiltrados via Telegram.
A atividade recebeu o nome de Operation Navy Ghost pela Checkmarx.
- Um cluster de 30 pacotes npm que imitam ferramentas da Polymarket e bibliotecas gerais de matemática, publicados por 10 contas de mantenedores do npm, com alvo em desenvolvedores de DeFi para entregar um infostealer em JavaScript que lê cofres de carteiras cripto, credenciais de navegadores, chaves SSH, credenciais da AWS, tokens do npm, configurações do Docker, histórico de shell e bancos de dados de gerenciadores de senhas.
- Um cluster de 25 pacotes npm publicados sob o escopo @marketfront por uma conta do npm chamada “marketfront”, contendo um coletor de credenciais no pós-instalação que lê 20 arquivos de credenciais e segredos, incluindo ~/.ssh, ~/.aws/credentials, ~/.kube/config, ~/.docker/config.json, ~/.npmrc, ~/.netrc, ~/.pgpass, ~/.git-credentials, ~/.env e histórico de shell, e exfiltra os dados.
- Um pacote Python chamado “security-alerts-sdk”, que se apresenta como uma ferramenta de monitoramento de data breach, mas contém código para disparar uma backdoor que consulta periodicamente um servidor externo, “142.93.211[.]30:5000”, em busca de comandos e exfiltra chaves privadas SSH, credenciais da AWS, tokens do Docker, npm, PyPI e git, arquivos .env e bancos de dados de credenciais de navegadores para o mesmo servidor.
- Um cluster de 15 pacotes npm publicados por um único threat actor operando sob 13 escopos do npm, que aciona uma carga útil em JavaScript no pós-instalação responsável por baixar e executar um binário ELF compilado em Rust e hospedado no GitHub.
Esse binário, por sua vez, coleta uma ampla variedade de dados de carteiras de criptomoedas, navegadores e outros aplicativos, incluindo tokens de provedores de cloud, chaves SSH, sessões de plataformas de mensagens, configurações de clientes de banco de dados e credenciais de desenvolvedores.
- Um pacote npm chamado “events-runtime”, que faz typosquatting do pacote “events” e, de forma condicional, inicia um ladrão de carteiras de criptomoedas, exfiltra dados de reconhecimento do host por Slack e Telegram, abre um canal bidirecional de comandos via Slack e lê configuração e blocos de carga útil de um contrato inteligente Ethereum usado como resolvedor de dead drop.
A lógica maliciosa só é acionada quando o ID do evento é “eventId0”.
- Um pacote npm chamado “o3forms”, que rouba credenciais de provedores de cloud, varre segredos de desenvolvedores e ambientes de CI/CD, realiza reconhecimento interno da rede e exfiltra os dados para um endpoint controlado pelo invasor no Cloudflare Workers.
“O invasor dividiu o ataque em um pacote aparentemente benigno, publicado no repositório, e uma subdependência *-utils ancorada no GitHub que carrega tanto os ganchos de instalação quanto o malware real”, disse Tran.
“Essa estrutura foi desenhada especificamente para derrotar a varredura estática e de scripts de ciclo de vida da qual a maior parte das ferramentas do lado do repositório e do CI depende.”
Usuários que tenham instalado qualquer um dos pacotes citados são orientados a removê-los das estações de trabalho, considerar o ambiente comprometido e rotacionar credenciais, bloquear os canais de saída maliciosos e habilitar a varredura de dependências em pipelines de CI/CD para sinalizar pacotes recém-publicados ou suspeitos.
Publicidade
Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...