NPM 包审计器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/npm-package-auditor-registry-api。
技能介绍
解决什么问题
当你的项目依赖几十个甚至几百个 NPM 包时,回答「这些包里有没有已知漏洞」并不是一件容易的事。漏洞信息散落在 GitHub Advisory、npm advisory 数据库和各类 CVE 公告中,靠人工逐一比对既慢又容易遗漏。另一个容易被忽视的风险是许可证:某个传递依赖(transitive dependency)可能采用与项目许可证冲突的协议,直到合规审查或发布前才被发现。
这个技能把两件事自动化:漏洞扫描与许可证合规检查。
核心能力与工作方式
它直接调用 NPM Registry API 解析包的依赖树,而不是只扫描顶层 package.json 中声明的几个依赖。这意味着传递依赖也会进入审计范围。拿到完整依赖清单后,漏洞数据来自 OSV.dev API——OSV 聚合了多个来源的安全公告,可以按包名和版本号进行查询。
具体流程大致是:
- 解析目标包及其完整依赖树,得到
name@version形式的依赖清单 - 将每个依赖提交给 OSV.dev 查询已知漏洞
- 对命中项输出漏洞详情,包括影响的版本范围和修复建议
- 生成 CycloneDX 格式的 SBOM(软件物料清单),方便接入后续的供应链安全流程
- 使用 SPDX 表达式解析器检查每个依赖的许可证,与 SPDX 许可列表比对,标记出许可证冲突或不被允许的组件
适用边界与注意点
这个工具适合作为 CI 或发布前的一个检查环节,而不是替代完整的供应链安全实践。有几点需要留意:
- 它扫描的是已发布到 Registry 的版本,锁文件与实际安装产物是否一致,取决于解析时依赖树的准确性
- OSV 数据覆盖公开披露的漏洞,未公开或 0-day 问题不在其范围内
- 许可证检查基于 SPDX 表达式匹配,遇到自定义许可证或未列入 SPDX 列表的协议时,需要人工确认
- 如果项目中包含 scoped 私有包或私有 registry 模块,需要确保运行环境已配置好对应的 registry 认证信息
- 使用前需要本地有可用的 Node.js 与 npm 环境
使用场景
- CI流水线提交代码时,扫描当前NPM依赖树的已知漏洞
- 发布npm包前,检查所有依赖的许可证是否与项目兼容
- 团队需要生成CycloneDX格式的软件物料清单用于安全审计
- 收到漏洞报告后,排查传递依赖是否存在受影响的版本
适合人员
- Node.js项目开发者,想在CI流程里自动扫描依赖漏洞
- 开源库维护者,需要检查每个版本依赖的许可证合规性
- DevOps工程师,负责为安全团队生成标准化的SBOM文档
- 全栈开发者,想在升级依赖前排查传递依赖的安全风险