跳至主要內容
精選 Security npm pnpm Dependabot Tutorial Chinese

用 Claude Code 批量修復安全漏洞:從 20 個警告到 0 的實戰紀錄

實戰案例:如何用 Claude Code 在 20 分鐘內修復 20 個 GitHub Dependabot 安全警告,涵蓋 npm audit、pnpm overrides、transitive dependencies 處理技巧。

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

每個開發者都遇過這個場景:GitHub Dependabot 跳出一堆紅色警告,但你不確定該怎麼處理。本文記錄我如何用 Claude Code 在 20 分鐘內清掉 20 個安全漏洞。


問題背景

我的專案有 3 個子專案,GitHub Dependabot 顯示:

專案漏洞數嚴重程度
mcp-director-mode-server81 high, 7 moderate
claude-world-mcp-app11 high
07-product-app104 high, 6 moderate
總計206 high, 14 moderate

主要問題:

  • @modelcontextprotocol/sdk - Cross-client data leak(HIGH)
  • wrangler - OS Command Injection(HIGH)
  • hono - XSS, Cache Deception, IP Spoofing(MODERATE)
  • esbuild, lodash, undici - 各種中等漏洞

用 Claude Code 修復

第一步:讓 Claude 分析現況

我:修復所有子專案的安全漏洞,先分析現況

Claude 自動執行:

  1. 讀取所有 package.json
  2. 識別漏洞來源(直接依賴 vs transitive)
  3. 判斷修復策略

第二步:直接依賴更新

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

第三步:處理 Transitive Dependencies

這是最關鍵的部分。有些漏洞來自間接依賴,例如:

@astrojs/cloudflare → wrangler@4.50.0 → miniflare → undici@7.14.0 (有漏洞)

你無法直接更新 undici,因為它是 @astrojs/cloudflare 的依賴的依賴。

解法: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  # 驗證

完整對話紀錄

以下是實際的 Claude Code 對話:

開始修復

我:修復所有子專案的 GitHub Dependabot 安全漏洞

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 packages...

並行執行修復

Claude 同時執行三個更新:

# 同時執行(parallel)
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 還有 4 個漏洞來自 transitive dependencies。
我會在 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  # 強制更新(可能有 breaking changes)

建議:先試 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  # 只更新特定 package

4. 驗證修復

# 本地驗證
npm audit / pnpm audit

# GitHub Dependabot 會在 push 後 5-10 分鐘重新掃描
git push
# 等待,然後檢查 GitHub Security tab

為什麼用 Claude Code?

傳統手動修復:

1. 看 Dependabot 警告
2. 查每個漏洞的 advisory
3. 找出哪些是直接依賴、哪些是間接
4. 決定更新策略
5. 手動執行 npm/pnpm 指令
6. 處理 breaking changes
7. 跑測試確認沒壞

用 Claude Code:

1. 描述問題:「修復所有安全漏洞」
2. Claude 自動分析 + 執行 + 驗證
3. 審查 Claude 的修改
4. Commit

省下的時間:從「研究 + 執行」1-2 小時 → 20 分鐘對話


總結

項目結果
漏洞數20 → 0
花費時間~20 分鐘
專案數3(npm + pnpm monorepo)
關鍵技巧pnpm overrides 處理 transitive deps

核心觀點:安全漏洞修復是 Claude Code 的最佳應用場景之一——

  • 任務明確(audit 報告就是 spec)
  • 驗證簡單(audit 通過就是成功)
  • 需要跨多檔案操作

下次看到 Dependabot 警告,直接丟給 Claude Code 處理吧。


相關資源