本文へスキップ
ecdsa.com
npm audit signatures (npm 9.5+)パッケージマネージャー

エラーメッセージ

1 package has an invalid registry signature:

別の表記

  • 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

複数のパッケージが該当する場合は「N packages have invalid registry signatures:」となります。`keyid` がレジストリの鍵に含まれていない署名は、コード `EMISSINGSIGNATUREKEY` で失敗します(「…has a registry signature with keyid: … but no corresponding public key can be found」)。無効な来歴アテステーションは「…has an invalid attestation」の下に一覧表示されます。

npm audit signatures (npm 9.5+) — registry signature check of installed packages

このエラーの意味

npm はレジストリの署名鍵に対応する公開鍵をダウンロードし、インストールされた各パッケージのレジストリ署名(`name@version:integrity` に対する ECDSA 署名)を確認しましたが、少なくとも 1 つのパッケージで検証に失敗しました。パッケージのメタデータ(tarball の完全性ハッシュを含む)がレジストリの署名後に変更されたか、インストール元のレジストリが公開していない鍵で署名しているかのどちらかです。npm は該当するパッケージを一覧表示し、最後に「Someone might have tampered with this package since it was published on the registry!」と出力します。

発生する理由

修正方法

  1. 1.

    公開レジストリと比較する

    同じバージョンについて公開レジストリが示す完全性ハッシュがロックファイルと一致する場合、問題はミラーにあります。一致しない場合は、ロックファイルかパッケージが変更されています。

    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. 2.

    CI でチェックを実行する

    `npm ci` の後に `npm audit signatures` を実行すると、署名がない依存関係、署名が正しくない依存関係、来歴が一致しない依存関係があった場合にビルドが失敗します。

    yaml
    # CI: fail the build on missing or invalid signatures and provenance
    - run: npm ci
    - run: npm audit signatures

関連するエラー

署名エラーデータベースをすべて見る