装 npm 包前先查漏洞:用 Claude Code 跑 npm audit + OSV

装 npm 包之前,让 Claude Code 只生成 lockfile、跑 npm audit,再用 OSV 交叉核对,给出安全版本和依赖写法。实测 4 个包查出 30 条漏洞,两边结果一致,换版本后 found 0 vulnerabilities。

4 分钟阅读
装 npm 包前先查漏洞:用 Claude Code 跑 npm audit + OSV

项目里要加几个 npm 包,老版本有没有已知漏洞?这篇讲怎么用 Claude Code 做 npm 包漏洞检查:先只生成 package-lock、不真正安装,跑 npm audit,再用 OSV 漏洞库交叉核对,最后给出该装哪个版本。

我们实测检查了 lodash@4.17.20、axios@0.21.1、minimist@1.2.5、left-pad 四个包:一共查出 30 条漏洞,npm audit 和 OSV 两边结果完全一致;换成它建议的版本后重跑 npm audit,结果是 found 0 vulnerabilities。整个过程 102 秒。不需要任何第三方 Key,Claude Code 接 AICodeWith 就能跑。

npm 包漏洞检查:npm audit 修复前后对比

实测成品:上半部分是原版本的 npm audit 输出(lodash 为 high,minimist 为 critical),最后一行是换成建议版本后的结果:found 0 vulnerabilities。

先配好环境:两步接上 AICodeWith

环境只配一次,之后所有场景通用:

  1. 装 Claude Code:按 Claude Code 官方安装文档 安装,终端输入 claude --version 能看到版本号就行。
  2. 创建 Key 并改全局配置:登录后进控制台「密钥管理」,点「创建密钥」。然后打开全局配置 ~/.claude/settings.json,在 env 里填上 Base URL 和 Key:

创建 API Key →

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的Key"
  }
}
Base URL 末尾不要加 /v1。改完重开终端,运行 claude 能正常对话就说明接通了。各字段的含义和更多报错处理见《Claude Code 如何接入第三方 API》。

第一步:一句话让它查漏洞

在项目目录里运行 claude,把要装的包和版本、检查方式、输出格式一次说清楚。我们实测用的提示词:

