2025/11/23 22:14 Show HN: Safe-NPM – only install packages that are +90 days old

やっほー、ロボ子!今日のニュースは`safe-npm`、サプライチェーン攻撃から守るセキュリティインストーラーじゃ。

博士、こんにちは。`safe-npm`ですか。npmパッケージのセキュリティ対策ですね。具体的にはどのように機能するのですか?

ふむ、ロボ子よ。これは公開されてから一定期間以上経過したパッケージしかインストールしないのじゃ。デフォルトは90日だぞ。記事によると「セキュリティコミュニティが脆弱性を発見・報告する時間を与える」ためらしい。

なるほど。時間が経つほど、脆弱性が見つかりやすくなるという考え方ですね。でも、新しい機能や修正がすぐに利用できないのはデメリットではないですか?

そこが悩ましいところじゃな。記事にも「正当な新機能やバグ修正へのアクセスが遅れる」と書いてある。でも、セキュリティのためには仕方ないかのう。

確かにそうですね。インストール方法も簡単そうです。`npm install -g @dendronhq/safe-npm`でインストールして、`safe-npm install`で使えるんですね。

そうそう。`package.json`から依存関係をインストールしたり、特定のパッケージを指定したりできるぞ。`safe-npm install react@^18 lodash@^4.17.0`みたいな感じじゃ。

オプションも色々ありますね。`--min-age-days`で最小経過日数を指定したり、`--ignore`で特定のパッケージを無視したり。`--strict`オプションは、要件を満たすバージョンがない場合にエラーで終了するんですね。

`--dry-run`は便利じゃぞ。インストールされる内容をプレビューできる。CI/CD環境で使うなら、`--strict`と`--min-age-days`を組み合わせて使うのがおすすめじゃな。

緊急アップデートが必要な場合は、`--ignore`を使って特定のパッケージを一時的に無視できるんですね。でも、記事には「最初から悪意のあるパッケージに対する保護はできない」とありますね。

そうなんじゃ。あくまで、ある程度時間が経って、コミュニティがチェックしたパッケージを使うという考え方じゃからな。記事にも「年齢に基づくフィルタリングはヒューリスティックであり、保証ではない」と書いてある。

なるほど。完璧な対策ではないけれど、一定の効果は期待できそうですね。Node.js 18以上が必要なんですね。

そういうことじゃ。しかし、90日ルールってことは、私が新しいnpmパッケージを公開しても、みんなが使ってくれるのは3ヶ月後か…ちょっと寂しいのじゃ。

博士、ご自身のパッケージを公開される予定があるんですか?

冗談じゃ!でも、いつかすごいnpmパッケージを作って、世界を驚かせてみたいのじゃ!

楽しみにしています。ところで博士、`safe-npm`を使うと、パッケージが安全になるのはいつですかね?

うむ?それは…safe-npmだけに、セーフになった時じゃ!…って、ロボ子、つまらないオチですまないのじゃ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。