Pacote jscrambler 8.14.0 do npm e comprometido e distribui infostealer em Rust que rouba credenciais MCP de assistentes de IA

Versao maliciosa do pacote npm jscrambler executa binario Rust em Windows, macOS e Linux durante o install e coleta credenciais cloud, wallets crypto, cofres do Bitwarden e chaves de servidores MCP configurados no Claude Desktop, Cursor, Windsurf, VS Code e Zed.

jscrambler npm supply-chain attack

O pacote jscrambler no npm foi comprometido em 11 de julho de 2026 e a versao 8.14.0 chegou ao registro publico executando um infostealer em Rust durante o processo de instalacao. A carga maliciosa roda em Windows, macOS e Linux, varrendo maquinas de desenvolvedores atras de credenciais AWS, Azure e Google Cloud, wallets de criptomoedas, cofres do Bitwarden e — de forma inedita — arquivos de configuracao de ferramentas de programacao com IA como Claude Desktop, Cursor, Windsurf, VS Code e Zed, onde ficam chaves de API e credenciais de servidores MCP (Model Context Protocol).

O que aconteceu

A Socket, empresa de seguranca especializada em ecossistemas de codigo aberto, identificou a versao 8.14.0 do pacote npm jscrambler como maliciosa apenas seis minutos apos sua publicacao. O intervalo pode parecer suficiente para conter o estrago, mas para pipelines de CI/CD configurados para puxar atualizacoes automaticamente, seis minutos ja sao suficientes para executar o payload em dezenas de builds.

O pacote legitimo, mantido pela empresa portuguesa jscrambler, e uma ferramenta de ofuscacao de JavaScript amplamente adotada por equipes que precisam proteger codigo enviado ao cliente. Segundo dados do proprio npm, jscrambler recebe cerca de 15.800 downloads semanais — volume modesto quando comparado a bibliotecas como axios ou chalk, mas devastador quando se considera o perfil dos usuarios: desenvolvedores com acesso a codigo-fonte proprietario, chaves de deploy e ambientes de build corporativos.

A versao anterior, 8.13.0, esta limpa. A diferenca aparece em dois arquivos novos dentro de dist/: setup.js, que atua como carregador, e intro.js, um arquivo de aproximadamente 7,8 MB que — apesar do nome — nao contem JavaScript, e sim tres binarios nativos comprimidos em gzip, um para cada sistema operacional. O script setup.js e executado atraves do hook preinstall do npm, garantindo que a infeccao ocorra antes mesmo do desenvolvedor rodar qualquer codigo.

Como o ataque funciona

Durante a instalacao, setup.js detecta o sistema operacional do host, extrai o binario correspondente, grava-o com nome aleatorio em um diretorio temporario, define permissao de execucao e o dispara de forma destacada (detached), com stdout e stderr redirecionados para dispositivo nulo. O processo pai encerra normalmente, dando ao usuario a impressao de que a instalacao ocorreu sem sobressaltos.

O binario escrito em Rust nao e um infostealer generico. Ele foi construido especificamente para atacar maquinas de desenvolvedores. A lista de alvos, mapeada pela Socket, inclui credenciais das principais nuvens (AWS, Azure, GCP), com atencao especial aos endpoints de metadata que runners de CI consultam para obter tokens temporarios de curta duracao. Wallets como MetaMask, Phantom e Exodus tem suas seed phrases exfiltradas, assim como o cofre criptografado do Bitwarden. Cookies e senhas armazenados em navegadores, sessoes de Discord, Slack, Telegram e Steam completam o pacote.

O que diferencia esta campanha das anteriores e a inclusao de arquivos de configuracao de assistentes de codigo com IA. Claude Desktop, Cursor, Windsurf, VS Code e Zed sao explicitamente varridos em busca de chaves de API — que geralmente concedem acesso a modelos pagos com creditos vinculados ao cartao — e, mais grave, credenciais de servidores MCP (Model Context Protocol) que expõem repositorios GitHub privados, buckets S3, bancos de dados e ferramentas internas.

“O binario Linux vai alem do modelo tradicional de stealer: ele carrega a biblioteca BPF do kernel e injeta um programa eBPF direto na memoria kernel. Isso e uma cabeca de ponte no kernel, nao apenas no espaco de usuario — o processo original nem precisa continuar rodando”, registrou a Socket em analise atualizada.

Quem esta em risco

