SOC Prime Bias: Critical

30 Jul 2026 15:32 UTC

DEV#POPPER RAT Distribuído Através de Lançamentos Comprometidos do Joyfill no npm

Author Photo
SOC Prime Team linkedin icon Seguir
DEV#POPPER RAT Distribuído Através de Lançamentos Comprometidos do Joyfill no npm
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Duas versões beta comprometidas do @joyfill pacote npm foram encontradas contendo um implante JavaScript de importação. O implante usa transações em blockchain através de Tron, Aptos e BNB Smart Chain para resolver e baixar o trojan de acesso remoto DEV#POPPER (RAT). A campanha tem como alvo estações de trabalho de desenvolvedores e pipelines CI/CD executando código malicioso assim que o módulo afetado é importado.

Investigação

A Equipe de Pesquisa da Socket descobriu o comprometimento enquanto analisava versões beta de @joyfill/layouts and @joyfill/components. Os pesquisadores identificaram uma cadeia de entrega de payloads em várias etapas que combinava JavaScript ofuscado com mecanismos de despacho baseados em blockchain. A investigação ligou o carregador inicial à família PolinRider e confirmou que o payload final pertencia à família de malware DEV#POPPER.

Mitigação

Os desenvolvedores devem remover imediatamente as @joyfill versões beta afetadas de lockfiles, caches de pacotes, ambientes de build e artefatos de implantação. Fixar dependências em versões verificadas como @joyfill/layouts@0.1.1 or @joyfill/components@4.0.0-rc24 é recomendado. As equipes de segurança também devem bloquear as versões comprometidas através de proxies de registro e ferramentas de governança de dependências.

Resposta

Qualquer sistema que importou os pacotes afetados deve ser isolado, e todas as credenciais acessíveis ao processo Node.js comprometido devem ser rotacionadas. Os investigadores devem inspecionar aplicativos de desenvolvedores, incluindo VS Code, GitHub Desktop e Discord, para mudanças inesperadas nos módulos principais. A telemetria de endpoint e CI/CD também deve ser revisada para processos Node.js destacados, endereços C2 conhecidos e tráfego suspeito de RPC em blockchain.

Fluxo de Ataque

Detecções

Possível Tentativa de Abuso de Publicnode Ethereum Como Canal C2 (via dns_query)

Equipe SOC Prime
29 Jul 2026

Possível Comunicação de Domínio de Consulta de IP Tentada (via dns)

Equipe SOC Prime
29 Jul 2026

Possível Captura de Tela no Linux (via linha de comando)

Equipe SOC Prime
29 Jul 2026

Arquivo Oculto Foi Criado no Host Linux (via file_event)

Equipe SOC Prime
29 Jul 2026

IOCs (HashSha256) para detectar: Duas Versões Beta do npm Joyfill Comprometidas para Entregar DEV#POPPER Trojan de Acesso Remoto

Regras SOC Prime AI
29 Jul 2026

IOCs (SourceIP) para detectar: Duas Versões Beta do npm Joyfill Comprometidas para Entregar DEV#POPPER Trojan de Acesso Remoto

Regras SOC Prime AI
29 Jul 2026

IOCs (DestinationIP) para detectar: Duas Versões Beta do npm Joyfill Comprometidas para Entregar DEV#POPPER Trojan de Acesso Remoto

Regras SOC Prime AI
29 Jul 2026

Detecção de Indicadores de Malware DEV#POPPER [Conexão de Rede do Windows]

Regras SOC Prime AI
29 Jul 2026

Detecção de Pacotes npm Joyfill Comprometidos Entregando Trojan de Acesso Remoto [Evento de Arquivo no Linux]

Regras SOC Prime AI
29 Jul 2026

Detecção de Injeção de Módulo Node.js e Execução de Processo Destacado [Criação de Processo no Linux]

Regras SOC Prime AI
29 Jul 2026

Execução de Simulação

Pré-requisito: O Check de Pré-voo de Telemetria & Base deve ter passado.

Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para disparar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a erros de diagnóstico.

  • Narrativa do Ataque & Comandos: O adversário injetou com sucesso código malicioso em uma dependência amplamente usada do npm (Comprometimento da Cadeia de Suprimentos). Quando um desenvolvedor executa npm install ou inicia um projeto, o script malicioso é executado. O script primeiro tenta ocultar sua intenção ao atribuir a função require a uma variável global ( global.r = requireglobal.r = require), permitindo que ele carregue módulos em qualquer lugar do aplicativo sem chamar função require a uma variável global ( diretamente (ofuscação). Finalmente, ele usa child_process.spawn para lançar um processo de shell destacado que se conecta de volta a um servidor de Comando & Controle (C2), tentando evitar a detecção ao desacoplar o processo malicioso do processo pai Node.js.

  • Script de Teste de Regressão:

    #!/bin/bash
    # Script de simulação para acionar a regra de detecção de injeção de Node.js.
    # Este script cria um arquivo JS malicioso temporário e o executa via Node.js.
    MALICIOUS_FILE="malicious_pkg.js"
    echo "[+] Criando script Node.js malicioso..."
    cat << 'EOF' > $MALICIOUS_FILE
    // Simular injeção global de módulo (T1027)
    global.r = require;
    // Simular execução de processo destacado via child_process.spawn (T1059.006)
    const cp = require('child_process');
    cp.spawn('bash', ['-c', 'sleep 30 &'], { detached: true, stdio: 'ignore' });
    console.log("[!] Payload malicioso executado.");
    EOF
    echo "[+] Executando script malicioso via Node.js..."
    node $MALICIOUS_FILE
    echo "[+] Simulação completa. Verifique SIEM para Alerta: Detecção de Injeção de Módulo Node.js e Execução de Processo Destacado."
  • Comandos de Limpeza:

    # Remover o arquivo malicioso simulado
    rm -f malicious_pkg.js
    # Matar quaisquer processos de sono órfãos gerados pela simulação
    pkill -f "sleep 30"