Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
safe-npm — 安全にNPMパッケージをインストール | Kitploit
ツール/GitHubGitHub/kevinslin/safe-npm
汎用ユーティリティ脆弱性分析スクリプトと自動化DevSecOpsサプライチェーンセキュリティ
GitHubkevinslin/safe-npm

safe-npm

安全にNPMパッケージをインストール

リポジトリを見る
19391510ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

safe-npm

安全な npm インストーラー。新たに侵害されたパッケージからプロジェクトを保護します。

なぜこれが必要なのか?

npm パッケージへのサプライチェーン攻撃は増大する脅威です。攻撃者は正規のパッケージを侵害することがあります。その手段は次のとおりです。

  • メンテナの認証情報を盗む
  • 人気パッケージに悪意のあるアップデートを公開する
  • 放棄されたパッケージを乗っ取る

こうした攻撃は突然発生することがよくあります。昨日まで安全だったパッケージが今日は侵害されている可能性があります。safe-npm は、公開から一定期間(デフォルトで 90 日)が経過したパッケージバージョンのみをインストールすることで、プロジェクトを保護します。これにより、セキュリティコミュニティが悪意のあるリリースを発見して報告する時間が確保され、プロジェクトに到達する前に防ぐことができます。

仕組み

safe-npm install を実行すると、次の処理が行われます。

  1. package.json またはコマンドライン引数から依存関係を読み取る
  2. npm レジストリに問い合わせて、利用可能なすべてのバージョンを取得する
  3. 最低期間しきい値より新しいバージョンを除外する
  4. semver 要件と期間要件の両方を満たす最新バージョンを選択する
  5. npm を使用して安全なバージョンをインストールする

たとえば、react@^18 を指定し、悪意のある [email protected] が昨日公開された場合、safe-npm は代わりに 90 日以上前に公開された最新バージョンをインストールします。

インストール

npm からインストール(推奨)

# Install globally
npm install -g @dendronhq/safe-npm

# Now you can use it anywhere
safe-npm install

ソースからビルド

# Clone and build
git clone <repository-url>
cd safe-npm
npm install
npm run build

# Link the binary globally
npm link

基本的な使い方

package.json から依存関係をインストール

# Use the minimum age of 90 days (default)
safe-npm install

# Or specify your own minimum age
safe-npm install --min-age-days 120

特定のパッケージをインストール

# Install packages directly with version constraints
safe-npm install react@^18 lodash@^4.17.0

# These will be filtered to only use versions at least 90 days old
safe-npm install express --min-age-days 60

ドライランでインストール内容を確認

# Preview which versions would be installed without actually installing
safe-npm install --dry-run

設定オプション

--min-age-days <n>

デフォルト: 90

パッケージバージョンをインストールできるようになるまでに、公開から経過していなければならない最低日数です。

例: --min-age-days 120 は、パッケージが少なくとも 4 か月前のものであることを要求します。

調整のタイミング:

  • セキュリティを最大限に高めたい場合は増やす(例: 本番クリティカルシステムでは 180 日)
  • 新しい機能が必要で、多少のリスクを受け入れられる場合は減らす(例: 30 日)

--ignore <pkg1,pkg2>

期間要件を適用しないパッケージのカンマ区切りリストです。これらのパッケージは semver 範囲には従いますが、最低期間は無視されます。

例: --ignore typescript,@types/node

使用する場面:

  • 信頼している活発に更新されるパッケージ(TypeScript やビルドツールなど)
  • 組織内の内部パッケージ
  • 最新機能を緊急に必要とするパッケージ

--strict

いずれかの依存関係が期間要件を満たすバージョンに解決できない場合、エラーで終了します。

例: safe-npm install --strict

使用する場面:

  • 問題のあるパッケージをスキップせずビルドを失敗させたい CI/CD パイプライン
  • 確実性が必要な本番環境へのデプロイ

--dev / --prod-only

package.json のどの依存関係を処理するかを制御します。

