GitHub encerra execução automática de scripts no npm: o que muda no CI/CD
O GitHub anunciou mudanças críticas no npm para impedir a execução automática de scripts maliciosos. Entenda o impacto nos seus pipelines de CI/CD e como se preparar para a versão 12.
O fim da execução automática de scripts no npm
O GitHub anunciou uma mudança estrutural importante no ecossistema npm: a partir da versão 12, que chega em julho, o comando install não executará mais scripts automaticamente. A medida visa fechar uma das maiores brechas de segurança da plataforma, frequentemente explorada por malwares como o worm Shai-Hulud.
Atualmente, cada npm install executa scripts de todas as dependências transitivas. Isso significa que um único pacote comprometido em sua árvore de dependências pode executar código arbitrário na sua máquina de desenvolvimento ou, o que é ainda mais grave, no seu servidor de integração contínua (CI). Como aponta o mantenedor Leo Balter, os scripts de ciclo de vida são a maior superfície de execução de código no ecossistema npm.
O que muda na prática com o npm 12
A atualização traz três alterações de segurança por padrão que você precisa integrar ao seu fluxo de trabalho:
- Bloqueio de scripts de ciclo de vida: Scripts configurados em
preinstall,installoupostinstallnão serão mais executados, a menos que sejam explicitamente permitidos viaallow-scripts. - Desativação do --allow-git: O download de dependências via URLs remotas (via Git) será desativado por padrão. Isso elimina o caminho de ataque onde um arquivo
.npmrcmalicioso poderia sobrescrever o executável do Git. - Fim do download remoto: A flag
allow-remotepassará a sernone, bloqueando o download de dependências de origens externas por padrão.
Impacto nos projetos e revisões necessárias
Essas mudanças são consideradas breaking changes. Se o seu projeto utiliza módulos nativos que precisam ser compilados durante a instalação, ou ferramentas como Playwright, Puppeteer e Electron — que dependem de scripts postinstall para buscar binários —, você precisará configurar uma lista de permissões (allowlist) no seu package.json.
A recomendação atual é que desenvolvedores comecem a configurar essas flags no arquivo .npmrc ou via variáveis de ambiente, preparando o terreno para a versão 12. Vale notar que a flag ignore-scripts, se estiver definida como true, irá sobrescrever a nova configuração allow-scripts. Portanto, se você pretende adotar o novo padrão, será necessário remover o ignore-scripts do seu ambiente.
Segurança na cadeia de suprimentos
Embora essa atualização seja um avanço necessário e aguardado, ela não é uma bala de prata. Parte da comunidade alerta que malwares podem simplesmente migrar o código malicioso do script de instalação para o próprio módulo, que ainda será executado. Além disso, gestores de pacotes como pnpm, Yarn Berry, Bun e Deno já possuíam essas restrições por padrão há algum tempo.
A segurança de software exige atenção constante, seja na gestão de acessos ou na integridade da sua infraestrutura. Para times que ainda gerenciam dependências e orçamentos de projetos de forma fragmentada, plataformas como Orqueza ajudam a centralizar o controle de operações, garantindo que o foco da equipe permaneça no código e não em vulnerabilidades evitáveis.
Fonte: theregister.com
Cansado de planilhas e ferramentas soltas?
Centralize clientes, projetos, CRM, financeiro e equipe em uma só plataforma. Comece grátis em 2 minutos, sem cartão.
Criar conta grátis →