O perfil de vitimas potenciais e bastante especifico. Como jscrambler e tipicamente instalado como dependencia de desenvolvimento (devDependency) ou executado em pipelines de CI, os ambientes atingidos costumam concentrar exatamente o que o stealer procura:

  • Chaves de acesso IAM da AWS, credenciais de service accounts do GCP e client secrets do Azure com permissoes de deploy;
  • Tokens do GitHub, GitLab e Bitbucket com escopo de escrita em repositorios corporativos;
  • Chaves de API de servicos SaaS (Stripe, SendGrid, Twilio, OpenAI, Anthropic) presentes em arquivos .env;
  • Credenciais de servidores MCP configurados no Claude Desktop e no Cursor, que podem dar acesso persistente a bases internas;
  • Cofres do Bitwarden, incluindo o cofre pessoal do desenvolvedor caso o cliente esteja logado;
  • Wallets crypto — MetaMask, Phantom e Exodus — com seed phrases capazes de drenar fundos imediatamente.

Ainda nao ha estimativa publica de quantas instalacoes ocorreram dentro da janela de seis minutos entre publicacao e retirada. O impacto real depende de quantas maquinas de CI foram configuradas para atualizar semver ranges automaticamente — pratica comum em equipes que confiam demais em caret (^) para versoes minor.

Analise: o padrao dos ataques de supply chain em 2026

O ataque a jscrambler chega em um momento de aceleracao clara nos ataques de supply chain via npm. Em setembro de 2025, o worm Shai-Hulud usou hooks de install para roubar tokens e se propagar por centenas de pacotes. Em marco de 2026, uma conta comprometida injetou um trojan cross-platform no axios — biblioteca com mais de 83 milhoes de downloads semanais. E ha poucas semanas, os pacotes chalk e debug foram sequestrados via phishing do mantenedor para redirecionar pagamentos crypto.

O que muda com jscrambler nao e a tecnica — hooks de preinstall maliciosos existem ha uma decada. O que muda e o alvo. Este e o primeiro grande ataque de supply chain publicamente documentado que trata as configuracoes de assistentes de IA como ativo de coleta prioritario. A justificativa e obvia: um desenvolvedor moderno guarda no seu Claude Desktop ou Cursor credenciais MCP que abrem portas para GitHub, GitLab, bases de dados de producao, servidores Kubernetes e ferramentas de observabilidade. Uma unica chave MCP pode valer mais que dez chaves AWS antigas — e ninguem rotaciona esse tipo de credencial ainda porque nao existem convencoes maduras para isso.

O uso de eBPF no payload Linux tambem merece atencao. Estamos vendo malwares de supply chain adotando tecnicas que ate 2024 eram territorio de APTs — carregar programas no kernel a partir de memoria, sem tocar disco, apenas para garantir persistencia mesmo apos o npm remover o pacote. E um sinal de que a barreira de sofisticacao caiu: qualquer grupo com capacidade de comprometer uma conta de mantenedor npm ja tem acesso a codigo Rust maduro capaz de fazer o que Turla ou APT29 faziam ha poucos anos.

Recomendacoes praticas para defensores

  • Auditar dependencias imediatamente: rode npm ls jscrambler em todos os projetos e faca pin da versao para 8.13.0 (ou ~8.13.0) ate que a jscrambler publique uma versao limpa auditada.
  • Rotacionar credenciais: se qualquer maquina de dev ou CI executou npm install apos 11 de julho de 2026 com jscrambler na arvore de dependencias, considere tudo comprometido — chaves de nuvem, tokens de repositorio, cookies de navegador logado, seed phrases de wallets, chaves de API de servicos SaaS.
  • Desabilitar scripts de install: use npm install --ignore-scripts em pipelines de CI sempre que possivel. Para desenvolvedores, configure ignore-scripts=true em .npmrc e libere manualmente apenas para pacotes confiaveis.
  • Isolar ambientes de build: containers efemeros com credenciais de curta duracao (OIDC federation) reduzem drasticamente o impacto de um infostealer que rouba tokens estaticos.
  • Revogar chaves MCP: especificamente para usuarios de Claude Desktop, Cursor, Windsurf e Zed — revise ~/.config/ e roterorote todos os tokens de servidores MCP se houver duvida sobre exposicao.
  • Monitorar eBPF em Linux: ferramentas como bpftool prog show e tracee ajudam a detectar programas eBPF carregados fora do inventario esperado.

Fonte: The Hacker News