依赖审计工具
Dependency Auditor (依赖审计员)
> 技能类型: POWERFUL · 类别: Engineering · 领域: 依赖管理与安全
支持 8 种以上包生态系统的离线、确定性依赖审计。这三个脚本是对清单文件/锁文件的模式匹配器 —— 它们不会调用实时咨询 API;请将其结果与 npm audit / pip-audit / cargo audit 结合使用,以获取最新的 CVE 覆盖范围。
快速上手
# 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— 从包元数据检测许可证;包含兼容性矩阵。
--policy permissive|strict 参数;支持冲突检测及修复建议。
scripts/upgrade_planner.py— 基于 SemVer 的破坏性变更预测;按风险排序的迁移计划,包含测试清单和时间预估。
示例测试数据:本文件夹下的 test-project/ 和 test-inventory.json;预期结果见 expected_outputs/。
CI 集成
# 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/。