依存パッケージの「クールダウン」設定(minimumReleaseAge / min-release-age)
公開直後のバージョンを一定時間インストールしない設定を入れ、乗っ取られたパッケージの「公開〜検知・削除」の窓を避ける。
何を解決するか / いつ使うか
- Shai-Hulud 系や TanStack 侵害のように、悪性バージョンは公開後数分〜数時間で検知・非推奨化されることが多い。
- インストールを 1 日〜1 週間遅らせるだけで、その窓に巻き込まれるリスクを大きく下げられる。
- 「検知はされるが、パッチが出るまでにDLした人が犠牲になる」構図(@nkowne63)への直接の対策。
設定例
パッケージマネージャごとに単位が違うので注意。
yaml
# pnpm-workspace.yaml(pnpm 10.16+、単位は「分」。pnpm 11 からデフォルト 1440 = 1日)
minimumReleaseAge: 1440 # 1週間なら 10080ini
# .npmrc(npm CLI 11.10+、単位は「日」)
min-release-age=1toml
# bunfig.toml(Bun 1.3+、単位は「秒」)
[install]
minimumReleaseAge = 86400Yarn Berry 4.10+ は npmMinimalAgeGate(分)。
緊急のセキュリティパッチだけ今すぐ入れたいとき
環境変数で一時的に無効化できる(@zaru の紹介)。
sh
# pnpm
npm_config_minimum_release_age=0 pnpm update <pkg>
# npm
npm_config_min_release_age=0 npm install <pkg>pnpm 11 では pnpm audit --fix が修正版を minimumReleaseAgeExclude に追加してくれるので、恒常的な例外はそちらで管理するのが安全。
注意点
- 「インストール時に解決されるバージョン」にだけ効く。lockfile に既に悪性版が入っていれば防げない。
- 時間が経っても検知されない巧妙なマルウェアには無力。install script 制御(別記事)やレジストリ側のブロックと併用する。
- 新しいパッケージマネージャ aube(mise 作者製)はデフォルトで
minimumReleaseAge=1440(@shisama_ の紹介)。
出典
- @zaru · 2026-04-10
- @shisama_ · 2026-04-24
- @nkowne63 · 2026-05-14
- 参考: pnpm ドキュメント「Mitigating supply chain attacks」