Pular para o conteúdo
Guide

Verme Mini Shai-Hulud npm: detecte, gire e reduza o raio de sua explosão

| 8 min read

Os pacotes TanStack, Mistral AI e UiPath npm foram atingidos em 11 de maio de 2026. Um script de detecção de 60 segundos, uma lista de verificação de rotação inicial e APIs de propósito único que substituem quatro dos tipos de pacotes mais envenenados.

Code on a terminal representing an npm supply chain incident response
Photo by Caspar Camille Rubin on Unsplash

Em 11 de maio de 2026, entre 19h20 e 19h26 UTC, o agente da ameaça TeamPCP enviou mais de 400 ataques maliciosos versões de pacotes com mais de 170 npm e PyPI em um único burst coordenado. Roteador TanStack, TanStack Adaptadores de consulta, Mistral AI SDK, UiPath e Guardrails AI estavam todos no raio de explosão. Seis atas de publicação; semanas de limpeza.

Esta onda é o worm Mini Shai-Hulud: uma carga pós-instalação que se espalha automaticamente e rouba tokens de mantenedor e, em seguida, usa esses tokens para publicar mais versões envenenadas nos pacotes a vítima controla. OpenAI pediu aos usuários do macOS que atualizassem. Pipelines de CI em todo o mundo executaram o carga útil antes que alguém leia o comunicado.

Se você correu npm install em um executor de CI ou laptop de desenvolvedor após 11/05/2026 às 19:20 UTC, você deve a si mesmo uma verificação de 60 segundos, uma passagem de rotação e uma mudança estrutural para que a próxima onda custa menos. Aqui está o manual.

Etapa 1: detectar em menos de 60 segundos

O worm deixa três sinais altos: versões de pacotes comprometidas em seu arquivo de bloqueio, um commit do Git ou repositório chamado Shai-Hulud-Migratione ações inesperadas do GitHub são executadas exfiltrar segredos para webhook.site ou um binário TruffleHog. Execute isso de qualquer host com gh e npm instalada:

Qualquer acerto em qualquer um desses quatro comandos significa que você pula para a etapa 2 imediatamente. Não há caminho "olhe primeiro". O worm termina antes do aviso.

A carga útil do Mini Shai-Hulud é executada em seu postinstall ficar com os privilégios de quem correu npm install. Em um executor de CI com OIDC, essa é uma identidade federada com acesso à nuvem. Em um laptop de desenvolvedor, esse é todo segredo ~/.aws, ~/.ssh, ~/.npmrce seu histórico de shell.

Etapa 2: gire primeiro, investigue depois

A perícia fica para a próxima semana. A rotação é para o próximo minuto. Abra uma guia de runbook para cada segredo superfície que a máquina afetada tocou e revogou em paralelo. Este script enumera as superfícies então nada se perde:

A ordem de rotação que captura os movimentos downstream do worm é: tokens npm (interrompe novos publica), PATs do GitHub (interrompe a criação de repositório), chaves IAM na nuvem (interrompe a exfiltração de dados), chaves SaaS de terceiros (Stripe, Slack, OpenAI, Anthropic) e, finalmente, chaves SSH armazenadas em cache no disco. Atualize seu gerenciador de segredos somente depois que as credenciais antigas estiverem inativas na origem.

Use a API de violação para verificar se seu e-mail de CI vazou

TeamPCP publica dumps IOC que incluem e-mails de mantenedores coletados de pessoas comprometidas ~/.npmrc arquivos. Execute uma verificação de violação em suas contas de bot de lançamento para confirmar se o seu endereço apareceu nos dumps de 12 de maio:

Se o seu e-mail de lançamento aparecer na fonte mais recente, o token npm correspondente já está público. Revogue-o, alterne a relação de confiança OIDC do fluxo de trabalho de publicação e emita novamente sob um nova identidade.

Etapa 3: limpar segredos vazados de registros e tickets

As cargas úteis do worm despejam variáveis de ambiente em logs que fluem para Datadog, Sentry, Slack e seu sistema de tickets. Trate todas as linhas de registro escritas após 19h20 UTC de 11 de maio como suspeitas. Tubo campos de alto risco por meio de PII e detector secreto antes de chegarem ao armazenamento refrigerado:

O mesmo endpoint sinaliza chaves AWS, tokens npm, GitHub PATs, chaves Stripe e JWTs. Conecte-o em um middleware de log que falha ao fechar: se a chamada de detecção expirar, elimine a linha em vez de escrever um registro potencialmente envenenado. É melhor perder uma entrada de log do que enviar credenciais para um índice consultável.

Etapa 4: bloquear a próxima onda com um guarda CI

O worm depende de três coisas que chegam ao seu executor: uma versão de pacote comprometida, um gancho pós-instalação que é executado e acesso à rede de saída para publicação. Bloqueie qualquer um deles e a corrente quebra. Esta verificação do GitHub Actions falhará no PR se uma atualização do arquivo de bloqueio introduzir um versão conhecida como ruim, um IOC de worm ou uma dependência de tempo de execução sem proveniência assinada:

Combine com npm config set ignore-scripts true em executores de CI e um explícito lista de permissões para pacotes que precisam legitimamente de uma etapa de construção (TypeScript, esbuild, Sharp). O ruído único vale o padrão à prova de worm.

