概要
npm CLI 11.xの最新リリースで、サプライチェーンセキュリティを高める2つの機能が追加された。1つ目はminimumReleaseAge設定で、新しく公開されたパッケージバージョンのインストールを任意の期間遅延させることで、悪意あるパッケージへの露出リスクを低減する。2つ目はOIDCトラステッドパブリッシングの一括設定機能で、npm trustコマンドを使って複数パッケージのOIDC設定を一度に構成できるようになった。
minimumReleaseAgeの仕組みと背景
minimumReleaseAgeは、公開直後のパッケージに依存する攻撃手法、すなわち悪意あるバージョンを公開してCI/CDパイプラインが自動的にインストールするまでの短い時間を狙う手法に対抗するものだ。インストールを数時間〜数日遅延させることで、セキュリティスキャナーやコミュニティによる検出の機会を確保できる。
この機能は他のJavaScriptパッケージマネージャーにも急速に広まっており、pnpm v10.16、Yarn 4.10.0(npmMinimalAgeGate)、Bun v1.3がそれぞれ同様の機能を実装済みだ。記事では「リリース遅延はJavaScriptパッケージマネージャー全体での基本的な期待になりつつある」と指摘しており、業界標準の防御制御として定着しつつある状況を示している。
ただし、現時点のnpm版には除外メカニズムが備わっておらず、内部パッケージと外部依存関係を区別できない。pnpmが持つ除外ルール機能の追加をユーザーが要望しており、今後の対応が注目される。
追加されたその他のセキュリティ機能
npm CLI 11.10.0では--allow-gitフラグも追加された。Git依存関係の.npmrcファイルは予期しないコード実行を引き起こす可能性があるため、npm install --allow-git=noneと設定することでGit依存関係の実行を制限できる。この制限はnpm CLI v12でデフォルトになる見通しだ。
OIDC一括設定機能は、npmがクラシックな公開トークンを長期的に廃止する方針の一環として追加された。npm trustコマンドで複数パッケージのOIDC設定をまとめて管理できるようになり、CI/CDパイプラインでのトークン管理の手間が軽減される。セキュリティ機能がパッケージマネージャーレベルで直接実装される流れは今後も続くと予想される。