GitHub Reforça a Segurança do npm com Autenticação de Dois Fatores e Publicação em Etapas
O GitHub implementa autenticação de dois fatores (2FA) para publicação de pacotes no npm, visando fortalecer a segurança contra ataques à cadeia de suprimentos. A nova funcionalidade de 'staged publishing' exige uma confirmação manual com 2FA, dificultando a exploração de CI/CD pipelines comprometidos.
MundiX News·26 de maio de 2026·2 min de leitura·👁 2 views
O GitHub está intensificando a proteção do npm em resposta a um aumento significativo de ataques à cadeia de suprimentos. A partir de agora, a publicação de pacotes no npm pode ser confirmada por meio de autenticação de dois fatores (2FA), e os desenvolvedores têm à disposição flags específicas para controlar fontes de instalação não padronizadas.
Os desenvolvedores introduziram um novo sistema de 'staged publishing' ('publicação em etapas') para o npm, projetado para dificultar a vida de atacantes que comprometem CI/CD pipelines e contas de desenvolvedores. A publicação de um pacote agora pode ocorrer em duas etapas: primeiro, o tarball pronto é enviado para uma fila especial, e então o maintainer deve confirmar manualmente o lançamento usando 2FA. Somente após essa confirmação, o pacote se torna disponível em npmjs.com. A empresa explica que o novo sistema adiciona 'proof of presence' – a confirmação da presença real de uma pessoa – mesmo para pipelines automatizados e 'trusted publishing' usando OpenID Connect (OIDC). Isso significa que comprometer o CI/CD já não será suficiente para um ataque: o invasor precisará passar também pela verificação 2FA.
A funcionalidade já está amplamente disponível, mas nem todos podem usá-la. Para 'staged publishing', o pacote deve já existir no registro npm, o desenvolvedor deve ter permissão para publicar, e a autenticação de dois fatores deve estar ativada para a conta. Para enviar o pacote, usa-se o comando npm stage publish, mas isso requer a npm CLI versão 11.15.0 ou superior. O GitHub recomenda combinar a publicação em etapas com 'trusted publishing' via OIDC para proteger ainda mais a cadeia de suprimentos. Simultaneamente, novos mecanismos de controle de instalação de pacotes foram introduzidos no npm. Trata-se de três flags: --allow-file, --allow-remote e --allow-directory. Elas funcionam com o mesmo princípio da já existente --allow-git e permitem explicitamente a instalação de dependências apenas de fontes específicas. Por exemplo, --allow-file lida com arquivos locais e arquivos tarball, --allow-remote com URLs remotas e arquivos HTTPS, e --allow-directory controla a instalação de diretórios locais. Em essência, os desenvolvedores do GitHub estão implementando uma abordagem de allowlist para todos os métodos de instalação de pacotes não padronizados. Isso deve reduzir o risco de ataques por meio de dependências, arquivos maliciosos e fontes de terceiros comprometidas.
Essas novas medidas de segurança surgem em meio a um aumento acentuado no número de ataques às cadeias de suprimentos de código aberto. Em particular, uma das maiores ondas de ataques está relacionada ao grupo TeamPCP, que compromete massivamente pacotes populares e usa worms autorreplicantes para manter o ciclo de infecções.
O GitHub está intensificando a proteção do npm em resposta a um aumento significativo de ataques à cadeia de suprimentos. A partir de agora, a publicação de pacotes no npm pode ser confirmada por meio de autenticação de dois fatores (2FA), e os desenvolvedores têm à disposição flags específicas para controlar fontes de instalação não padronizadas.
Os desenvolvedores introduziram um novo sistema de 'staged publishing' ('publicação em etapas') para o npm, projetado para dificultar a vida de atacantes que comprometem CI/CD pipelines e contas de desenvolvedores. A publicação de um pacote agora pode ocorrer em duas etapas: primeiro, o tarball pronto é enviado para uma fila especial, e então o maintainer deve confirmar manualmente o lançamento usando 2FA. Somente após essa confirmação, o pacote se torna disponível em npmjs.com. A empresa explica que o novo sistema adiciona 'proof of presence' – a confirmação da presença real de uma pessoa – mesmo para pipelines automatizados e 'trusted publishing' usando OpenID Connect (OIDC). Isso significa que comprometer o CI/CD já não será suficiente para um ataque: o invasor precisará passar também pela verificação 2FA.
A funcionalidade já está amplamente disponível, mas nem todos podem usá-la. Para 'staged publishing', o pacote deve já existir no registro npm, o desenvolvedor deve ter permissão para publicar, e a autenticação de dois fatores deve estar ativada para a conta. Para enviar o pacote, usa-se o comando npm stage publish, mas isso requer a npm CLI versão 11.15.0 ou superior. O GitHub recomenda combinar a publicação em etapas com 'trusted publishing' via OIDC para proteger ainda mais a cadeia de suprimentos. Simultaneamente, novos mecanismos de controle de instalação de pacotes foram introduzidos no npm. Trata-se de três flags: --allow-file, --allow-remote e --allow-directory. Elas funcionam com o mesmo princípio da já existente --allow-git e permitem explicitamente a instalação de dependências apenas de fontes específicas. Por exemplo, --allow-file lida com arquivos locais e arquivos tarball, --allow-remote com URLs remotas e arquivos HTTPS, e --allow-directory controla a instalação de diretórios locais. Em essência, os desenvolvedores do GitHub estão implementando uma abordagem de allowlist para todos os métodos de instalação de pacotes não padronizados. Isso deve reduzir o risco de ataques por meio de dependências, arquivos maliciosos e fontes de terceiros comprometidas.
Essas novas medidas de segurança surgem em meio a um aumento acentuado no número de ataques às cadeias de suprimentos de código aberto. Em particular, uma das maiores ondas de ataques está relacionada ao grupo TeamPCP, que compromete massivamente pacotes populares e usa worms autorreplicantes para manter o ciclo de infecções.