精選
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-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- Cross-client data leak(HIGH)wrangler- OS Command Injection(HIGH)hono- XSS, Cache Deception, IP Spoofing(MODERATE)esbuild,lodash,undici- 各種中等漏洞
用 Claude Code 修復
第一步:讓 Claude 分析現況
我:修復所有子專案的安全漏洞,先分析現況
Claude 自動執行:
- 讀取所有
package.json - 識別漏洞來源(直接依賴 vs transitive)
- 判斷修復策略
第二步:直接依賴更新
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
| 特性 | 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 # 只更新特定 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 處理吧。