Pacote npm ‘imgdecode’ infecta 1.000 PCs com malware em DLL
Pacote npm 'imgdecode', ativo e com 979 downloads, usa DLL no Windows para baixar payload criptografado do GitHub, injetar código em dllhost.exe e roubar dados.

Segurança Digital
Pacote npm 'imgdecode' compromete PCs ao usar DLL maliciosa para roubar informações via injeção de código.
Leia também: Ahold Delhaize enfrenta incidente cibernético nos EUA
O pacote npm imgdecode, publicado em 30 de setembro por um usuário identificado como “malfexteste8”, esconde um loader de malware em uma DLL para Windows, baixa payloads criptografados do GitHub e injeta o código em processos legítimos como o dllhost.exe, comprometendo sistemas e abrindo caminho para roubo de dados e controle remoto de máquinas.
Pacote malicioso segue ativo com quase mil downloads
O imgdecode faz parte da campanha de cadeia de suprimentos de software batizada de MALFEX, em que um ator ainda desconhecido publica pacotes maliciosos no repositório npm para atingir principalmente sistemas Windows. A operação está em curso desde o ano passado e segue ativa nesta semana, com publicações recentes e substituições rápidas de pacotes removidos.
Até o momento, o imgdecode soma 979 downloads e continua disponível no registro npm, o que mantém o risco aberto para desenvolvedores e empresas que utilizam o ecossistema Node.js em ambientes Windows.
Pesquisadores da SafeDep, Checkmarx e CloudSEK analisam a campanha e apontam que oito pacotes maliciosos já foram identificados, publicados por pelo menos cinco perfis de publicadores npm associados à MALFEX. Alguns desses pacotes atuam como loaders para ferramentas de acesso remoto (RATs) como Overlord e movinlike, além de stealers voltados a roubo de credenciais e dados sensíveis.
Em relatório técnico, a SafeDep resume o funcionamento do pacote: “The npm package imgdecode hides a malicious loader in a compiled Node.js addon”. Esse addon compilado em DLL é o núcleo da infecção.
Como o imgdecode infecta sistemas Windows
No código JavaScript visível, o imgdecode parece inofensivo: são poucas linhas que apenas carregam um addon nativo. O problema está nesse componente compilado, uma DLL de 64 bits para Windows construída em Microsoft Visual C++.
Quando um programa Node.js em Windows executa require('imgdecode'), a DLL realiza uma série de verificações de ambiente, inclusive para detectar se está rodando em máquina virtual, sandbox ou sob ferramentas de monitoramento como Process Monitor e Wireshark. A ideia é evitar análise por pesquisadores e produtos de segurança.
Se o ambiente é considerado “seguro” para o atacante, a DLL tenta baixar um arquivo JPG criptografado de um repositório GitHub associado à conta “cavecrew”, hoje já inacessível. O arquivo, apelidado de banner.jpg, contém o payload real: um shellcode que será executado diretamente na memória da máquina vítima.
O conteúdo é descriptografado com a chave “nif-runtime-2027”. Em seguida, a DLL injeta o resultado em um novo processo dllhost.exe, um componente legítimo do Windows, o que dificulta a detecção por antivírus tradicionais e ferramentas baseadas apenas em assinaturas.
Os pesquisadores destacam ainda uma técnica de controle remoto da ativação do loader. Após descriptografar, a DLL verifica os primeiros bytes do texto em claro. “After decryption, the DLL checks the first bytes of the plaintext. If they match a JPEG or PNG signature, the DLL stops”, explica a SafeDep. Assim, o operador consegue, à distância, desligar o loader servindo um conteúdo que se desencripta para uma imagem válida em vez do shellcode.
Entenda o contexto
A MALFEX é uma campanha de ataque à cadeia de suprimentos que mira desenvolvedores e empresas que confiam em pacotes npm para construir aplicações. Em vez de atacar diretamente usuários finais, o ator publica bibliotecas aparentemente úteis, mas que carregam código malicioso escondido em addons nativos ou em cadeias de dependências.
Entre os oito pacotes identificados, há módulos que atuam como carregadores do RAT Overlord e de um stealer escrito em Node.js. Em uma das cadeias, pacotes como cdn-img-fetch, img-to-native e native-runner trabalham em conjunto para extrair shellcode de arquivos JPG, copiar o código para memória executável e rodá-lo com o auxílio de um módulo de FFI (interface para funções nativas).
Outra via de infecção usa hooks de instalação (postinstall) para executar JavaScript logo após o download do pacote, contatando um servidor externo e baixando um binário adicional não documentado.
Os pesquisadores descrevem um operador altamente reativo. Quando pacotes como native-runner e img-to-native são removidos, surgem rapidamente substitutos como runhelper e imgbundle. “Six hours after runhelper was unpublished, the operator published imgdecode with a compiled DLL to run the shellcode”, relata a SafeDep, mostrando que o atacante acompanha publicamente as remoções e ajusta a infraestrutura quase em tempo real.
O que o malware faz após a infecção
Uma vez executado o shellcode injetado no dllhost.exe, o sistema comprometido passa a se comunicar com um servidor de comando e controle (C2) operado pelo grupo. A análise aponta o IP 104.234.65.75, na porta 7007, como endereço-chave da infraestrutura maliciosa.
Esse backend permite que o operador envie novos comandos e payloads. O malware tem capacidade de abrir conexões WebSocket com o C2, executar comandos de shell, transferir arquivos, controlar processos, capturar área de transferência, tirar screenshots e até simular entrada de mouse e teclado, funcionando na prática como uma ferramenta completa de acesso remoto.
Paralelamente, o código adota funções típicas de stealer. Ele varre o sistema em busca de arquivos com extensões sensíveis, como .kdbx (bancos de senhas), .pem e .ppk (chaves criptográficas) e .env (variáveis de ambiente com credenciais e segredos). Também tenta extrair dados de navegadores baseados em Chromium, além de aplicativos populares de comunicação como Discord e Telegram.
O alvo inclui ainda carteiras de criptomoedas e plataformas de jogos e distribuição, como Steam, Epic Games, Riot, Battle.net, Minecraft e Ubisoft. A combinação de controle remoto com roubo de credenciais e ativos digitais amplia o impacto potencial, especialmente para fintechs, empresas de tecnologia, estúdios de games e serviços online.
Para manter persistência no sistema infectado, o malware adiciona chaves na área de Run do Registro do Windows e cria tarefas agendadas com nomes que imitam serviços legítimos, como “MicrosoftEdgeUpdateService”. Isso garante que o código volte a ser executado após reinicializações, mesmo que o pacote npm original seja removido do projeto.
Campanha usa builder e licenças de malware
A análise do payload baixado pelo imgdecode mostra que o código Go responsável por baixar o stealer em Node.js e o RAT movinlike carrega um arquivo .env com um endereço de C2 e uma chave de licença MALFEX. A presença dessa licença indica o uso de um builder ou plataforma de geração de malware com controle de acesso, modelo cada vez mais comum em esquemas de crime como serviço.
A arquitetura modular permite que o operador troque rapidamente componentes — como mudar o repositório no GitHub ou substituir pacotes comprometidos por novos nomes aparentando utilidades legítimas — sem alterar a lógica central da campanha. Isso explica a velocidade com que o imgdecode entrou em cena após a remoção de outros módulos.
Risco para a cadeia de suprimentos de software
A descoberta do imgdecode reforça a fragilidade da cadeia de suprimentos de software baseada em pacotes de terceiros. Como o loader está escondido em uma DLL e não depende de hooks de instalação ruidosos, ele pode passar despercebido em revisões superficiais de código e em ferramentas que só analisam JavaScript.
O impacto recai diretamente sobre desenvolvedores e equipes de infraestrutura que dependem de bibliotecas npm para construir e rodar aplicações. Em ambientes Windows, a combinação de addons nativos, injeção em processos legítimos e técnicas anti-análise cria um cenário de infecção silenciosa e de difícil detecção.
Setores como tecnologia, finanças digitais, jogos e comunicação estão especialmente expostos, pela quantidade de credenciais sensíveis, chaves de API, carteiras de criptomoedas e dados de usuários armazenados em máquinas de desenvolvimento e servidores de aplicação.
Como desenvolvedores podem se proteger
Especialistas em segurança recomendam que qualquer desenvolvedor ou empresa que tenha instalado o imgdecode ou outros pacotes associados à MALFEX trate os sistemas Windows como potencialmente comprometidos. A orientação é isolar as máquinas, verificar chaves de Registro e tarefas agendadas suspeitas, rodar ferramentas de detecção comportamental e revisar conexões de saída em busca de comunicação com o IP 104.234.65.75:7007.
Também é indicada a rotação imediata de credenciais (senhas, chaves de acesso, tokens) usadas a partir das máquinas suspeitas. No caso de carteiras de criptomoedas cujas seed phrases possam ter sido armazenadas nos sistemas afetados, a recomendação é transferir fundos para novas carteiras e invalidar as antigas.
Para reduzir o risco de novos incidentes, equipes de desenvolvimento e segurança são orientadas a reforçar processos de revisão de dependências: checar a reputação de pacotes e publicadores, limitar o uso de addons nativos quando não estritamente necessários, utilizar scanners específicos para cadeia de suprimentos e monitorar ativamente mudanças súbitas em dependências e atualizações que incluam binários compilados.
Do lado das plataformas, a expectativa é que o ecossistema npm e serviços de hospedagem de código intensifiquem filtros automatizados e revisões manuais para pacotes com componentes nativos e comportamentos de rede suspeitos. A rapidez com que o operador da MALFEX substitui módulos removidos, no entanto, indica um jogo de gato e rato que deve se prolongar e exige vigilância contínua de toda a comunidade de desenvolvimento.
Fonte: matéria original


