Pacotes Npm - Entrevista Contagiosa

Pacotes NPM se disfarçam de bibliotecas de interface de usuário benignas no ataque à cadeia de suprimentos da "entrevista contagiosa" da Coreia do Norte

Pacotes npm maliciosos detectados recentemente se disfarçam como auxiliares front-end inofensivos, mas contêm código malicioso ofuscado.

A Equipe de Pesquisa de Segurança da Xygeni determinou que esses pacotes npm: 'react-ui-notify', 'react-tmedia', 'react-ui-animates', 'react-medias', 'react-mandes' são derivados modificados de 'bingo-logger', em si um fork malicioso que imita a estrutura e a documentação do popular pacote de registro 'pino' para parecer legítimo. Essa fachada é usada para explorar a confiança dos desenvolvedores e atrair downloads. Na realidade, a base de código contém um arquivo ofuscado não relacionado que roda em ambientes Node. 

Histórico do ator de ameaça: a campanha “Entrevista contagiosa”

O Campanha de entrevista contagiosa está associado ao cluster de ameaças conhecido como 'UNC4034', que relata ligações a atores afiliados à Coreia do Norte Grupo Lazarus or APT38, um conhecido grupo patrocinado pelo Estado e ligado ao regime da Coreia do Norte. Os agentes de ameaças por trás desta campanha têm um histórico de atacar desenvolvedores por meio de ecossistemas de código aberto, distribuindo pacotes semelhantes que executam payloads ocultos. Em última análise, exfiltram dados, código-fonte e credenciais relacionados a criptomoedas de sistemas infectados.

O táticas, técnicas e procedimentos (TTPs) observados nesses pacotes npm seguem o mesmo padrão:

  • Imite nomes de projetos que soem legítimos para parecer confiável.
  • Incorpore código ofuscado em arquivos de teste e scripts auxiliares.
  • Execute cargas ocultas que coletam dados confidenciais e os enviam para um servidor remoto de comando e controle (C2).

Descobertas técnicas: Análise de carga útil ofuscada

A carga útil encontrada dentro '/teste/fixtures/eval/node_modules/test.list' usa JavaScript ofuscado (pesquisas de strings de índice/matriz, blocos codificados) para ocultar strings legíveis e o fluxo de controle será executado assim que o pacote for instalado devido ao script postinstall 'npm run test || npm transpile || npm run skip' dentro do pacote.json. 

Nossa análise revelou que esses pacotes contêm um malware adaptável, desenvolvido para se mover entre sistemas operacionais (Windows, macOS ou Linux) e ambientes de usuários. Uma capacidade que sugere um foco deliberado em usuários técnicos que frequentemente trabalham em ambientes diversos.

Uma vez estabelecido em um sistema, o malware examina seus arredores, coletando informações detalhadas do sistema como hostname, plataforma, diretório home e diretório tmp do sistema antes de expandir seu alcance para aplicativos que armazenam dados confidenciais, como navegadores (Chrome/Brave/Edge/Opera) e carteiras digitais. Ele pesquisa recursivamente em locais comuns perfis de navegador, arquivos de carteira, chaveiros e muitos tipos de documentos/arquivos. As palavras-chave de pesquisa incluem carteira, termos relacionados a seed e muitas extensões de arquivo que provavelmente contêm credenciais ou segredos (*.env, *.key, *.wallet, *.json, *.txt, *.doc, etc.). Ele contém listas de exclusão para diretórios comuns para evitar arquivos de sistema óbvios.

A carga útil grava um marcador/arquivo de bloqueio local para evitar múltiplas execuções simultâneas e grava seus dados em diretórios temporários do sistema operacional para evitar detecção.

A carga ofuscada também contém um canal de comunicação com um servidor remoto que funciona como seu centro de comando e controle. Por meio deste canal, ele pode exfiltrar informações roubadas e receber mais instruções. Embora a infraestrutura em si pareça limitada e construída para um propósito específico, sua existência confirma a intenção do invasor de manter controle persistente sobre os sistemas infectados.

