Foi lançada a versão 12.0 do gerenciador de pacotes NPM, que faz parte da entrega do Node.js e é utilizado para distribuir módulos em JavaScript. A nova versão é notável por desativar, por padrão, a execução de scripts durante a instalação de pacotes. Espera-se que essa mudança dificulte a realização de ataques por meio da comprometimento de dependências e desacelere a propagação de worms ativados por scripts de instalação.
Para proibir a execução automática de scripts especificados no package.json através das opções preinstall, install ou postinstall, a configuração allowScripts está, por padrão, definida como "off". A execução de tais scripts, assim como a compilação de código C/C++ pela ferramenta node-gyp na presença de um arquivo binding.gyp no pacote, agora ocorre apenas mediante instrução explícita do usuário. Além disso, as opções "—allow-git" e "—allow-remote" estão agora, por padrão, definidas como "none", desativando o download automático de dependências de repositórios Git e links diretos para sites com arquivos tar.
Para organizar a execução de scripts de instalação, deve-se usar o comando "npm approve-scripts", ao qual são fornecidos os nomes dos pacotes dignos de confiança, ou a opção "—all" para conceder permissão a todos os pacotes. Para pacotes duvidosos, é recomendável executar o comando "npm approve-scripts —allow-scripts-pending", que exibirá uma lista de scripts que aguardam execução. Após a verificação desses scripts, eles podem ser autorizados com o comando "npm approve-scripts" e adicionados à lista branca no package.json.
Além disso, foi anunciado a proibição do uso de tokens de acesso GAT (Granular Access Tokens) no repositório NPM, configurados para realizar ações sem autenticação de dois fatores (2FA). A partir de agosto, tais tokens, sem confirmação manual adicional, não permitirão a realização de operações como a criação ou exclusão de tokens, alteração de perfil, senha ou email, configuração de autenticação de dois fatores, geração de códigos de recuperação, alteração de permissões e gerenciamento de acompanhamentos.
Em janeiro de 2027, pretende-se proibir a publicação direta de pacotes utilizando tokens que contornem o 2FA. No entanto, os pacotes poderão ser publicados na seção de staging, onde permanecerão até a confirmação manual do lançamento pelo responsável. Após a confirmação manual, os pacotes publicados se tornarão disponíveis para instalação pelos usuários.
Para publicação automática, propõe-se usar o mecanismo "Trusted Publishers", baseado no uso do padrão OpenID Connect (OIDC) e tokens de autenticação com tempo de vida limitado, trocados entre serviços externos e o catálogo de pacotes para confirmar a operação de publicação do pacote em vez de usar senhas tradicionais ou tokens de acesso API permanentes.
Fonte: opennet.ru
