依赖审计工具

dependency-auditor
分类通用
作者Alireza Rezvani
许可MIT
评分4.60/5
使用15.1K

Dependency Auditor (依赖审计员)

> 技能类型: POWERFUL · 类别: Engineering · 领域: 依赖管理与安全

支持 8 种以上包生态系统的离线、确定性依赖审计。这三个脚本是对清单文件/锁文件的模式匹配器 —— 它们不会调用实时咨询 API;请将其结果与 npm audit / pip-audit / cargo audit 结合使用,以获取最新的 CVE 覆盖范围。

快速上手

bash
# 1. 扫描漏洞(内置离线 CVE 模式集;高严重性时以非零状态退出)
python3 scripts/dep_scanner.py /path/to/project --format json --fail-on-high -o scan.json

2. 检查许可证合规性与冲突

python3 scripts/license_checker.py /path/to/project --policy strict --format json -o licenses.json

3. 根据扫描清单规划升级

python3 scripts/upgrade_planner.py scan.json --risk-threshold medium --timeline 90 --format json -o plan.json

处理输出结果:scan.json 的发现决定哪些包需要立即锁定/修复;licenses.json 的冲突将作为法律风险清单提交给用户;plan.json 按风险等级对升级进行排序并附带回滚说明。--quick-scan 跳过传递依赖;--security-only 将计划限制在安全修复范围内。

验证循环: 应用升级后,重新运行步骤 1,在关闭审计前确认高严重性漏洞数量为 0。

支持的生态系统

| 语言 | 解析的清单文件 |
|---|---|
| JavaScript/Node | package.json, package-lock.json, yarn.lock |
| Python | requirements.txt, pyproject.toml, Pipfile.lock, poetry.lock |
| Go | go.mod, go.sum |
| Rust | Cargo.toml, Cargo.lock |
| Ruby | Gemfile, Gemfile.lock |
| Java | pom.xml, gradle.lockfile |
| PHP | composer.json, composer.lock |
| C#/.NET | packages.config, project.assets.json |

许可证分类

  • 宽松型 (Permissive): MIT, Apache 2.0, BSD (2/3-clause), ISC
  • 强 Copyleft: GPL v2/v3, AGPL v3 — 在宽松型项目中标记污染风险
  • 弱 Copyleft: LGPL v2.1/v3, MPL 2.0
  • 专有 / 双重 / 未知 — 未知许可证将提交人工审核

检查器通过依赖链分析许可证继承关系,并输出冲突对及修复建议。

升级风险矩阵

| 风险 | 更新类型 | 处理方式 |
|---|---|---|
| 低 | 补丁 (Patch), 安全修复 | 立即应用 |
| 中 | 包含新功能的次要版本 (Minor) | 纳入计划更新批次 |
| 高 | 主版本 (Major), API 变更 | 专项迁移任务 + 测试 |
| 极高 | 已知的破坏性变更 | 制定迁移计划及回滚流程 |

优先级:安全补丁 > Bug 修复 > 功能更新 > 主版本重写;弃用功能需立即关注。

脚本 (功能定义)

  • scripts/dep_scanner.py — 多格式解析器;内置离线漏洞模式集(约 16 个 CVE 模式 —— 仅作为初步筛选,不能替代实时咨询);支持从锁文件解析传递依赖;支持 JSON + 文本输出。
  • scripts/license_checker.py — 从包元数据检测许可证;包含兼容性矩阵。
支持 20 多种许可证类型;--policy permissive|strict 参数;支持冲突检测及修复建议。
  • scripts/upgrade_planner.py — 基于 SemVer 的破坏性变更预测;按风险排序的迁移计划,包含测试清单和时间预估。

示例测试数据:本文件夹下的 test-project/test-inventory.json;预期结果见 expected_outputs/

CI 集成

bash
# CI 中的安全门禁
python3 scripts/dep_scanner.py . --format json --fail-on-high
python3 scripts/license_checker.py . --policy strict --format json

最佳实践

1. 安全优先:立即处理高危/严重漏洞;许可证合规优先于功能实现。
2. 渐进更新:采取增量升级并进行彻底测试;对高风险版本升级使用特性开关(Feature Flags)。
3. 执行频率:每次提交进行安全扫描;每月进行许可证审计;每季度进行全面审计。
4. 误报处理:通过文档记录并将其加入白名单;许可证含义模糊时请联系维护者。

详细用法请参阅 README.md,漏洞/许可证知识库请见 references/