依赖性审计助手 dependency-audit-assistant

这个技能用于审计项目依赖项的安全性漏洞、过时的包和许可证合规性问题,帮助在发布前识别和修复潜在的安全风险。

DevOps 0 次安装 0 次浏览 更新于 3/3/2026

依赖性审计助手

这个技能有助于审计项目依赖项的安全性漏洞、过时的包和许可证合规性问题。

何时使用这个技能

  • 用户请求依赖性审计或安全检查
  • 在主要发布或部署之前
  • 用户询问过时的包或漏洞
  • 需要许可证合规性审查
  • 用户提到"npm audit"、“安全”、“依赖性"或"漏洞”

指令

1. 检测包管理器

确定项目使用哪些包管理器:

JavaScript/Node.js:

  • npm: package.json + package-lock.json
  • Yarn: package.json + yarn.lock
  • pnpm: package.json + pnpm-lock.yaml

Python:

  • pip: requirements.txtsetup.py
  • Poetry: pyproject.toml + poetry.lock
  • Pipenv: Pipfile + Pipfile.lock

Ruby:

  • Bundler: Gemfile + Gemfile.lock

Java:

  • Maven: pom.xml
  • Gradle: build.gradlebuild.gradle.kts

Go:

  • Go modules: go.mod + go.sum

Rust:

  • Cargo: Cargo.toml + Cargo.lock

PHP:

  • Composer: composer.json + composer.lock

使用Glob查找这些文件。

2. 运行安全审计

根据包管理器执行适当的审计命令:

npm: npm audit --jsonnpm audit Yarn: yarn audit --jsonyarn audit pnpm: pnpm audit --json pip: pip-auditsafety check Poetry: poetry check Bundler: bundle audit check --update Maven: mvn dependency:tree + OWASP Dependency Check Go: go list -m all + govulncheck Cargo: cargo audit Composer: composer audit

解析输出以识别:

  • 按严重性(严重、高、中等、低)的漏洞数量
  • 受影响的包和版本
  • 可用的修复(更新或补丁)
  • CVE标识符

3. 检查过时的包

识别有新版本可用的包:

npm: npm outdated --json Yarn: yarn outdated --json pip: pip list --outdated Poetry: poetry show --outdated Bundler: bundle outdated Cargo: cargo outdated Go: go list -u -m all

分类更新:

  • 补丁更新(1.0.0 → 1.0.1):错误修复,安全更新
  • 次要更新(1.0.0 → 1.1.0):新功能,通常安全
  • 主要更新(1.0.0 → 2.0.0):破坏性更改,需要测试

4. 许可证合规性检查

审查所有依赖项的许可证:

步骤:

  1. 从包元数据中提取许可证
  2. 识别许可证类型(MIT、Apache-2.0、GPL等)
  3. 标记潜在问题许可证(GPL、AGPL在商业项目中)
  4. 检查无许可证或未知许可证
  5. 参考reference/licenses.md中的许可证兼容性矩阵

工具:

  • npm: npx license-checker --jsonnpm-license-crawler
  • Python: pip-licenses
  • Ruby: license_finder
  • Go: go-licenses

许可证类别:

  • 宽容:MIT、Apache-2.0、BSD - 通常安全
  • 弱版权:LGPL、MPL - 需要审查
  • 强版权:GPL、AGPL - 可能限制商业使用
  • 未知:缺失或自定义许可证 - 需要调查

5. 分析依赖树

了解依赖结构:

直接与间接:

  • 直接:列在package.json/requirements.txt中
  • 间接:依赖项的依赖项

识别问题:

  • 不同版本的重复包
  • 深层依赖树(潜在冲突)
  • 被遗弃的包(超过2年无更新)
  • 高风险间接依赖项

命令:

  • npm: npm ls --all
  • Yarn: yarn why <package>
  • pip: pipdeptree
  • Maven: mvn dependency:tree

6. 优先漏洞

根据以下因素确定漏洞的优先级:

严重性级别:

  1. 严重:远程代码执行、权限提升
  2. :SQL注入、XSS、认证绕过
  3. 中等:DoS、信息泄露
  4. :次要问题、边缘情况

可利用性:

  • 已知野外漏洞
  • PoC(概念验证)可用
  • 需要特殊条件

