Hack Alerta

Pacote malicioso do TanStack usa script postinstall para roubar arquivos de ambiente

Pacote npm malicioso imitando TanStack rouba arquivos de ambiente via script postinstall, afetando milhares de desenvolvedores e comprometendo credenciais de nuvem.

Um pacote npm malicioso que imita o amplamente confiável projeto TanStack foi descoberto em 29 de abril de 2026, roubando silenciosamente arquivos de ambiente de desenvolvedores no momento em que era instalado. O atacante registrou o nome de pacote sem escopo "tanstack" no npm, vestiu-o como um SDK de player de vídeo legítimo chamado "TanStackPlayer" e incorporou um script de coleta de credenciais dentro dele que foi executado sem qualquer aviso visível.

Ciclo de vida do ataque de cadeia de suprimentos

A campanha durou uma janela breve, mas danosa de 27 minutos. Entre 17:08 e 17:35 UTC, quatro versões do pacote malicioso foram enviadas ao npm em rápida sucessão: 2.0.4, 2.0.5, 2.0.6 e 2.0.7. Cada versão carregava um gancho postinstall, um script que dispara automaticamente sempre que um desenvolvedor executa npm install. Antes desta onda, a versão 2.0.3 disponível de março de 2026 não tinha tal gancho e estava limpa.

O pacote havia registrado cerca de 19.830 downloads no mês antes do início do ataque, dando ao atacante um pool pronto de alvos desavisados. Pesquisadores da Aikido identificaram e analisaram a campanha maliciosa, observando que o atacante não precisava comprometer uma conta de mantenedor existente, explorar uma vulnerabilidade ou phishing de um sistema CI.

Iteração do payload em tempo real

O que torna este ataque particularmente notável é o padrão de depuração visível em tempo real em todas as quatro versões. A versão 2.0.4 visava ".env" e ".env.local" diretamente, mas a verificação de opt-out estava comentada, deixando os desenvolvedores sem saída. A versão 2.0.5, enviada apenas três minutos depois, mudou brevemente os alvos para README.md e AGENTS.md, provavelmente para testar se o receptor de webhook estava funcionando.

A versão 2.0.6, publicada às 17:26 UTC, tornou-se a iteração mais perigosa. Ela descartou o direcionamento de arquivos específicos e o substituiu por uma varredura de diretório usando uma função "collectEnvFiles()" que reunia todos os arquivos começando com ".env", capturando ".env.local", ".env.production", ".env.staging" e ".env.development" em uma única solicitação POST. A saída do console foi totalmente suprimida.

A versão 2.0.7 reverteu para o direcionamento apenas de ".env" e ".env.local", mas adicionou uma dependência autorreferencial na versão 2.0.6 dentro de seu próprio package.json. O atacante estava ativamente presente, observando resultados e refinando seu payload em tempo real enquanto o pacote permanecia publicamente instalável.

Riscos e dados comprometidos

Os arquivos visados nesses ataques geralmente contêm chaves de acesso AWS, tokens de acesso pessoal do GitHub, tokens de publicação npm, strings de conexão de banco de dados, chaves de API para serviços como Stripe, OpenAI e Twilio, e segredos de cliente OAuth. Qualquer uma dessas credenciais, uma vez exfiltrada, pode levar ao comprometimento total da conta, violações de dados ou consumo não autorizado de recursos em nuvem.

Os dados roubados foram roteados através do Svix, uma plataforma legítima de webhooks-as-a-service, para um endpoint controlado pelo atacante. Ao usar um relé de terceiros confiável, o atacante evitou acionar o bloqueio padrão em nível de rede. O payload roubado incluiu o conteúdo dos arquivos junto com metadados do sistema, como versão do Node.js, plataforma e arquitetura, tornando os dados exfiltrados imediatamente úteis para ataques subsequentes direcionados.

Medidas de mitigação e resposta

Os desenvolvedores devem verificar imediatamente seus arquivos de bloqueio e histórico de instalação para qualquer versão entre 2.0.4 e 2.0.7 do pacote "tanstack" usando o comando: grep -r "tanstack" package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null. Se qualquer versão afetada for encontrada, trate todos os arquivos de ambiente presentes durante a instalação como comprometidos e rotacione as seguintes credenciais sem demora.

1. Chaves de acesso e segredos AWS (audite o CloudTrail para chamadas de API não autorizadas). 2. Tokens do GitHub com escopo de repositório ou organização. 3. Tokens npm (revogue e reemita em npmjs.com/settings). 4. Todas as credenciais de banco de dados armazenadas em arquivos .env. 5. Chaves de API de terceiros em todos os arquivos de ambiente afetados.

Para ambientes de pipeline CI, observe que o script postinstall também dispara durante "npm ci". Os desenvolvedores devem verificar os logs de trabalho do provedor CI para a etapa de instalação e rotacionar todos os segredos injetados no ambiente desse pipeline. Monitorar o tráfego HTTPS de saída para "api.svix.com" nos logs de rede em torno do momento da instalação também pode ajudar a confirmar se a exfiltração ocorreu.

Indicadores de comprometimento (IOCs)

As versões afetadas e seus hashes SHA256 são: tanstack@2.0.4 (72ec4571e27c06f1d48737477c2b38a4f90d699950dab8946b48591133dc4f90), tanstack@2.0.5 (04ee5325c8900c9d644ed81c9012525b6fc19f21c65cef85b6ba98b6a0a23566), tanstack@2.0.6 (abc164807947b102164488a08161adb4ee08be6b78a371350a6b156eed0d97d9), tanstack@2.0.7 (7bb84e6ba893248814cd3bac70b7bdc115740fba9e13419940c73460cbcd7b6f). A detecção de pacotes npm não escopados que imitam bibliotecas populares é crítica para a segurança da cadeia de suprimentos de software.


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.