A segurança no npm v12 será uma das maiores mudanças já realizadas no ecossistema JavaScript. O GitHub anunciou uma série de medidas que alteram comportamentos históricos do comando npm install, com o objetivo de reduzir drasticamente os riscos associados aos ataques à cadeia de suprimentos, uma das ameaças mais perigosas da atualidade para desenvolvedores e empresas.
Nos últimos anos, criminosos cibernéticos passaram a explorar bibliotecas, dependências e pacotes aparentemente legítimos para distribuir malware, roubar credenciais e comprometer ambientes corporativos inteiros. Como milhões de aplicações dependem diariamente do npm, qualquer vulnerabilidade nesse fluxo pode gerar impactos globais.
Com a chegada do npm v12, o GitHub pretende inverter uma lógica que existe há anos: em vez de confiar automaticamente em scripts e fontes externas, o gerenciador de pacotes passará a adotar uma postura de “bloqueado por padrão”, exigindo autorização explícita para operações consideradas sensíveis. Embora a mudança possa causar incompatibilidades e exigir adaptações nos projetos atuais, ela representa um passo importante para fortalecer a segurança do ecossistema Node.js.
O fim da execução automática de scripts no npm install
Uma das mudanças mais relevantes para a segurança no npm v12 envolve a execução automática de scripts durante a instalação de dependências.
Atualmente, quando um desenvolvedor executa o comando npm install, diversos scripts podem ser acionados automaticamente. Entre eles estão os eventos preinstall, install e postinstall, amplamente utilizados por bibliotecas para compilar componentes, baixar recursos adicionais ou realizar configurações automáticas.
O problema é que esses mesmos mecanismos também podem ser explorados por agentes maliciosos.
Pacotes comprometidos conseguem executar código arbitrário durante a instalação sem que o usuário perceba. Em muitos casos, basta instalar uma dependência aparentemente confiável para que informações sensíveis sejam coletadas ou sistemas sejam comprometidos.
No npm v12, esses scripts deixarão de ser executados automaticamente por padrão. O mesmo vale para processos relacionados ao node-gyp, frequentemente utilizado para compilar módulos nativos, além de scripts originados de dependências obtidas via Git.
A nova abordagem exige que os desenvolvedores realizem uma ação explícita para permitir a execução desses componentes. Isso reduz significativamente a superfície de ataque e dificulta campanhas maliciosas que dependem da confiança automática do usuário.
Embora a mudança possa quebrar fluxos de trabalho antigos, ela reforça uma prática fundamental de segurança: executar código apenas quando sua origem e finalidade forem conhecidas.

