SuperAPI AI 工具集

dependency-supply-chain-security

安全与审计

查看项目

更新于 10-15 15:40

技能介绍

依赖与供应链安全技能围绕应用依赖中潜藏的漏洞与恶意代码风险,提供一套审计、更新、防护与监控的实践流程。

【用途】 应用通常包含数百个 npm 包,每个包都是以完整权限运行的第三方代码。该技能用于在依赖层面预防漏洞包与恶意包,覆盖依赖审计、包更新、供应链攻击防护等场景。

【主要能力】

  • 安全审计:使用 npm audit 检查漏洞,npm audit --production 仅检查生产依赖。
  • 漏洞修复:npm audit fix 执行安全的补丁/次要版本更新;npm audit fix --force 执行有破坏性风险的主要版本更新。
  • 过期检查与更新:npm outdated 查看过期包,npm update 或 npm update package-name 更新。
  • 可复现构建:提交 package-lock.json 锁定精确版本,检测篡改。
  • 完整性校验:npm 依据 package-lock.json 中的校验和自动验证包完整性。
  • 干净安装:在 CI/CD 中使用 npm ci,按 lock 文件精确安装,并在 package.json 与 package-lock.json 不同步时失败。
  • 供应链攻击防护:审计新包、识别名称拼写仿冒(typosquatting)、避免危险包、防范依赖混淆(dependency confusion)。
  • 增强与持续监控:集成 Snyk 扫描(snyk test、snyk monitor),启用 GitHub Dependabot 告警与安全更新,在 CI/CD 中加入 npm audit。

【使用方式】 技能提供脚本 scripts/security-check.sh,运行 bash scripts/security-check.sh 会执行 npm audit(显示漏洞)、npm outdated(显示过期包)并给出修复命令。

审计与修复命令示例:

检查漏洞

npm audit

仅检查生产依赖

npm audit --production

安全修复

npm audit fix

有破坏性风险的修复

npm audit fix --force

查看过期包

npm outdated

更新

npm update npm update package-name

CI/CD 干净安装

npm ci

Snyk 测试

npx snyk test

建议流程:每月进行一次约 30 分钟的例行更新(npm outdated → 查看变更日志 → npm update → npm audit → npm audit fix → npm test 与 npm run build → 提交 package.json 和 package-lock.json);每次生产部署前运行 npm audit --production,必须为 0 漏洞;重大框架更新(如 Next.js 15.x → 16.x)时阅读升级指南、新建分支、更新并遵循迁移指南、运行完整测试、本地验证、先部署到预发环境。

防范供应链攻击的做法包括:始终提交 package-lock.json,不要加入 .gitignore;安装新包前检查 npm 页面(周下载量、最后更新日期、依赖数量、GitHub star/issue)、检查拼写仿冒、检查维护者、安装后运行 npm audit;CI/CD 中使用 npm ci;避免下载量极低、刚发布、名称可疑、无可见源码的包;内部包使用作用域包名并在 .npmrc 中配置内部 registry,例如 @mycompany:registry=https://npm.mycompany.com。

CI/CD 集成示例(.github/workflows/security.yml):在 push、pull_request 与每日定时触发,步骤包含 actions/checkout@v4、actions/setup-node@v4(node-version '18')、npm ci、npm audit --production、npm outdated || true、npx snyk test --severity-threshold=high(需 SNYK_TOKEN)。也可使用 npm audit --production --audit-level=moderate 在发现中等及以上漏洞时使构建失败。

Snyk 安装:npm install -g snyk,随后 snyk auth,再 snyk test、snyk monitor,或在安装前用 snyk test package-name 测试特定包。Dependabot 可在仓库 Settings → Security & analysis 中启用告警与安全更新。

【适用场景】

  • 部署前安全检查与依赖审计。
  • CI/CD 中自动阻断含漏洞的构建。
  • 月度依赖更新例行维护、季度重大框架升级。
  • 引入新包前的风险评估。
  • 防止依赖混淆、拼写仿冒、包篡改等供应链攻击。

【限制与注意事项】 npm audit fix --force 可能引入破坏性变更,运行后需检查 git diff、阅读迁移指南、运行测试并手动验证后再提交。不要在未测试的情况下使用 --force,不要忽略 npm audit 警告,不要使用已弃用包,不要在依赖更新后跳过测试,不要将 package-lock.json 加入 .gitignore,不要未检查就安装包。技能中引用的统计数据、漏洞编号与具体版本信息以其原始资料为准,未在此展开的内容(如具体收费、支持平台范围等)暂未提供。