Agent Skills
返回列表
🔒

NPM包供应链审计器

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,将 @user_3c6cb52e/npm-package-supply-chain-auditor 安装到 AI 助手中。

技能介绍

依赖安装时的供应链风险

在 npm install 执行时,项目会拉取大量传递依赖,这些包可能来自公共仓库、私有源或被劫持的镜像。供应链风险通常隐藏在三个层面:

  • Typosquatting:攻击者注册与热门包高度相似的名称(如 cross-env → crossenv),诱导开发者误装。
  • 安装脚本滥用:恶意包在 install 钩子中嵌入远程脚本,可窃取环境变量、写入后门或横向移动。
  • 维护者账户接管:原维护者邮箱失效或密码泄露后,包被转给攻击者,历史版本可能被替换为恶意代码。

这类问题在 CI/CD 流水线中尤为危险,因为依赖锁定文件(package-lock.json)只能保证版本不变,无法证明包内容未被篡改。

审计能力与工作流程

该技能整合 npm audit、Socket.dev API 与 Snyk 漏洞数据库,构建三层检测逻辑:

  1. 依赖树解析:递归解析 node_modules 与 lockfile,提取包名、版本、作者、安装脚本等元数据。
  2. 风险信号采集:

- 调用 npm audit --json 获取官方漏洞库匹配结果。
- 通过 Socket.dev API 查询包的行为指纹(如是否包含网络请求、文件写入)。
- 使用 Snyk CLI 扫描已知漏洞与许可证冲突。

  1. 跨库交叉验证:将三方数据源的结果合并,标记高危项(如“包名相似度 > 0.8 且存在恶意行为记录”)。

输出报告包含风险等级、证据链(如原始 API 响应)、修复建议(如替换包名、锁定版本、启用 --ignore-scripts)。

适用边界与注意点

  • 缓存与时效性:npm audit 依赖本地缓存,可能遗漏最新披露的漏洞;Socket.dev 与 Snyk 数据需实时联网获取。
  • 私有包处理:私有 registry 中的包可能无法被公共 API 扫描,需额外配置认证或离线规则。
  • Snyk 认证:使用 Snyk CLI 前需完成账户认证,否则无法访问企业级漏洞库。
  • 误报处理:typosquatting 检测依赖名称相似度算法,可能误判合法包(如 react-dom 与 react-dom-native),需人工复核。

建议在 CI 流程中定期运行审计,并将报告作为门禁条件;对于高危项,应结合代码审查确认修复方案。

使用场景

  • 在 CI 流水线中,需要自动检查 `package-lock.json` 中是否存在 typosquatting 或恶意安装脚本,作为合并门禁条件。
  • 发布开源库前,需要对依赖树进行跨库漏洞扫描,确认不存在已知 CVE 或维护者账户异常。
  • 收到安全通告后,需要快速定位项目中受 snyk 标记的高危依赖,并生成可复现的风险证据链。
  • 本地开发时,需要忽略脚本安装以阻断潜在恶意包执行,同时保留完整的审计日志用于事后回溯。

适合人员

  • 需要维护企业级 Node.js 项目的开发负责人,希望在每次提交时自动拦截供应链攻击。
  • 负责开源库发布的维护者,需要在发布前验证依赖树无已知漏洞和可疑维护者记录。
  • DevSecOps 工程师,需要将多源漏洞数据整合进 CI 流水线,并生成可追溯的审计报告。
  • 安全审计人员,需要在事件发生后快速回溯依赖安装日志,定位恶意脚本执行痕迹。