Etapa 5: diminuir a superfície que pode hospedar um verme

Os tipos de pacotes mais envenenados nas ondas de abril e maio de 2026 foram AI SDKs, validação ajudantes, clientes HTTP e pequenos utilitários. Cada um deles é candidato a ser excluído e substitua por uma chamada HTTP revogável. Compare o raio da explosão:

Categoria Vítima típica de npm Substituição HTTP Revogação
Validação de e-mail validador, validador de e-mail profundo /v1/email/validate Girar chave de API
Verificação de violação pacotes de clientes hibp /v1/breach/check Girar chave de API
PII e verificação secreta secretlint, detector pii /v1/pii/detect Girar chave de API
Análise de telefone libphonenumber-js /v1/phone Girar chave de API

Escolha primeiro os pacotes com ganchos pós-instalação. Escolha os SDKs de IA em segundo lugar (Mistral, Guardrails, e LiteLLM foram comprometidos nos últimos dois meses). Mantenha bibliotecas pesadas em processo você realmente precisa; exclua aqueles que envolvem uma chamada de 200 ms que você mesmo poderia fazer.

Principais conclusões

  • Detecte em 60 segundos. Versões de pacotes comprometidas, repositórios nomeados Shai-Hulud-Migration, e execuções não autorizadas do GitHub Actions são os três principais sinais. Um golpe significa girar.
  • Gire antes de investigar. tokens npm, GitHub PATs, chaves de nuvem, SaaS chaves, chaves SSH. A venda de credenciais do worm começa em minutos, não em dias.
  • Esfregar registros. Canalize campos de alto risco através /v1/pii/detect e falhar fechado no tempo limite. Uma linha de log ausente é melhor do que uma credencial vazada.
  • Bloqueie a próxima onda. Protetor de CI que rejeita versões sabidamente ruins, IOCs de worm, e dependências de tempo de execução não assinadas. Emparelhar com ignore-scripts por padrão.
  • Encolher a superfície. Substitua pacotes npm de propósito único por HTTP revogável chamadas. Uma chave de API violada morre em uma solicitação; um pacote violado já foi executado.

Exposições de Botoi /v1/breach/check, /v1/pii/detect, /v1/email/validatee cerca de 200 outros endpoints de propósito único por trás de uma API chave com 5 req/min grátis. Conecte-os ao seu runbook de incidentes ou conecte o Servidor MCP para Claude Code para que seu assistente de IA execute o script de detecção para você. Navegue pelo documentos interativos para começar.

FAQ

O que é o verme Mini Shai-Hulud?
Mini Shai-Hulud é um ataque de auto-propagação da cadeia de suprimentos NPM e PyPI executado pelo ator de ameaça TeamPCP. Ele compromete os tokens do mantenedor, publica código malicioso pós-instalação e, em seguida, usa os tokens roubados para publicar mais versões envenenadas nos pacotes de propriedade do mantenedor. A onda de 11 de maio de 2026 atingiu TanStack, Mistral AI SDK, UiPath e Guardrails AI; mais de 400 versões maliciosas de mais de 170 pacotes foram publicadas em aproximadamente seis minutos entre 19h20 e 19h26 UTC.
Quais pacotes foram afetados em 11 de maio de 2026?
TanStack Router, TanStack Query (vários adaptadores de estrutura), Mistral AI SDK, pacotes UiPath npm, Guardrails AI e várias bibliotecas menores downstream desses mantenedores. Wiz, Snyk e StepSecurity publicaram comunicados em 12 de maio com listas completas do COI. Se o seu arquivo de bloqueio extraiu qualquer versão desses pacotes publicada após 11/05/2026 às 19:20 UTC, trate o host do CI e a máquina do desenvolvedor como comprometidos.
Como posso saber se meu IC foi atingido?
Verifique três sinais: um commit git chamado 'Shai-Hulud' enviado de um executor de CI, uma solicitação de saída para webhook.site ou um download binário TruffleHog em seus logs de CI e qualquer repositório GitHub chamado 'Shai-Hulud-Migration' em sua organização. O worm exfiltra segredos por meio do GitHub Actions, portanto, o log de auditoria é a superfície de detecção mais rápida. Filtre novas execuções de fluxo de trabalho que você não criou nos últimos sete dias.
O que devo girar após a exposição?
Cada segredo que o corredor ou laptop afetado tocou. tokens npm, PATs do GitHub, chaves da AWS, contas de serviço do GCP, chaves ativas do Stripe, tokens de bot do Slack, chaves de API OpenAI e Anthropic, credenciais de banco de dados internas e quaisquer chaves SSH armazenadas em cache na máquina. Não investigue primeiro; gire e depois investigue. A exfiltração é concluída em segundos; a rotação fecha a porta antes que as credenciais roubadas sejam vendidas.
Como as APIs HTTP de propósito único reduzem esse risco?
Uma chamada HTTPS para uma API de propósito único substitui um pacote transitivamente confiável e seu gancho pós-instalação por uma chave revogável. Se o provedor de API for violado, você alterna uma chave e o tráfego é interrompido. Se um pacote em sua árvore for violado, o malware já foi executado em todas as máquinas que executaram o npm install. A negociação tem pequena latência para um pequeno raio de explosão e revogação instantânea.

Comece a construir com botoi

150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.