text
我准备在项目里装这几个 npm 包:lodash@4.17.20、axios@0.21.1、minimist@1.2.5、left-pad。安装之前先帮我查漏洞:建一个临时项目只生成 package-lock(npm install --package-lock-only,不要真装),跑 npm audit,再用 OSV(https://api.osv.dev)交叉核对每个版本的漏洞。给我一个中文报告 audit-report.md:每个包有哪些 CVE/GHSA、严重级别、修复版本、建议装哪个版本;废弃的包要指出来并给替代方案。最后给出安全的 package.json 依赖写法,并再跑一次 npm audit 证明 0 漏洞。

把包名和版本换成你自己的即可。“只生成 package-lock,不要真装”这一句很重要:不下载包、不执行安装脚本,查漏洞的过程本身不会带来风险。

实测中它还主动加了 --ignore-scripts,用完把临时目录删掉了,你的项目目录不受影响。

第二步:它实际做了什么

  1. 建临时目录,运行 npm install --package-lock-only --ignore-scripts 只生成 lockfile。
  2. 跑 npm audit,拿到每个包的漏洞列表。
  3. 调 OSV 的 POST /v1/query 接口逐个版本核对,再用 GitHub Advisory 接口确认每条 GHSA 对应的 CVE。
  4. 写出中文报告 audit-report.md,给出建议版本和依赖写法,再在新版本上重跑一次 npm audit。

报告的汇总结果:

包漏洞数最高级别建议版本
lodash@4.17.205High^4.18.1
axios@0.21.124High^1.20.0
minimist@1.2.51Critical^1.2.8
left-pad@1.3.00—已废弃,改用 String.prototype.padStart()
npm audit 最后一行的“3 vulnerabilities”是按包计数的(3 个包有漏洞),逐条展开的安全公告加起来是 30 条,和 OSV 的结果一一对得上。

它给出的安全依赖写法:

json
"dependencies": {
  "axios": "^1.20.0",
  "lodash": "^4.18.1",
  "minimist": "^1.2.8"
}

我们按这个写法独立重跑了一次 npm audit,输出是:

text
found 0 vulnerabilities
axios 从 0.x 升到 1.x 是大版本升级,接口有变化,升级后要跑一遍项目的测试再上线。

npm audit fix --force 给的 axios@0.21.4 仍有漏洞

这是这次实测里最值得注意的一个坑。npm audit 对 axios 给出的修复建议是:

text
fix available via `npm audit fix --force`
Will install axios@0.21.4, which is outside the stated dependency range

看起来照做就修好了,但 axios@0.21.4 只修了 24 条里的 1 条,剩下 23 条还在。如果直接跑 npm audit fix --force,你会以为问题解决了,实际上依赖里仍有大量已知漏洞。

所以 npm audit fix --force 的结果不能直接信,建议这样做:

  • 让 Claude Code 用 OSV 再查一遍 npm audit fix 建议的那个版本,确认是否真的 0 漏洞。
  • 以报告里的建议版本为准(这次是 axios ^1.20.0),升级后重跑 npm audit 确认 found 0 vulnerabilities。
  • 同理,lodash 只升到 4.17.21 也不够,近两年又出过新公告,实测要到 4.18 以上才查不出漏洞。

实测遇到的报错:curl: (56) Send failure: Broken pipe

这个报错出在安装 Claude Code 这一步,不是查漏洞本身。我们同时在几台环境里跑官方安装脚本时,其中一次下载中断:

text
curl: (56) Send failure: Broken pipe
Download failed

安装没完成,后面运行 claude 就会报找不到命令。单独重新运行一次安装脚本,10 秒左右就装好了,之后任务正常跑通。遇到这个报错,检查网络后重装即可。

常见错误和自查

现象怎么办
curl: (56) Send failure: Broken pipeClaude Code 安装下载中断,重新运行安装脚本
npm audit fix --force 后仍不放心用 OSV 再查一遍新版本,以重跑 npm audit 的结果为准
401 或请求失败检查 Key 是否完整,Base URL 是否为 https://api.aicodewith.ai(不带 /v1),改完重开终端
包已废弃但没漏洞照样换掉,报告会给出替代方案,比如 left-pad 改用 padStart()

常见问题

npm 包漏洞检查需要真的把包装上吗?

不需要。用 npm install --package-lock-only 只生成 lockfile,npm audit 就能检查,不会下载包,也不会执行安装脚本。

为什么还要查 OSV,npm audit 不够吗?

两个来源交叉核对更稳,也能发现 npm 修复建议本身的问题,比如这次 axios@0.21.4 的坑。实测两边查出的 30 条结果完全一致。

要多久?

实测这一次 4 个包用了 102 秒。包越多、漏洞越多,用时越长。

已经装好的项目能查吗?

能。把提示词改成“检查当前项目的 package.json 和 package-lock.json”,其余要求不变。

能放进 CI 自动跑吗?

可以把 npm audit 和 OSV 查询写成脚本放进 CI;需要 Claude Code 自动修代码、跑测试的做法,可以参考《使用 Codex 自动修复一个真实 Bug,并运行测试验证》。

相关阅读

注册 AICodeWith → 查看价格 →

参考来源

同类场景

想看用 AI 做代码审查的更多用法,可以看AI 代码审查场景页。

相关文章

Claude Code 怎么控制 Unreal Engine?Epic 官方插件安装、MCP 连接与安全设置(UE5 实操)

Claude Code 怎么控制 Unreal Engine?Epic 官方插件安装、MCP 连接与安全设置(UE5 实操)

Epic Games 在 Anthropic 官方插件市场提供了 Claude Code Unreal Engine 插件 unreal-engine-skills-for-claude-code,配合编辑器里的 Unreal MCP,就能让 Claude Code 直接操作 UE5 编辑器。本文讲清编辑器端要开哪两个插件、怎么启动 MCP 服务、Claude Code 端怎么装插件和验证连接,以及 execute_tool_script 等安全设置。我们用 AICodeWith 的 Key 实测:插件 2.5 秒装好,全程不需要登录 Anthropic 账号。