O registro npm tomou uma medida urgente em toda a plataforma após ataques de cadeia de suprimentos ameaçarem milhares de desenvolvedores. Em 19 de maio, o npm invalidou todos os tokens de acesso granular com acesso de gravação que contornam a autenticação de dois fatores, forçando mantenedores a gerar credenciais frescas e atualizar todos os fluxos de trabalho automatizados.
Descoberta e escopo
O reset veio diretamente em resposta a uma campanha conhecida como Mini Shai-Hulud, uma ameaça coordenada que tem consumido o ecossistema JavaScript por quase um mês. O ataque que desencadeou o reset em massa aconteceu tarde em 18 de maio, quando atores de ameaças sequestraram uma conta legítima de mantenedor do npm chamada atool e enviaram 639 versões maliciosas de pacotes em 323 pacotes únicos em um único burst automatizado.
A onda varreu o ecossistema de visualização de dados @antv e atingiu pacotes como echarts-for-react, que vê cerca de 1,1 milhão de downloads semanais, junto com timeago.js, size-sensor e canvas-nest.js. A velocidade e a escala deixaram quase nenhum tempo para os defensores reagirem.
Vetor e exploração
O pesquisador Adnan Khan chamou todos os mantenedores do npm para habilitar o Staged Publishing imediatamente, chamando-o de um contra-ataque direto ao Shai-Hulud. O criador do npm, Isaac Schlueter, instou o GitHub, npm e Microsoft a desabilitar a publicação sem MFA em todo o ecossistema.
O ataque é construído em torno de uma ideia central: roubar os tokens que os desenvolvedores usam para publicar pacotes e, em seguida, enviar versões envenenadas de todos os pacotes que a vítima mantém. O verme varre máquinas de desenvolvedores e ambientes de CI/CD em busca de credenciais do npm.
Impacto e alcance
Os pesquisadores da Socket.dev rastrearam 1.055 versões comprometidas em 502 pacotes únicos abrangendo npm, PyPI e Composer. O grupo por trás disso foi atribuído a um ator de ameaça conhecido como TeamPCP. A campanha também atingiu mais longe do que muitos desenvolvedores esperavam.
O GitHub divulgou que os atacantes exfiltraram cerca de 3.800 de seus repositórios internos, com o ponto de entrada rastreado até o Nx Console, uma extensão do VS Code com 2,2 milhões de instalações. Atacantes haviam roubado credenciais de um mantenedor do Nx durante o comprometimento do TanStack e as usaram para publicar uma versão envenenada da extensão.
Medidas de mitigação recomendadas
Mantenedores cujos pipelines quebraram após o reset devem gerar novos tokens granulares e girar todas as credenciais que o ambiente pode ter tocado, incluindo tokens do GitHub, AWS, GCP e Azure, chaves SSH, tokens do Kubernetes, tokens do Vault, chaves Stripe e arquivos de configuração de IA como .claude/settings.json.
O npm também lançou o Staged Publishing em preview público em 20 de maio, um recurso que muitos na comunidade de segurança acreditam ter muito mais peso a longo prazo. Sob este modelo, publicações automatizadas de CI passam por uma área de staging, onde um mantenedor deve aprovar o lançamento com um passo verificado por MFA antes que ele alcance os usuários.
O que os CISOs devem fazer imediatamente
Equipes de segurança devem revisar os fluxos de trabalho de CI/CD e garantir que a autenticação multifator esteja habilitada para todas as publicações. A implementação do Staged Publishing é recomendada como uma medida de defesa em profundidade para prevenir a propagação de pacotes maliciosos.