NPM 包漏洞扫描器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/npm-package-vulnerability-scanner。
技能介绍
npm 依赖中的安全盲区
当项目依赖的 npm 包被报告存在已知漏洞时,团队往往面临两个问题:一是漏洞信息分散在多个来源,npm audit 的输出与 GitHub Advisory Database(GHSA)中的严重等级口径不一致;二是手动排查 package-lock.json 或 yarn.lock 中的传递依赖极其耗时,容易遗漏被多层嵌套引入的高危包。
扫描机制与数据链路
该技能通过两条数据源交叉验证漏洞信息:
- npm audit JSON API:直接读取当前项目的锁文件,返回
CVE编号、受影响版本范围以及可达路径; - OSV.dev REST API(
api.osv.dev/v1/query):提供跨生态系统的漏洞数据,弥补 npm 原生数据库覆盖不全的问题; - 将两份结果与 GitHub Advisory Database 对齐,统一 severity 评分(如
CRITICAL、HIGH),避免因数据源差异导致的误报或漏报。
典型工作流为:解析锁文件 → 提取依赖树 → 并行查询两个 API → 按 GHSA 严重等级排序输出 → 生成可操作的修复建议。
适用边界与注意点
- 该扫描器仅覆盖 已公开且被收录 的漏洞,无法检测 0-day 或未上报的安全问题;
- 依赖
api.osv.dev与 GitHub Advisory Database 的网络可达性,内网环境需配置代理或镜像; - 对于 monorepo 或多锁文件项目,需分别对每个
package-lock.json运行扫描,结果不会自动聚合; - 建议将扫描结果接入 CI/CD 流水线,作为
npm ci之后的门禁步骤,而不是依赖定期的人工检查。
使用场景
- 提交代码前,需要快速确认 `package-lock.json` 中是否有被标记为 `CRITICAL` 的已知漏洞,以决定是否允许合入主干。
- CI 流水线中,在 `npm ci` 之后自动运行扫描,对新增的高危依赖阻断发布,避免带漏洞版本进入生产环境。
- 项目依赖树很深,想定位某个高危包是通过哪条传递路径被引入的,并评估修复成本。
- 团队同时参考 npm audit 和 OSV.dev 的报告,需要统一严重等级口径,避免同一条漏洞在不同工具中评分不一致。
适合人员
- Node.js 后端工程师:在代码评审阶段需要快速判断依赖升级是否引入了新的高危漏洞,决定是否放行本次提交。
- DevOps 工程师:负责把漏洞扫描接入 CI/CD 流水线,希望在构建阶段就拦截不安全依赖,而不是等上线后补救。
- 开源项目维护者:需要定期排查传递依赖中的已知漏洞,在不破坏兼容性的前提下决定升级或替换方案。