Segurança no npm v12 traz restrições severas a repositórios Git e URLs externas
Outra frente importante das mudanças está relacionada às fontes utilizadas para obter dependências.
Historicamente, o npm permitia diversas formas de instalação além do registro oficial. Embora isso oferecesse flexibilidade, também abriu espaço para abusos e vetores de ataque difíceis de monitorar.
Bloqueio de dependências baseadas em Git
O npm v12 passará a impor restrições rigorosas ao uso de dependências baseadas diretamente em repositórios Git.
Esse cenário é particularmente sensível porque um pacote pode depender de outro pacote hospedado fora do registro oficial, criando uma cadeia de confiança difícil de auditar.
Além disso, atacantes podem explorar configurações inadequadas ou manipulações do arquivo .npmrc para alterar o comportamento esperado da instalação e redirecionar dependências para fontes controladas por terceiros.
Com as novas regras, dependências Git diretas ou transitivas estarão sujeitas a controles mais rígidos e exigirão aprovação explícita antes de determinadas operações serem executadas.
A medida busca garantir que desenvolvedores saibam exatamente quais códigos externos estão sendo introduzidos em seus ambientes.
URLs remotas sob aprovação explícita
Outra mudança significativa envolve arquivos remotos distribuídos por meio de URLs HTTPS.
Até então, era possível que determinadas dependências fossem resolvidas automaticamente a partir de arquivos compactados, como tar.gz, hospedados em servidores externos.
Embora essa funcionalidade tenha usos legítimos, ela também representa um risco importante para a cadeia de suprimentos. Se um servidor for comprometido ou um recurso remoto for alterado, milhares de instalações podem receber código malicioso sem qualquer alerta.
Por esse motivo, o npm v12 deixará de confiar automaticamente nesses recursos externos. A utilização dessas fontes exigirá mecanismos explícitos de aprovação e validação.
Na prática, isso reduz a possibilidade de que código não auditado seja introduzido silenciosamente em projetos de produção.
Casos reais que motivaram a reação do GitHub
As mudanças não surgem por acaso.
Nos últimos anos, o ecossistema open source enfrentou uma sequência de incidentes que evidenciaram os riscos da confiança excessiva em dependências externas.
Entre os casos mais comentados estão campanhas maliciosas envolvendo o popular eslint-config-prettier, que demonstraram como pacotes amplamente utilizados podem se tornar alvos valiosos para criminosos.
Também chamaram atenção os incidentes relacionados aos chamados pacotes Picasso, associados à plataforma Toptal, que levantaram preocupações sobre mecanismos de distribuição e validação de dependências.
Outro fator relevante foi o crescimento de campanhas de roubo massivo de dados por meio de pacotes comprometidos. Em muitos desses ataques, os invasores buscavam tokens, credenciais de acesso, chaves de API e segredos armazenados em ambientes de desenvolvimento e integração contínua.
Entre os exemplos mais sofisticados aparece a operação conhecida como Shai-Hulud, frequentemente citada como um caso emblemático da evolução dos ataques à cadeia de suprimentos modernos.
Esses incidentes demonstraram que o problema não está apenas na vulnerabilidade de um pacote específico, mas na confiança automática presente em toda a cadeia de distribuição de software.
Como preparar seus projetos para o npm v12
O GitHub não pretende realizar essa transição de forma abrupta.
Para facilitar a adaptação da comunidade, a recomendação atual é que desenvolvedores atualizem seus ambientes para o npm 11.16.0, versão que já introduz mecanismos de alerta e avisos de depreciação relacionados às futuras mudanças.
Esses avisos permitem identificar antecipadamente quais projetos dependem de comportamentos que deixarão de funcionar automaticamente no npm v12.
A estratégia ideal envolve realizar auditorias completas das dependências utilizadas pela aplicação.
É importante verificar:
- Scripts preinstall, install e postinstall existentes;
- Dependências obtidas via Git;
- Recursos externos carregados por URLs remotas;
- Configurações personalizadas presentes no .npmrc;
- Fluxos de build que dependem da execução automática de código.
Projetos que realmente necessitam desses recursos deverão migrar para modelos de opt-in, nos quais a execução acontece apenas após autorização explícita.
Quanto mais cedo essa análise for realizada, menor será o risco de interrupções quando a nova versão se tornar o padrão do ecossistema.
O futuro da segurança no ecossistema Node.js
A nova estratégia do GitHub representa uma mudança cultural importante para o universo JavaScript.
Durante muitos anos, a conveniência foi priorizada. Instalar pacotes rapidamente e sem intervenção manual ajudou a impulsionar a adoção do Node.js e do npm. Porém, o aumento da sofisticação dos ataques mostrou que esse modelo já não é suficiente para proteger desenvolvedores e organizações.
A segurança no npm v12 traz uma abordagem mais conservadora, baseada no princípio de confiança mínima. Embora isso possa provocar incompatibilidades iniciais, exigir ajustes em pipelines de CI/CD e até causar falhas em builds antigos, os benefícios de longo prazo tendem a superar os inconvenientes.
Ao reduzir a execução automática de código e limitar fontes externas não verificadas, o GitHub fortalece significativamente a defesa contra ataques à cadeia de suprimentos.
Para desenvolvedores, administradores de sistemas e profissionais de segurança, o momento é ideal para revisar dependências, auditar scripts e preparar seus ambientes para a nova realidade do npm.
