注目
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-server | 8 | 1 high, 7 moderate |
| claude-world-mcp-app | 1 | 1 high |
| 07-product-app | 10 | 4 high, 6 moderate |
| 合計 | 20 | 6 high, 14 moderate |
主な脆弱性:
@modelcontextprotocol/sdk- クロスクライアントデータ漏洩(HIGH)wrangler- OS コマンドインジェクション(HIGH)hono- XSS、キャッシュ詐称、IP スプーフィング(MODERATE)esbuild、lodash、undici- 各種中程度の脆弱性
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
| 機能 | pnpm | npm |
|---|---|---|
| 構文 | pnpm.overrides | overrides |
| 条件式 | "pkg@>=1.0 <2.0": ">=2.0" | 非対応 |
| 適用タイミング | pnpm install | npm 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 に任せましょう。