npm 依赖审计扫描器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/npm-dependency-audit-scanner。
技能介绍
要解决的问题
Node.js 项目的漏洞往往不是自己写的代码引入的,而是 node_modules 里成百上千个传递依赖带来的。项目跑了两年之后,package-lock.json 里锁定了某个带已知 CVE 的旧包,而团队既没有跑过 npm audit,也没有人清楚这些依赖到底暴露了什么。当安全团队或合规流程要求提供软件物料清单(SBOM)时,手工整理一份准确的依赖清单几乎不可能。
这个技能把「依赖漏洞扫描」和「SBOM 产出」收敛到一条命令行流程里,不需要额外安装扫描器,也不用去多个网站之间来回核对。
核心能力与工作流程
npm audit初筛:对项目执行 npm 官方审计,拿到漏洞报告,包括严重级别、受影响版本范围和修复建议。- OSV.dev 交叉查询:通过 OSV.dev 的 REST API 补充漏洞元数据。OSV 聚合了多个来源的安全公告,覆盖面比单一数据源更广。
- NVD 数据库比对:调用 National Vulnerability Database API v2.0 对 CVE 记录进行交叉核对,补充 CVE 编号、CVSS 评分等标准化字段。
- 生成 CycloneDX SBOM:按 CycloneDX 规范输出物料清单,可直接交给下游安全工具或合规系统消费。
典型工作流是:在项目根目录触发扫描 → 技能自动调用 npm audit → 对命中的依赖逐一查询 OSV.dev → 有 CVE 的条目再向 NVD API v2.0 请求详情 → 汇总生成 CycloneDX 格式文档。整个过程不需要人工翻查漏洞公告。
适用边界与注意点
- 锁文件是前提:
npm audit依赖package-lock.json或npm-shrinkwrap.json。没有锁文件的项目,审计结果会不完整,SBOM 里的组件版本也只能是近似值。 - npm 环境要求:需要 Node.js 与 npm 环境可用。上游文档建议使用最新稳定版 Node,私有仓库的访问权限也需要提前配置好。
- 数据源时效:OSV.db 和 NVD 的数据都有更新延迟。刚被披露的新漏洞可能在 NVD 中尚未有记录,交叉比对的意义就在于此——两个源都不命中不代表绝对安全。
- 漏洞 ≠ 可利用:扫描结果给出的是版本区间和严重级别,不判断你的代码是否真的调用到了有风险的路径。修复优先级要结合实际调用链来判断。
- 产物是文档不是补丁:技能输出的是审计结果与 CycloneDX 文档,升级依赖和验证修复仍需要人工走完
npm update与回归测试。
参考上游说明:https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities/
使用场景
- Node.js 项目例行维护时,需要排查 package-lock.json 锁定的依赖里是否存在已知 CVE 漏洞并拿到修复建议
- 安全合规流程要求为项目输出 CycloneDX 格式的 SBOM 文档,手工整理依赖清单成本太高
- 项目上线前做安全自查,需要对 node_modules 里的传递依赖做一次完整的漏洞扫描
- 接手一个长期未更新的 Node.js 项目,需要快速摸清当前依赖树中暴露了哪些已知安全风险
适合人员
- Node.js 后端工程师——需要在项目交付或上线前对依赖做安全审查,确认不存在已知漏洞
- 安全工程师 / DevSecOps——需要定期为多个 Node.js 项目生成 CycloneDX SBOM 以满足合规审计要求
- 技术负责人 / 架构师——需要在项目迭代中评估依赖健康度,制定依赖升级与漏洞修复的优先级计划
- 开源项目维护者——需要确保项目依赖不包含已知漏洞,并回应社区提出的安全关注