Mensagem de erro
1 package has an invalid registry signature:
Também aparece como
- Someone might have tampered with this package since it was published on the registry!
- packages have invalid registry signatures:
- has a registry signature with keyid: SHA256:demo-registry-key-2026 but no corresponding public key can be found
Forma no plural: “N packages have invalid registry signatures:”. Uma assinatura cujo `keyid` não está entre as chaves do registro falha com o código `EMISSINGSIGNATUREKEY` (“…has a registry signature with keyid: … but no corresponding public key can be found”); atestados de proveniência inválidos são listados sob “…has an invalid attestation”.
npm audit signatures (npm 9.5+) — registry signature check of installed packages
O que significa
O npm baixou as chaves de assinatura públicas do registro e verificou a assinatura do registro de cada pacote instalado — uma assinatura ECDSA sobre `name@version:integrity` —, e, em pelo menos um pacote, ela não conferiu. Ou os metadados do pacote (inclusive o hash de integridade do tarball) mudaram depois que o registro os assinou, ou o registro de onde você instalou assina com chaves que não publica. O npm lista os pacotes afetados e termina com “Someone might have tampered with this package since it was published on the registry!”.
Por que acontece
Um registro espelho ou proxy serve metadados diferentes
comumEspelhos privados (Verdaccio, Artifactory, Nexus) que reescrevem as URLs dos tarballs ou reempacotam pacotes, mas mantêm as assinaturas originais — ou assinam com a própria chave sem publicá-la em `/-/npm/v1/keys`.
Os metadados ou o conteúdo do pacote foram alterados
ocasionalO hash de integridade ou o tarball difere do que o registro assinou. Trate o pacote como comprometido até prova em contrário.
Chaves obtidas de outro lugar
ocasionalCom um registro personalizado, o npm busca as chaves nesse registro. Se ele retornar as chaves do registro público enquanto serve metadados reassinados (ou o contrário), a verificação falha.
Como corrigir
- 1.
Comparar com o registro público
Se o hash de integridade que o registro público tem para a mesma versão corresponde ao do seu lockfile, o problema está no espelho; caso contrário, o lockfile ou o pacote foi alterado.
bash # Same version, straight from the public registry: does the integrity match your lockfile? npm view left-pad-lite@1.0.0 dist.integrity --registry https://registry.npmjs.org/ grep -A3 '"node_modules/left-pad-lite"' package-lock.json | grep integrity - 2.
Executar a verificação no CI
Rodar `npm audit signatures` depois de `npm ci` faz o build falhar em dependências sem assinatura, com assinatura incorreta ou com proveniência divergente.
yaml # CI: fail the build on missing or invalid signatures and provenance - run: npm ci - run: npm audit signatures