Quando o malware encontra dados confidenciais, ele os agrupa e tenta enviá-los para um ponto de extremidade remoto hospedado em um servidor de nuvem usando multipart/form-data para que os arquivos roubados sejam anexados às solicitações.

Indicadores de Compromisso e Recomendações de Mitigação

As organizações são aconselhadas a remover essas dependências maliciosas (react-ui-notify, react-tmedia, react-ui-animates, react-medias, react-mandes, bingo-logger) e atualizar esses ambientes para garantir a integridade. Os sistemas que possam ter sido expostos devem ter todas as credenciais e tokens de acesso rotacionados imediatamente.

Os administradores de rede devem restringir o tráfego de saída para esses IPs 23.227.202.24, 131.153.22.25 e revisar conexões recentes em busca de anomalias. A reconstrução de ambientes afetados a partir de fontes verificadas e limpas é altamente recomendada para prevenir a reinfecção e garantir a integridade da cadeia de suprimentos.

Contexto mais amplo

No total, estes pacotes são outro exemplo do novo nível de maturidade em ataques à cadeia de suprimentos baseados em JavaScript, os adversários estão cada vez mais criando pacotes semelhantes que pegam emprestado estrutura e documentação de projetos confiáveis, expansão modular e adotando melhores técnicas para tornar a detecção e a mitigação um desafio. 

Essa evolução aumenta a probabilidade de instalação acidental por desenvolvedores desavisados ​​e concede aos adversários acesso mais profundo aos ambientes de construção, CI/CD sistemas e repositórios de código-fonte.

Ecossistemas de código aberto tornaram-se uma plataforma de distribuição preferencial para tais campanhas. Ao explorar a confiança inerente que os desenvolvedores depositam nos pacotes da comunidade, invasores podem se infiltrar na cadeia de suprimentos de software com esforço mínimo e, muitas vezes, sem detecção ou consequências imediatas.

Alerta antecipado de malware (MEW) da Xygeni

Este incidente foi originalmente identificado através do Xygeni Alerta antecipado de malware sistema, que monitora continuamente registros de pacotes de código aberto, como npm, PyPI, Maven, em busca de pacotes maliciosos.

Nosso mecanismo de detecção sinalizou automaticamente esses pacotes como suspeitos devido à sua estrutura incomum, script de pós-instalação e carga ofuscada. Como resultado, os pacotes maliciosos (react-ui-notify, react-tmedia, react-ui-animates, react-medias e react-mandes) foram confirmados como maliciosos por nossa equipe de segurança e reportados ao npm antes que pudessem atingir uma adoção mais ampla.

Como o Xygeni Early Warning protege o seu pipelines

  • Detecção de ameaças em tempo real: Verifica todos os pacotes novos ou atualizados no seu gráfico de dependências e sinaliza comportamentos suspeitos, como chamadas de sistema do sistema operacional, execução de comandos, código ofuscado, typosquatting, entre muitos outros.
  • Alertas imediatos: Notifica suas equipes de segurança e DevOps no Slack, Jira ou e-mail assim que uma nova ameaça surge em seu ambiente.
  • Correção com um clique: Gera pull requests que removem ou substituem versões de dependências vulneráveis ​​em seus projetos.
  • Ecossistemas suportados: Atualmente inclui npm, PyPI, Maven e Packagist.
  • O Xygeni ajuda você a ficar à frente de ataques à cadeia de suprimentos ao detectar pacotes maliciosos no estágio inicial, antes que eles cheguem à sua compilação.

👉 Experimente o Xygeni Malware Early Warning gratuitamente e veja o quão rápido você pode detectar e neutralizar ameaças à cadeia de suprimentos em sua própria pipelines.

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.

Proteja seu desenvolvimento e entrega de software

com o Suíte de Produtos da Xygeni