世界を動かす技術を、日本語で。

Pnpmはサプライチェーン攻撃を防ぐための新しい設定を導入しました

2025年9月18日原文(pnpm.io)

概要

  • pnpm に新しいセキュリティ設定と依存関係検索機能を追加
  • minimumReleaseAge で新規リリース依存パッケージのインストール遅延が可能
  • finder functions により依存関係の高度な絞り込みが実現
  • 複数の バグ修正 と利便性向上のパッチ適用
  • 実用例や設定方法も明記

新機能:依存関係アップデートの遅延設定

  • minimumReleaseAge 設定で、公開直後のパッケージインストールを一定時間遅延
  • 例: minimumReleaseAge: 1440 で、24時間以内に公開されたパッケージはインストール不可
  • 攻撃による悪意あるバージョン流通リスクの低減
  • minimumReleaseAgeExclude で特定の依存関係のみ遅延対象外設定が可能
    • 例:webpackを常に最新でインストール
  • 関連Issue: #9921

依存関係フィルタリングの高度化:finder functions

  • finder functions サポートで、依存パッケージを名前以外の条件でも検索可能
  • .pnpmfile.cjs にfinder関数を定義し、--find-by=<関数名>で呼び出し
    • 例:peerDependenciesに react@17 を持つパッケージの検索
  • 検索結果には依存関係ツリー上の正確な位置を表示
  • finder関数から文字列を返すことで、追加情報も出力可能
    • 例:ライセンス情報の表示
  • 関連PR: #9946

パッチ・バグ修正

  • Node.js 24 実行時の非推奨警告の修正(#9529)
  • nodeVersion が厳密なsemverでない場合、エラーをスロー(#9934)
  • pnpm publish で.tar.gzファイルの公開が可能に(#9927)
  • Ctrl-C によるプロセス中断時、pnpm runが非ゼロ終了コードを返すよう修正(#9626)

Hackerたちの意見

みんなが侵害されたパッケージの最新バージョンをインストールするのに3日待つなら、事件を検出するのに3日以上かかるよね。

たくさんの人がnpmを使うから、彼らが炭鉱のカナリアになるんだろうね :) もっと真面目に言うと、自動スキャナーはすでに悪意のあるパッケージを見つけるのが得意みたい。npm自体が自動対策を導入してないのが不思議だよ。

いや、アプリセキュリティの会社は常にnpmをスキャンして、マルウェアの更新パッケージをチェックしてるから。多くの攻撃はそのおかげで捕まってるよ。例えば、debugとchalkのサプライチェーン攻撃はこうやって見つかった: https://www.aikido.dev/blog/npm-debug-and-chalk-packages-com...

  1. チェックや監査はまだ行われるだろうし(もし行われていればだけど) 2) 所有者が侵害されていることに気づくリアルなチャンス 3) そのコモンズが完全に悲劇になる前に早めに採用すること。

最近の3つの大きなインシデントがどうやって発覚したか考えてみて。個々のユーザーがパッケージをインストールするのではなく、セキュリティ会社が新しいアップロードに対して自動スキャンを実行して監査のためにフラグを立てたからだよ。このモデルではうまく機能すると思うし、何か新しく出たものをインストールする必要がない場合は、多くのケースで安価だよ。

それに、みんなが妥協されたパッケージの最新バージョンをインストールするのに3日待つつもりなら、野良での妥協に対する修正が広まるのに3日以上かかることになるよね。結局、どっちもどっちだよ。

chalk+debug+error-exのメンテナーは、家に帰って「成功裏に公開されました」っていうnpmからのメールがたくさん来てるのを見て、数時間後に気づくんじゃないかな。

それがnpmの役割だから、最初にインストールするんだよね。使い捨てのやつら。

名前に単位を含めるか、値の一部として単位を選択する必要があったね。ごめん、ちょっと気になるポイントなんだ。

それか、ISO8601の標準表記を使えばいいんじゃない?(例えば「P1D」で1日)

ISO8601の期間を使うべきだよ、例えばPT3Mみたいに。

新しい設定は古いものと一貫してるから、私的にはそっちの方が重要だと思うよ: https://pnpm.io/settings#modulescachemaxage

Hacker Newsで議論の続きを見る