例:

  • safe-npm install --dev - devDependencies のみインストール
  • safe-npm install --prod-only - 本番依存関係のみインストール

使用する場面:

  • より厳しい要件で開発ツールをインストールする場合
  • dev と prod の依存関係で異なる期間ポリシーを適用したい本番ビルド

--strategy <direct|overrides>

デフォルト: direct

safe-npm が解決されたバージョンをインストールする方法です。

direct - 解決されたバージョンを npm install package@version で直接インストールします。

  • シンプルでわかりやすい
  • 一度きりのインストールやスクリプトに適している

overrides - 解決されたバージョンを package.json の overrides フィールドに書き込み、その後 npm install を実行します。

  • 依存関係ツリー全体(推移的依存関係を含む)でバージョンを強制する
  • 注記: この機能は現在正しく動作しないため無効になっています。

--registry <url>

デフォルト: https://registry.npmjs.org

代替の npm レジストリを指定します。

例: --registry https://registry.company.com

使用する場面:

  • プライベート npm レジストリ
  • ミラーまたはキャッシュ

--dry-run

変更を加えずに、何がインストールされるかを表示します。

例: safe-npm install --dry-run

使用する場面:

  • 設定をテストする
  • 利用可能なバージョンを把握する
  • 本番システムに変更を加える前

一般的なワークフロー

新しいプロジェクトを保護する

# Create a new project
mkdir my-project && cd my-project
npm init -y

# Install dependencies safely
safe-npm install express@^4 lodash

# This creates package-lock.json with versions at least 90 days old

既存のプロジェクトを監査する

# Check what versions would be installed with age requirements
safe-npm install --dry-run

# If you're happy, install them
safe-npm install

CI/CD 統合

# In your CI pipeline, fail the build if any package can't meet age requirements
safe-npm install --strict --min-age-days 120

# Or allow newer packages for dev dependencies only
safe-npm install --prod-only --strict

緊急アップデート

# Need to urgently update a specific package? Add it to ignore list
safe-npm install --ignore package-with-critical-fix

テスト

プロジェクトにはテストスイートが含まれており、次のコマンドで実行できます。

npm test

自動テストでは、フィクスチャを使用してレジストリの応答をモックできます。

export SAFE_NPM_FIXTURES=/path/to/fixtures.json
safe-npm install

フィクスチャファイルには、各パッケージの npm レジストリ応答を模した JSON を含める必要があります。

どのように保護されるか

実際のシナリオ:

  1. 人気パッケージ popular-lib が信頼できる開発者によってメンテナンスされている
  2. 攻撃者がメンテナの npm 認証情報を侵害する
  3. 攻撃者がマルウェアを含む [email protected] を公開する
  4. ^5.0.0 を使用しているプロジェクトは、すぐに悪意のあるバージョンをインストールしてしまう
  5. safe-npm を使っていれば、4.9.0(90 日以上前に公開された最新バージョン)を使い続ける
  6. セキュリティ研究者が侵害を発見して報告する
  7. 悪意のあるバージョンは公開停止になる
  8. 侵害されたバージョンをインストールすることはない

制限事項

  • 最初から悪意のあるパッケージからは保護できない
  • 正規の新機能やバグ修正へのアクセスが遅れる
  • 古いバージョンに未発見の脆弱性がないことを信頼する必要がある
  • 期間ベースのフィルタリングはヒューリスティックであり、保証ではない

哲学

セキュリティはトレードオフです。safe-npm は、突然のサプライチェーン侵害に対する保護と引き換えに、最先端のアップデートを犠牲にします。これは多層防御戦略の 1 つの層であり、次の要素も組み合わせるべきです。

  • 定期的なセキュリティ監査(npm audit)
  • 新しいパッケージを追加する前の依存関係のレビュー
  • セキュリティ勧告の監視
  • 再現可能なビルドを保証するロックファイルの使用
  • サンドボックス化またはコンテナ化された環境での実行

必要な環境

  • Node.js 18 以上
  • npm(基盤となるインストール用)

ライセンス

ISC

ツールをダウンロード