
Operações associadas a Famous Chollima e Shifty Corsair combinam dependências transitivas, artefatos no GitHub, código gerado por IA e backdoors para roubar segredos, carteiras cripto e projetos inteiros.
| Componente | Pacotes npm e PyPI usados como dependências em projetos de Web3, incluindo @validate-sdk/v2, @solana-launchpad/sdk, openpaw-graveyard, scraper-npm, express-session-js, bjs-biginteger, bjs-lint-builder e csec-crypto-utils. |
| Vetor | Inclusão de dependências maliciosas diretas ou transitivas em projetos de agentes autônomos, testes de entrevista falsos, repositórios GitHub de empresas fictícias e artefatos de release referenciados por package-lock.json. |
| Impacto | Roubo de segredos de ambiente, chaves AWS, tokens GitHub, arquivos .npmrc, credenciais, carteiras de criptomoedas, captura de tela, keylogging, controle remoto de mouse e teclado, backdoor SSH e coleta de projetos com código-fonte. |
| Prioridade | Auditar dependências transitivas, lockfiles, artefatos externos no GitHub, pacotes recém-adicionados e máquinas de desenvolvedores que executaram avaliações técnicas ou projetos Web3 recebidos por convite. |
| Atribuição | A atividade é associada a Famous Chollima, também referido como Shifty Corsair, com conexão operacional a campanhas como Contagious Interview, Contagious Trader e graphalgo; uma análise também relaciona parte da cadeia a BlueNoroff. |
| Infraestrutura | Foram citados uso de Vercel para staging e comando e controle, o domínio ipfs-url-validator.vercel.app, o servidor csec-c2-server.onrender[.]com e comunicação de um payload RAT com 216[.]126[.]237[.]71 via Socket.IO. |
| Artefatos | O pacote @validate-sdk/v2 foi apresentado como SDK de hashing, validação, codificação, decodificação e geração aleatória segura, mas sua função real era coletar segredos do ambiente comprometido. |
Uma nova leva de campanhas atribuídas a operadores alinhados à Coreia do Norte mostra uma combinação de engenharia social, abuso de ecossistemas de pacotes e evolução de malware voltada contra desenvolvedores, especialmente em ambientes ligados a criptomoedas e Web3. O ponto central é o uso de pacotes npm e PyPI que parecem utilitários legítimos, bibliotecas de apoio ou dependências de projetos de avaliação técnica, mas carregam funções de roubo de segredos, implantação de RATs e acesso persistente. O pacote @validate-sdk/v2, publicado inicialmente no npm em outubro de 2025, aparece como um SDK para hashing, validação, codificação, decodificação e geração de valores aleatórios, mas o comportamento descrito é de coleta de informações sensíveis do ambiente onde é executado.
A campanha chamada PromptMink foi vinculada ao ator Famous Chollima, também identificado como Shifty Corsair, já associado às operações Contagious Interview e ao esquema de trabalhadores de TI fraudulentos. O caso chama atenção porque uma dependência maliciosa foi introduzida em um commit de 28 de fevereiro de 2026 em um agente autônomo de negociação, com coautoria atribuída ao modelo Claude Opus. A presença de código gerado ou inserido com auxílio de IA não muda a natureza técnica do ataque: o risco operacional está na execução de dependências não confiáveis em estáções de desenvolvedores e em projetos que manipulam carteiras, chaves, tokens e código-fonte.
O ecossistema observado inclui pacotes de primeira camada sem código malicioso aparente, dependências de segunda camada com a funcionalidade ofensiva e variações que migram entre npm, PyPI e GitHub Releases. Essa separação reduz a visibilidade do payload principal durante revisões superficiais e dificulta a remoção completa, porque o pacote inicial pode continuar parecendo inofensivo enquanto a dependência maliciosa é substituída por outra. Em alguns casos, os operadores também usam nomes e descrições que imitam bibliotecas legítimas, além de criar versões maliciosas de funções semelhantes às existentes em pacotes populares.
O fluxo mais direto começa com um pacote aparentemente benigno que declara dependências comuns, como bibliotecas amplamente usadas, e mistura nessa lista um pequeno número de pacotes maliciosos. A vítima não precisa instalar explicitamente o payload final: basta executar o projeto que referencia a cadeia de dependências. No caso citado envolvendo @solana-launchpad/sdk e openpaw-graveyard, o pacote @validate-sdk/v2 aparece como dependência indireta em um agente autônomo descrito como capaz de criar identidade social on-chain na blockchain Solana usando Tapestry Protocol, negociar criptomoedas via Bankr e interagir com outros agentes no Moltbook. Ao ser executado, o projeto passa a acionar código que pode vazar credenciais e dar aos operadores acesso a carteiras e fundos.
As primeiras versões do malware eram stealers em JavaScript ofuscado. Elas percorriam recursivamente o diretório de trabalho atual em busca de arquivos .env ou .json e preparavam a exfiltração para ipfs-url-validator.vercel.app. Esse detalhe é importante para defesa porque o escopo de coleta não se limita a uma variável de ambiente específica: projetos de desenvolvimento frequentemente armazenam chaves de API, tokens de nuvem, segredos de banco de dados, configurações de npm e credenciais temporárias em arquivos locais que acabam sendo lidos por processos de build, testes ou agentes de automação.
A evolução técnica incluiu empacotamento em uma aplicação Node.js single executable application, o que elevou o tamanho do payload de cerca de 5,1 KB para aproximadamente 85 MB. Esse aumento de tamanho teria levado os operadores a adotar NAPI-RS para criar add-ons Node.js pré-compilados em Rust. A mudança tem consequências para detecção: payloads compilados e multiplataforma tendem a reduzir a transparência de análise estática rápida em revisões de JavaScript puro, além de permitir execução em Windows, Linux e macOS. Versões posteriores passaram de simples infostealers para harvesters especializados capazes de instalar backdoors SSH e coletar projetos inteiros com código-fonte e propriedade intelectual.
Outra vertente usa o pacote express-session-js, ligado à campanha Contagious Interview. Nessa cadeia, a biblioteca funciona como condutor de um dropper que busca um segundo estágio ofuscado no JSON Keeper. A deofuscação estática do estágio posterior revelou um RAT e infostealer que se conecta a 216[.]126[.]237[.]71 via Socket.IO. As capacidades descritas incluem roubo de credenciais de navegador, extração de carteiras cripto, captura de tela, monitoramento de área de transferência, keylogging e controle remoto de mouse e teclado. A inclusão de @nut-tree-fork/nut-js amplia a possibilidade de interação direta com o host infectado, saindo de coleta passiva para controle operacional da sessão do usuário.
Uma terceira abordagem, descrita como Contagious Trader, usa uma estrutura em camadas semelhante a uma boneca russa: um wrapper aparentemente benigno, como bjs-biginteger, baixa uma dependência maliciosa, como bjs-lint-builder, e essa etapa instala o stealer. Em paralelo, a campanha graphalgo emprega empresas falsas, perfis em GitHub, LinkedIn e X, além de testes de entrevista e projetos hospedados no GitHub para induzir desenvolvedores a instalar dependências controladas pelos operadores. O caso Blocmerce inclui até o registro de uma LLC na Flórida em agosto de 2025, usado para reforçar a aparência de legitimidade das ofertas e tarefas técnicas.
A superfície mais exposta está nas estáções de desenvolvedores que instalam e executam projetos de terceiros, principalmente quando esses projetos envolvem Web3, agentes autônomos, blockchain, criptomoedas ou testes de contratação. O risco se concentra em fluxos nos quais npm install, pip install, scripts de build, testes automatizados ou execução local de exemplos acionam dependências transitivas. Ambientes de CI/CD também entram no escopo quando reproduzem a instalação com segredos disponíveis, caches persistentes, tokens de publicação, credenciais de nuvem ou permissões para acessar repositórios privados.
Lockfiles merecem atenção especial porque uma das técnicas observadas enterra a referência maliciosa dentro da lista de dependências transitivas. O campo resolved em package-lock.json pode instruir o gerenciador de pacotes a buscar uma dependência específica fora do registro oficial npm, diretamente de um artefato de release em um repositório GitHub criado para a campanha. Isso contorna revisões que verificam apenas o nome do pacote no registro público e cria um caminho de execução no qual quase todas as dependências vêm de fontes esperadas, enquanto uma única dependência crítica é obtida de uma origem controlada pelo atacante.
- Projetos que adicionaram
@validate-sdk/v2depois de commits feitos em fevereiro de 2026 ou que dependem de@solana-launchpad/sdkeopenpaw-graveyarddevem ser revisados com foco em execução de pós-instalação e acesso a segredos locais. - Ambientes que executaram pacotes
scraper-npm,express-session-js,bjs-biginteger,bjs-lint-builderoucsec-crypto-utilsdevem ser tratados como potencialmente expostos até que logs, arquivos e credenciais sejam verificados. - Repositórios recebidos como avaliação de entrevista, especialmente associados a empresas desconhecidas ou recém-criadas, devem ser analisados sem execução direta em máquinas com credenciais reais.
- Pipelines que carregam AWS keys, tokens GitHub, arquivos
.npmrcou carteiras cripto durante instalação de dependências precisam de isolamento e rotação quando houver execução de pacotes suspeitos.
A caça deve partir da cadeia de instalação. Em endpoints de desenvolvimento, procure por execuções de npm, node, python, pip e binários Rust ou add-ons Node.js próximos do momento em que projetos de entrevista, agentes Web3 ou pacotes recém-baixados foram abertos. Registros de processo que mostrem leitura recursiva de diretórios de projeto, acesso a arquivos .env, .json e .npmrc, criação de conexões externas para Vercel, Onrender ou IPs não reconhecidos e execução de payloads grandes em diretórios de dependências são sinais compatíveis com os comportamentos descritos.
Em repositórios, a análise deve comparar alterações em package.json, package-lock.json, pyproject.toml, arquivos de requisitos e scripts de instalação. O foco não deve ficar apenas em nomes óbvios de pacotes: os operadores usam typosquatting, descrições convincentes, dependências transitivas e artefatos externos. Revisões automatizadas devem destacar quando o campo resolved aponta para GitHub Releases ou para uma URL fora dos registros oficiais esperados. Também é útil procurar por pacotes que declaram muitas dependências populares, mas incluem poucos itens pouco conhecidos ou recém-publicados no meio da lista.
Em rede, eventos relacionados a ipfs-url-validator.vercel.app, csec-c2-server.onrender[.]com e 216[.]126[.]237[.]71 devem ser avaliados no período posterior à instalação de projetos suspeitos. A comunicação via Socket.IO no caso do RAT ligado a express-session-js permite identificar sessões interativas e persistentes, especialmente quando correlacionadas com captura de tela, eventos de teclado, leitura de navegadores ou manipulação remota de arquivos. Em hosts Linux e macOS, criação de chaves, alterações em configuração SSH ou surgimento de serviços e arquivos de persistência após execução de pacotes devem receber prioridade.
- Busca por
@validate-sdk/v2,@solana-launchpad/sdk,openpaw-graveyard,scraper-npm,express-session-js,bjs-biginteger,bjs-lint-builderecsec-crypto-utilsem lockfiles, caches npm, caches pip e históricos de instalação. - Conexões para
ipfs-url-validator.vercel.app,csec-c2-server.onrender[.]come216[.]126[.]237[.]71, principalmente originadas pornode, processos de build, shells de desenvolvedor ou binários em diretórios de projeto. - Leitura incomum de
.env,.json,.npmrc, diretórios de carteiras, perfis de navegador e repositórios inteiros logo após execução de scripts de instalação ou testes. - Referências em
package-lock.jsoncujo camporesolvedaponte para artefatos de release no GitHub em vez do registro npm oficial. - Instalação ou alteração de componentes SSH, criação de diretórios e operações de upload ou download de arquivos executadas por processos filhos de
node.
A resposta deve começar pela contenção de ambientes que executaram os pacotes citados ou projetos recebidos por entrevistas falsas. Máquinas de desenvolvedores com acesso a carteiras, repositórios privados, AWS, GitHub, npm ou PyPI devem ser isoladas da rede corporativa até que processos, persistência, conexões e arquivos sensíveis sejam avaliados. Como a cadeia inclui stealers e RATs, a simples remoção do pacote não é suficiente: segredos já acessados pelo processo precisam ser considerados comprometidos dentro do limite técnico observado.
A correção em repositórios exige remover dependências suspeitas, regenerar lockfiles a partir de fontes confiáveis e impedir resolução de pacotes por URLs externas não aprovadas. Quando a organização depende de projetos Web3 ou agentes autônomos, a revisão deve incluir commits recentes, coautoria automatizada por ferramentas de IA, dependências introduzidas por assistentes de código e pacotes que parecem utilitários genéricos. O uso de IA no commit não prova intenção maliciosa por si só, mas aumenta o risco de uma dependência sugerida ou aceita sem revisão humana adequada entrar no caminho de execução.
A rotação de credenciais deve ser guiada pelo que esteve disponível no host ou pipeline no momento da execução. Chaves AWS, tokens GitHub, tokens npm, arquivos .npmrc, segredos em .env, carteiras cripto e credenciais de navegador acessíveis ao processo devem ser revogados e recriados. Para ambientes CI/CD, limpe caches de dependências, runners persistentes e artefatos de build, porque pacotes maliciosos podem permanecer disponíveis mesmo depois de o manifesto principal ser ajustado. A validação final precisa confirmar que nenhuma dependência transita por resolved externo inesperado e que a instalação limpa não aciona conexões de rede não documentadas.
- Bloquear instalação de dependências que resolvam para GitHub Releases ou domínios externos sem aprovação explícita no fluxo de supply chain.
- Executar projetos de entrevista, provas técnicas e agentes Web3 em sandbox sem segredos, sem carteiras e sem tokens reais.
- Regenerar
package-lock.jsone arquivos equivalentes após remover pacotes suspeitos, revisando manualmente camposresolvede dependências transitivas. - Revogar e recriar AWS keys, tokens GitHub, tokens npm, segredos em
.env, configurações.npmrce credenciais de carteiras expostas no host afetado. - Procurar e remover persistência SSH, payloads Rust ou add-ons Node.js desconhecidos criados após a instalação de pacotes suspeitos.
- Adicionar detecção para leitura em massa de arquivos de projeto seguida de tráfego externo por processos
node,npm,pipou binários gerados durante instalação.
0 Comentários