144 pacotes npm do Mastra recebem backdoor em ataque de 88 minutos à cadeia de suprimentos

Pesquisadores de segurança da Socket revelaram um ataque à cadeia de suprimentos que comprometeu 144 pacotes no namespace @mastra do npm em 17 de junho de 2026. O atacante sequestrou uma conta de colaborador com direitos de publicação no framework de agentes de IA Mastra, depois executou uma campanha automatizada ao longo de 88 minutos que republicou cada pacote afetado com uma dependência typosquatted injetada como um requisito de produção. Qualquer desenvolvedor, executor de CI ou sistema de build que instalou um pacote @mastra/* após 16 de junho deve tratar esse ambiente como potencialmente comprometido, de acordo com a análise da Socket.
Mastra é um framework TypeScript para construir agentes de IA, e seu pacote principal (@mastra/core) recebe mais de 918.000 downloads semanais. A amplitude do ataque — 144 pacotes em todo o namespace, não apenas um único alvo de alto valor — significa que desenvolvedores que instalaram qualquer parte do ecossistema Mastra durante a janela de ataque foram expostos.
Como o ataque funcionou
O atacante não modificou o código do Mastra diretamente. Em vez disso, ele adicionou uma dependência chamada easy-day-js a cada pacote republicado. O nome é um typosquat deliberado da biblioteca de datas amplamente usada dayjs — próximo o suficiente para que a verificação automática de dependências possa ignorá-lo.
O pacote malicioso easy-day-js continha um hook postinstall — um script que o npm executa automaticamente durante npm install, antes que um desenvolvedor importe ou execute qualquer código do pacote. Esse hook baixou e executou uma carga útil em dois estágios:
- Estágio 1 (setup.cjs): Um carregador ofuscado que desabilitou a verificação de certificados TLS, conectou-se à infraestrutura do atacante em
23.254.164[.]92:8000, baixou a carga útil do segundo estágio, lançou-a como um processo em segundo plano destacado e depois se excluiu para apagar rastros. - Estágio 2 (protocal.cjs): Um ladrão de informações multiplataforma de ~41KB com mecanismos de persistência para Windows (chave de registro Run), macOS (LaunchAgent) e Linux (unidade systemd). O implante inventariou 166 extensões de navegador de carteiras de criptomoedas, coletou o histórico de navegação do Chrome, Edge e Brave, e abriu um canal de comando e controle capaz de executar código arbitrário posterior.
A janela de ataque ocorreu das 01:12 às 02:39 UTC em 17 de junho. Os logs de auditoria do npm mostram que uma única conta — ehindero, um colaborador cujo acesso de publicação ao escopo @mastra nunca foi revogado — publicou todas as 142 versões de pacotes maliciosos nesses 88 minutos. A equipe de segurança da Microsoft também identificou e relatou o ataque, de acordo com relatórios adicionais.
Quem está em risco
Qualquer sistema que executou npm install com uma dependência @mastra/* entre 16 de junho e o momento em que as versões maliciosas foram removidas representa um comprometimento potencial. Isso inclui laptops de desenvolvedores, executores de pipelines CI/CD, sistemas de build Docker e ambientes de build em nuvem. Como a carga útil é executada durante a instalação por meio de um hook postinstall — não no tempo de execução do aplicativo — até mesmo sistemas que não executaram o aplicativo são afetados se executaram npm install.
Etapas de remediação
A Socket e outros pesquisadores de segurança recomendam tratar qualquer sistema afetado como totalmente comprometido. Ações específicas:
- Remover persistência: excluir entradas de registro Run do Windows, arquivos plist do LaunchAgent do macOS e unidades systemd do Linux associadas ao implante.
- Rotacionar todas as credenciais que existiam nas máquinas afetadas: tokens npm, credenciais de provedores de nuvem (AWS, GCP, Azure), chaves SSH e chaves de API.
- Rotacionar carteiras de criptomoedas em um dispositivo limpo e não afetado — o implante teve como alvo específico 166 extensões de carteira de navegador.
- Auditar pipelines CI/CD em busca de sinais de acesso não autorizado ou segredos exfiltrados.
Para proteção futura, a Socket recomenda adicionar --ignore-scripts aos comandos npm install em pipelines CI para desabilitar hooks postinstall por padrão — uma mitigação direta que teria bloqueado completamente esse vetor de ataque específico.
A organização @mastra removeu as versões maliciosas dos pacotes do npm. Os desenvolvedores devem atualizar para versões limpas e verificar se easy-day-js não aparece em nenhum diretório node_modules ou arquivo de bloqueio.
Originally reported by Socket. Read the original article for additional details.
View original source