メインコンテンツへスキップ
注目 Security npm pnpm Dependabot Tutorial Japanese

Claude Code で 20 件のセキュリティ脆弱性を一括修正:実践レポート

GitHub Dependabot のアラートを Claude Code で効率的に修正する方法。npm audit、pnpm overrides、transitive dependencies の対処法を実例で解説。

2026年2月5日 8 min read 著者:Claude World

開発者なら誰もが経験したことがあるでしょう:GitHub Dependabot が大量の赤いセキュリティ警告を表示し、どこから手をつければいいかわからない状況。本記事では、Claude Code を使って約 20 分で 20 件のセキュリティ脆弱性を解消した記録をお伝えします。


問題の背景

私のプロジェクトには 3 つのサブプロジェクトがあり、セキュリティ問題を抱えていました:

プロジェクト脆弱性数重大度
mcp-director-mode-server81 high, 7 moderate
claude-world-mcp-app11 high
07-product-app104 high, 6 moderate
合計206 high, 14 moderate

主な脆弱性:

  • @modelcontextprotocol/sdk - クロスクライアントデータ漏洩(HIGH)
  • wrangler - OS コマンドインジェクション(HIGH)
  • hono - XSS、キャッシュ詐称、IP スプーフィング(MODERATE)
  • esbuildlodashundici - 各種中程度の脆弱性

Claude Code での修正

ステップ 1:Claude に分析させる

私:すべてのサブプロジェクトのセキュリティ脆弱性を修正して

Claude:まず package.json ファイルを確認します...
[mcp-director-mode-server/package.json を読み込み]
[claude-world-mcp-app/package.json を読み込み]
[07-product-app/package.json を読み込み]

07-product-app は monorepo です。workspace パッケージを確認します...

ステップ 2:直接依存関係の更新

npm プロジェクト

# mcp-director-mode-server
npm install @modelcontextprotocol/sdk@^1.26.0 --save
npm audit fix --force  # vitest 2.x → 4.x

# claude-world-mcp-app
npm install @modelcontextprotocol/sdk@^1.26.0 --save

pnpm monorepo

# 07-product-app
pnpm update hono@latest -r
pnpm update wrangler@latest -r

ステップ 3:Transitive Dependencies の対処

ここが最も重要なポイントです。一部の脆弱性は間接依存関係から発生しています:

@astrojs/cloudflare → wrangler@4.50.0 → miniflare → undici@7.14.0(脆弱性あり)

undici は依存関係の依存関係なので、直接更新できません。

解決策:pnpm overrides

package.json に追加:

{
  "pnpm": {
    "overrides": {
      "wrangler@>=4.0.0 <4.59.1": ">=4.59.1",
      "undici@>=7.0.0 <7.18.2": ">=7.18.2",
      "esbuild@<=0.24.2": ">=0.25.0",
      "lodash@>=4.0.0 <=4.17.22": ">=4.17.23"
    }
  }
}

その後、再インストール:

pnpm install
pnpm audit  # 検証

実際の会話記録

修正開始

私:GitHub Dependabot のすべてのセキュリティ脆弱性を修正して

Claude:3 つのプロジェクトの package.json を確認します...
[mcp-director-mode-server/package.json を読み込み]
[claude-world-mcp-app/package.json を読み込み]
[07-product-app/package.json を読み込み]

07-product-app が monorepo であることを確認。workspace パッケージをチェック...

並列実行

Claude は 3 つの更新を同時に実行:

# 並列実行
cd mcp-director-mode-server && npm install @modelcontextprotocol/sdk@^1.26.0
cd claude-world-mcp-app && npm install @modelcontextprotocol/sdk@^1.26.0
cd 07-product-app && pnpm update hono@latest wrangler@latest -r

残りの脆弱性への対処

Claude:07-product-app にはまだ transitive dependencies からの 4 件の脆弱性があります。
package.json に pnpm overrides を追加します...

[07-product-app/package.json を編集]
[pnpm install を実行]
[pnpm audit を実行]

結果:No known vulnerabilities found

最終検証

Claude:すべてのプロジェクトを検証:

✅ mcp-director-mode-server: 0 vulnerabilities
✅ claude-world-mcp-app: 0 vulnerabilities
✅ 07-product-app: 0 vulnerabilities

合計:20 件の脆弱性をすべて修正完了

学んだテクニック

1. npm audit fix の使い分け

npm audit fix          # 安全な更新(semver を尊重)
npm audit fix --force  # 強制更新(破壊的変更の可能性あり)

アドバイス:まず npm audit fix を試し、必要な場合のみ --force を使用。使用後はテストを実行。

2. pnpm overrides vs npm overrides

機能pnpmnpm
構文pnpm.overridesoverrides
条件式"pkg@>=1.0 <2.0": ">=2.0"非対応
適用タイミングpnpm installnpm install

pnpm の条件式構文はより強力で、「脆弱性のあるバージョン範囲のみを上書き」と精密に指定できます。

3. Monorepo での作業

pnpm update <pkg>@latest -r  # -r = recursive、すべての workspace を更新
pnpm update <pkg> --filter @scope/pkg  # 特定のパッケージのみ更新

4. 修正の検証

# ローカル検証
npm audit / pnpm audit

# GitHub Dependabot は push 後 5-10 分で再スキャン
git push
# 待ってから GitHub Security タブを確認

なぜ Claude Code を使うのか?

従来の手動修正:

1. Dependabot アラートを確認
2. 各脆弱性のアドバイザリを調査
3. 直接依存か間接依存かを判断
4. 更新戦略を決定
5. npm/pnpm コマンドを手動実行
6. 破壊的変更に対処
7. テストを実行して問題がないか確認

Claude Code を使用:

1. 問題を説明:「すべてのセキュリティ脆弱性を修正して」
2. Claude が自動で分析 + 実行 + 検証
3. Claude の変更をレビュー
4. コミット

時間短縮:調査 + 実行で 1-2 時間 → 20 分の会話


まとめ

項目結果
脆弱性数20 → 0
所要時間約 20 分
プロジェクト数3(npm + pnpm monorepo)
キーテクニックpnpm overrides で transitive deps を対処

重要なポイント:セキュリティ脆弱性の修正は Claude Code の最適なユースケースの一つです—

  • タスクが明確(audit レポートが仕様書)
  • 検証が簡単(audit パスが成功)
  • 複数ファイルの操作が必要

次回 Dependabot アラートを見たら、Claude Code に任せましょう。


参考リソース