パッケージマネージャーに「冷却期間」を——サプライチェーン攻撃への新たな防衛策

LiteLLMのサプライチェーン攻撃(2026年3月)を受け、開発者コミュニティで改めて注目を集めているのが「依存関係クールダウン(dependency cooldown)」という考え方だ。これは、パッケージの更新版をすぐにインストールするのではなく、リリースから数日間待機してコミュニティが問題を検出できる時間を設けるという手法である。

オープンソース開発者のAndrew Nesbittが2026年3月にまとめたレポートによると、この機能への対応は予想以上に急速に広まっており、主要ツールが続々と実装を完了させている。

各ツールの対応状況

JavaScript/TypeScript系:

  • pnpm 10.16(2025年9月)— minimumReleaseAge オプションを追加。信頼済みパッケージには minimumReleaseAgeExclude で除外設定が可能
  • Yarn 4.10.0(2025年9月)— npmMinimalAgeGate(分単位で指定)を実装。npmPreapprovedPackages で承認済みパッケージの除外もサポート
  • Bun 1.3(2025年10月)— bunfig.toml 経由で minimumReleaseAge を設定可能に
  • npm 11.10.0(2026年2月)— min-release-age オプションを追加

JavaScript以外:

  • Deno 2.6(2025年12月)— deno update および deno outdated コマンドに --minimum-dependency-age フラグを追加
  • uv 0.9.17(2025年12月)— 既存の --exclude-newer に相対期間指定を追加。exclude-newer-package によるパッケージ単位の上書き設定も可能
  • pip 26.0(2026年1月)— --uploaded-prior-to オプションを追加(現時点では絶対タイムスタンプのみ対応)

pip の相対期間指定はまだ未対応

Pythonの標準パッケージマネージャーである pip は現時点で絶対日時のみの指定に限られており、「3日以上経過したものだけ」といった相対的な指定には未対応だ。ただし開発者のSeth LarsonはCronジョブを使って pip.conf 内の日付を定期更新するという回避策を公開しており、相対期間指定のサポートはGitHub Issueで正式に要望されている。

なぜ今、この対策が重要なのか

サプライチェーン攻撃とは、正規パッケージの更新に悪意あるコードを混入させる手法で、近年急増している。攻撃者はリリース直後の短い時間帯を狙うことが多く、クールダウン期間を設けることでコミュニティやセキュリティ研究者が問題を発見・報告する時間的余裕が生まれる。

日本の開発者にとっても、本番環境での npm installpip install を自動化している場合は特に注意が必要だ。CI/CDパイプラインにこれらのオプションを組み込むだけで、ゼロコストに近い形でリスクを大幅に低減できる。


元記事: Package Managers Need to Cool Down