暴露:

  • 生产依赖项与开发依赖项
  • 直接依赖项与深层间接依赖项
  • 应用程序实际使用的代码路径

7. 生成建议

对于发现的每个问题,提供:

漏洞:

包:lodash@4.17.15
严重性:高
CVE:CVE-2020-8203
问题:原型污染
建议:升级到lodash@4.17.21或更高版本
命令:npm install lodash@4.17.21

过时的包:

包:react@16.14.0
当前:16.14.0
最新:18.2.0
类型:主要更新
建议:在升级前彻底测试(破坏性更改)
备注:在https://react.dev/blog/2022/03/08/react-18-upgrade-guide查看迁移指南

许可证问题:

包:some-gpl-library@1.0.0
许可证:GPL-3.0
问题:GPL许可证可能与专有代码冲突
建议:寻找具有宽容许可证的替代品或咨询法律
替代品:[列出具有MIT/Apache许可证的类似包]

8. 更新策略

建议更新方法:

安全更新(自动):

  • 无破坏性更改的补丁更新
  • 安全修复漏洞
  • 更新:npm updatenpm audit fix

谨慎更新(手动测试):

  • 次要版本更新
  • 对维护良好的包进行主要更新
  • 单独更新并测试

需要研究:

  • 主要破坏性更改
  • 被遗弃的包(寻找替代品)
  • 许可证冲突

9. 生成摘要报告

提供全面的审计摘要:

依赖性审计报告
=======================

概览:
- 总依赖项:150(120直接,30间接)
- 漏洞:5(1高,3中等,1低)
- 过时的包:23
- 许可证问题:2

安全漏洞:
[按严重性列出,带有修复建议]

过时的包:
[按更新类型分类:补丁/次要/主要]

许可证合规性:
[带有任何问题的许可证列表]

推荐操作:
1. [立即] 修复高严重性漏洞
2. [尽快] 更新具有中等严重性的包
3. [审查] 解决许可证合规性问题
4. [可选] 更新过时的包到最新

要运行的命令:
npm audit fix  # 自动修复漏洞
npm update     # 更新到最新兼容版本

10. 持续监控

建议持续实践:

  • 自动审计:在CI/CD管道中运行
  • Dependabot/Renovate:自动创建更新的PR
  • 定期审查:每月或每季度审计
  • 安全警报:启用GitHub/GitLab安全警报
  • 锁定文件:提交锁定文件以进行可重现的构建

最佳实践

  1. 及时修复漏洞:特别是高/严重性
  2. 测试更新:即使是补丁更新也可能导致问题
  3. 阅读变更日志:在更新前了解变更内容
  4. 使用锁定文件:确保跨环境的一致安装
  5. 最小化依赖项:更少的依赖项 = 更小的攻击面
  6. 审查新添加:在添加新依赖项前进行审计
  7. 保持最新:定期更新比大跳跃更容易
  8. 记录决策:为什么某些包被固定或不更新

安全最佳实践

  • 永远不要在依赖项或环境文件中提交秘密
  • 审查流行/关键包的依赖源代码
  • 使用私有注册表用于内部包
  • 在包注册表帐户上启用2FA
  • 使用SRI(子资源完整性)用于CDN资源
  • 如果使用Docker,则扫描容器映像

支持文件

  • scripts/check-licenses.sh:提取和检查许可证信息
  • reference/licenses.md:许可证兼容性矩阵
  • reference/common-vulnerabilities.md:常见漏洞模式

常见命令参考

npm:

npm audit                 # 显示漏洞
npm audit fix            # 自动修复漏洞
npm audit fix --force    # 强制主要更新
npm outdated            # 检查过时的包
npm update              # 更新到最新兼容

Yarn:

yarn audit               # 显示漏洞
yarn upgrade-interactive # 交互式更新
yarn outdated           # 检查过时

pip:

pip-audit               # 审计漏洞
pip list --outdated     # 检查过时
pip install --upgrade   # 更新包

Poetry:

poetry check            # 检查锁定文件
poetry show --outdated  # 显示过时
poetry update           # 更新包

Cargo:

cargo audit             # 审计漏洞
cargo outdated          # 检查过时
cargo update            # 更新包