Hack Alerta

Ataque de supply chain usa pacote PHP comprometido para distribuir malware

Grupo norte-coreano Famous Chollima compromete pacote PHP no Packagist para distribuir malware via blockchain, visando desenvolvedores com técnica de supply chain.

Descoberta e escopo do ataque

Um grupo de ameaças conhecido como Famous Chollima, ligado à Coreia do Norte, foi identificado escondendo malware dentro de um pacote PHP legítimo disponível no repositório Packagist. O ataque visa diretamente desenvolvedores de software, disfarçando uma carga perigosa como um arquivo de configuração de rotina. Essa campanha se mistura facilmente com fluxos de trabalho normais de desenvolvimento, tornando-a especialmente difícil de detectar antes que qualquer dano seja causado.

Os pesquisadores de segurança da Socket.dev relataram que descobriram JavaScript malicioso oculto dentro de um arquivo chamado tailwind.js, embutido na versão de desenvolvimento dev-drewroberts/feature/test-case do pacote PHP roberts/leads. O pacote pertence a um mantenedor legítimo chamado Drew Roberts, sugerindo um comprometimento em nível de branch ou injeção de workflow envenenada, em vez de um pacote totalmente falso.

O malware fica quieto dentro do que parece ser um arquivo de configuração padrão do Tailwind CSS. O código prejudicial é escondido bem à direita da tela, atrás de um grande bloco de espaço em branco que o mantém invisível durante uma revisão de código casual. Uma vez que esse código ofuscado é executado, ele se transforma silenciosamente em um carregador de malware JavaScript completo operando dentro do Node.js.

Vetor e exploração técnica

O fato de a versão maliciosa estar enterrada em um branch de desenvolvimento é um sinal revelador. As versões de desenvolvimento do Packagist exigem comandos de instalação explícitos, o que significa que as vítimas provavelmente seriam direcionadas a executar um comando muito específico, do tipo que se encaixa naturalmente em uma entrevista falsa ou tarefa de integração de desenvolvedor.

O carregador malicioso dentro do tailwind.js não funciona como malware comum que se conecta a um servidor suspeito. Em vez disso, ele entra em contato com serviços de blockchain públicos, especificamente TRON, Aptos e BNB Smart Chain, para baixar dados de carga criptografados armazenados dentro de registros de transações de blockchain. Esse método de dead-drop significa que não há domínio tradicional de comando e controle para bloquear, tornando a detecção muito mais difícil para ferramentas de segurança padrão.

O carregador usa chaves XOR fixas para decifrar o material que recupera e depois executa o resultado diretamente dentro do Node.js usando eval(). Ele também pode silenciosamente iniciar um segundo processo oculto em segundo plano usando child_process.spawn() com a flag windowsHide definida como true, mantendo tudo fora da vista em sistemas Windows.

Impacto e alcance

O carregador local não rouba arquivos diretamente por conta própria, mas a carga remota que ele busca pode acessar quase tudo na máquina da vítima. Uma vez dentro do Node.js, o malware entregue pode ler variáveis de ambiente que contêm credenciais de nuvem e segredos de CI, pegar arquivos locais como arquivos .env e chaves SSH, acessar tokens armazenados e executar processos adicionais.

O verdadeiro dano reside na carga recuperada do blockchain, não no código visível em si. A campanha parece ter sido projetada para atingir um desenvolvedor de cada vez, em vez de causar infecções generalizadas e barulhentas. O marcador de campanha global['!']='9-0264-2' embutido no código é um identificador conhecido ligado a operações anteriores do Famous Chollima, vinculando isso diretamente a famílias de malware incluindo DEV#POPPER RAT, OmniStealer e payloads BeaverTail.

Medidas de mitigação recomendadas

Desenvolvedores devem tratar qualquer instrução de compilação não familiar recebida durante uma entrevista de emprego ou tarefa remota como um evento potencial de execução de código. Antes de executar qualquer projeto PHP ou JavaScript desconhecido, inspecione manualmente arquivos como tailwind.js, webpack.mix.js, vite.config.*, postcss.config.* e .github/workflows.

Equipes de segurança devem monitorar processos Node.js conectando-se a serviços de blockchain ou RPC durante pipelines de compilação, e organizações devem evitar expor credenciais de nuvem de longa duração para compilações em nível de branch. Consumidores de pacotes devem sempre fixar versões estáveis e conhecidas como boas e evitar branches de desenvolvimento, a menos que absolutamente necessário. A versão afetada do Packagist foi relatada e desde então foi removida após a divulgação da Socket.

Indicadores de comprometimento (IoCs)

Os principais indicadores de comprometimento incluem a versão do pacote dev-drewroberts/feature/test-case, o branch do GitHub drewroberts/feature/test-case, o nome do arquivo tailwind.js e o hash de commit 6c5c3c7655ce76399af11126b7e9a9058eb2e45d. Endereços de carteira TRON como TMfKQEd7TJJa5xNZJZ2Lep838vrzrs7mAP e TXfxHUet9pJVU1BgVkBAbrES4YUc1nGzcG foram usados como ponteiros de carga de dead-drop. Chaves XOR fixas como 2[gWfGj;<:-93Z^C e m6:tTh^D)cBz?NM] foram observadas no código malicioso.

O que os CISOs devem fazer imediatamente

Executivos de segurança devem revisar os processos de aprovação de dependências de terceiros e garantir que branches de desenvolvimento não sejam instalados em ambientes de produção sem revisão rigorosa. A implementação de ferramentas de análise de software (SCA) que verifiquem a integridade de pacotes e monitorem conexões de saída para serviços de blockchain durante pipelines de CI/CD é essencial. Além disso, a educação dos desenvolvedores sobre engenharia social e a verificação de comandos de instalação suspeitos deve ser reforçada imediatamente.


Baseado em publicação original de Cyber Security News
Publicado pela Redação Hack Alerta com base em fontes externas citadas e monitoramento editorial do Hack Alerta. Para decisões técnicas, operacionais ou jurídicas, confirme sempre os detalhes na fonte original.