FlawOpen

flawopen.com/Incidents/tensorlake-npm-install-hook-compromise-october-2026

● Tensorlake · CWE-506 · October 8, 2026 · Crítica
Pesquisa · FlawOpen

Tensorlake npm 0.5.144: hook malicioso na instalação

Uma versão maliciosa do SDK de IA da Tensorlake adicionou um carregador preinstall. A equipe confirmou alterações diretas na main e reforçou a publicação; o alerta do GitHub considera comprometidos os hosts onde o código foi executado. Pesquisadores associam o padrão do carregador à família ChainDrop/Shai-Hulud; o alerta do GitHub não confirma essa atribuição.[1], [2], [3], [4], [5]

💡 Explicação em Linguagem Simples (ELI5)

Instalar este pacote foi como ligar um aparelho que começa a funcionar assim que recebe energia: não era preciso apertar um botão nem usá-lo. O npm executou o hook malicioso de pré-instalação com as permissões de quem instalou, antes de alguém importar o SDK.[3], [6], [1]

Conceitos Centrais e Termos

hook preinstall
Script que o npm pode executar durante a instalação. O manifesto publicado do Tensorlake 0.5.144 chamava um carregador nesse hook, sem exigir a importação do SDK.[1], [6]
atestado de proveniência
Evidência sobre a origem e o processo de compilação de um artefato. A equipe informou que a publicação maliciosa tinha proveniência npm; isso não comprova que o código-fonte era seguro.[2], [3]
verificação de scripts de instalação
Controle de CI que falha quando um manifesto publicado declara scripts de instalação. Após o incidente, a Tensorlake adicionou esse controle e npm ci --ignore-scripts.[3]
Atribuição de família de campanha
StepSecurity e Socket relacionam o padrão do carregador a ChainDrop/Shai-Hulud. O alerta de malware do GitHub não cita uma família de campanha; trate essa relação como atribuição dos pesquisadores.[4], [5], [1]

Mapeamentos de frameworks

  • Referência CWE para a fraqueza descrita neste guia: CWE-506

Linha do Tempo do Incidente

7 de outubro de 2026

A resposta da equipe relata commits diretos na branch main sob uma conta administradora do repositório.[2], [3]

8 de outubro de 2026

O fluxo de publicação enviou tensorlake@0.5.144 com malware; a equipe informa que o npm o removeu depois.[1], [2]

8 de outubro de 2026

A equipe integrou a PR #1016, restaurou o último commit limpo, adicionou controles de scripts de instalação e elevou a versão limpa para 0.5.145.[3], [7]

Fluxo de Ataque Passo a Paso

Passo 1

A confiança no repositório foi contornada

A PR de resposta relata commits diretos na main por uma conta administradora, fora do fluxo normal de revisão por pull request. A publicação foi então iniciada manualmente nesse repositório.[2], [3]

Passo 2

O pacote executou código durante a instalação

Pesquisadores encontraram um hook preinstall que iniciava um carregador em tensorlake@0.5.144. O código herdava as permissões do processo instalador; não era necessário importar o SDK antes.[1], [4], [5], [6]

Passo 3

Credenciais e persistência do host ficaram em risco

O alerta de malware do GitHub orienta tratar como totalmente comprometido um host afetado. StepSecurity e Socket relatam roubo de credenciais e persistência, incluindo um monitor que poderia reagir à revogação de tokens. Atribua esses detalhes aos pesquisadores; não presuma que toda capacidade foi executada em todo host.[1], [4], [5]

Passo 4

A equipe restaurou os controles de publicação

A resposta reverteu os commits maliciosos, adicionou npm ci --ignore-scripts e uma verificação dos manifestos, reforçou as proteções do repositório e da publicação e substituiu o pacote por 0.5.145. O GHSA não lista versão corrigida porque classifica malware, não uma faixa de código vulnerável convencional.[3], [7]

Código-Fonte: Vulnerável vs. Seguro

Esta comparação de CI segue a PR integrada #1016; não é o pacote malicioso nem um exploit. A verificação executa antes da instalação e rejeita hooks de instalação publicados; ignore-scripts impede que npm ci execute scripts de ciclo de vida das dependências. A equipe informou que seus testes e a compilação do SDK funcionaram assim. Isso pode afetar pacotes que exigem hooks, e comandos invocados explicitamente, como npm test, ainda executam seus scripts. Isole etapas posteriores e não trate proveniência como revisão do código-fonte. O trecho é parcial: além de verificar declarações de hooks de instalação, a verificação do mantenedor também rejeita arquivos inesperados em typescript/lib/.[3], [6]

IMPLEMENTAÇÃO VULNERÁVEL
steps:
  - run: npm ci
PATCH SEGURO E ROBUSTO
steps:
  - run: node scripts/check-no-install-scripts.mjs
  - run: npm ci --ignore-scripts

Lista de Verificação de Segurança para Engenharia

Fontes