Pular para o conteúdo

MALFEX: malware no npm passou 14 meses sem ser detectado

MALFEX, uma campanha de malware no npm feita por uma só pessoa, publicou 12 pacotes desde 2023 e somou 40.767 downloads. Alguns pacotes continuam no ar, sem aviso de segurança.

Por Tech AI Wire Team

4 min de leitura

XLinkedIn
Screenshot of CloudSEK's blog post MALFEX - A malicious npm postinstall no advisory has caught for fourteen months, above the report's header image.

Em números

npm packages published by one operator
12
total downloads, per Checkmarx
40,767
downloads of function-flag alone
37,419
when the first package appeared
Aug 2023

Um único atacante publica malware no npm desde agosto de 2023, e parte dele ainda podia ser instalada no fim de setembro de 2026. A empresa de segurança CloudSEK batizou a campanha de MALFEX em 30 de setembro. Ela encontrou um pacote malicioso que nenhum aviso de segurança sinalizou por 14 meses. A Checkmarx veio depois, em 5 de outubro, com uma contagem de 40.767 downloads entre os pacotes da campanha. Se algum deles estiver na sua árvore de dependências, uma máquina Windows que o instalou pode estar executando uma ferramenta de acesso remoto.

Como o ataque funciona

O npm é o registro de pacotes do JavaScript. Quando você instala um pacote, o npm pode executar um script "postinstall", um comando escolhido pelo autor do pacote. O MALFEX usa esse script para baixar e iniciar malware para Windows assim que um desenvolvedor executa npm install.

As cargas ficam escondidas à vista de todos. Segundo a CloudSEK, os scripts baixam programas de Windows disfarçados de imagens PNG. A Checkmarx rastreou três caminhos de entrega distintos.

  1. Overlord RAT. Os pacotes tlxbnhd, tldriver e mxdriver buscam um PNG falso em api.imghippo.com. Dentro há um programa AutoIt3 assinado e um script criptografado que carrega o Overlord, uma ferramenta de acesso remoto de código aberto escrita em Go. Uma ferramenta de acesso remoto, ou RAT, permite ao atacante controlar a máquina à distância.
  2. Um ladrão de dados. Uma cadeia de native-runner, img-to-native e cdn-img-fetch puxa um programa criptografado de uma conta do GitHub chamada "cavecrew". Em seguida, baixa um ladrão em Node.js de 64 MB que a Checkmarx chama de "movinlike".
  3. Um downloader de longa duração. O function-flag continua puxando novas cargas de hosts rotativos, incluindo discloud.app, squareweb.app, render.com e um proxy da CDN do Discord.

Os três caminhos visam o Windows. A Checkmarx observa que o downloader falha no macOS e no Linux, porque uma configuração exclusiva do Windows da qual ele depende não existe lá.

O que ele rouba e como se esconde

O Overlord não tem endereço de servidor fixo. "Ele pode ler notas criptografadas que o operador publica em transações da Solana, descriptografá-las e usar o resultado como sua lista de servidores", escreve a Checkmarx. A Solana é uma blockchain pública, então o operador pode trocar de servidor sem alterar o malware.

O ladrão mira oito clientes do Discord e cookies do Chrome, Edge, Brave, Opera, Vivaldi e Yandex. Também vai atrás do Telegram Desktop e das carteiras de criptomoedas MetaMask, Phantom e Coinbase. Os dados roubados saem por um webhook do Discord, que a Checkmarx diz ter sido criado em 26 de setembro de 2026.

A persistência também é discreta. A Checkmarx encontrou uma tarefa agendada chamada \Maiden, executada a cada cinco minutos, com a data recuada para 1º de janeiro de 2020. O operador também empurrou código malicioso bem para a direita com espaços, de modo que ele fica além da borda de uma janela de editor normal.

Segundo a CloudSEK, o operador assina o trabalho como "Murizada" em vários perfis, entre eles malfexkkj, malfex_user e cavecrew.

Os pacotes a verificar

PacoteFunçãoDownloads, segundo a CheckmarxSituação
function-flagDownloader37.419No ar, sem aviso
function-colorNão informada300No ar, sem aviso
cdn-img-fetchCadeia do ladrão643O aviso cobre apenas 1.0.0-1.0.1
img-to-nativeCadeia do ladrão967Com aviso
native-runnerCadeia do ladrão872Listado pela Checkmarx
tlxbnhdOverlord RAT139Apreendido
tldriverOverlord RAT138Apreendido
mxdriverOverlord RAT289Apreendido

As duas empresas contam de forma um pouco diferente. A CloudSEK lista function-flag, cdn-img-fetch e function-color como ainda instaláveis. "Os três pacotes sem avisos são as únicas ameaças ativas que os defensores podem atacar hoje", escreve. A Checkmarx explica a diferença em cdn-img-fetch: o aviso dele, MAL-2026-17320, cobre as versões 1.0.0 e 1.0.1, mas as versões maliciosas são a 1.0.2 e a 1.0.3.

Segundo a Checkmarx, o operador publicou 12 pacotes no total: oito maliciosos e quatro iscas inofensivas. Na semana até 1º de outubro, os pacotes ainda tiveram 3.017 downloads.

Os desenvolvedores têm sido um alvo frequente neste mês. No início de outubro, foi relatada outra campanha que escondia malware em hooks post-checkout do Git dentro de repositórios falsos de recrutadores.

O que isso significa para os desenvolvedores

  • Procure agora nos seus arquivos de lock. Procure cada nome de pacote da tabela em package-lock.json, yarn.lock ou pnpm-lock.yaml, inclusive nas dependências transitivas. npm ls <name> mostra de onde um pacote veio.
  • Não confie apenas em avisos. O aviso do cdn-img-fetch cobre as versões erradas, e dois pacotes ativos não tinham nenhum. Um npm audit limpo não prova que você está a salvo desta campanha.
  • Desative scripts de instalação onde puder. npm install --ignore-scripts, ou ignore-scripts=true no .npmrc, impede que o código postinstall rode. Permita scripts apenas nos pacotes que precisam deles.
  • Verifique as máquinas Windows que instalaram um pacote da lista. Procure uma tarefa agendada chamada \Maiden e um arquivo chamado node_runtime_helper.exe em %APPDATA%\Microsoft\Windows\. A Checkmarx também lista o endereço 104.234.65.75, na porta 700, como servidor de download.
  • Troque o que o ladrão leva. Se uma máquina foi atingida, saia do Discord e do Telegram, limpe as sessões do navegador, altere as senhas salvas e mova os fundos de qualquer carteira do navegador.

Os 37.419 downloads do function-flag são o número para lembrar. Um pequeno utilitário de nome simples carregou quase toda a campanha.

Fontes

  1. MALFEX - A malicious npm postinstall no advisory has caught for fourteen months - CloudSEK
  2. MALFEX npm Malware Campaign: Three Payloads And An Adversary That Signs Their Work - Checkmarx

Artigos relacionados