依
依赖审查
作者:鹿Sir开发工具v1
全面审查项目依赖的安全漏洞、许可证合规与陈旧度。自动识别包管理器并运行原生审计工具(npm audit、pip-audit、cargo audit 等),查询 Dependabot 告警,并从漏洞、许可证、升级复杂度三个维度并行分析,输出健康评分与升级计划。当用户要求「审查依赖」「检查漏洞包」「审计许可证」「规划依赖升级」「评估供应链风险」时触发。触发词:依赖审查、依赖审计、漏洞扫描、许可证合规、依赖升级。
下载量
455
点赞
110
价格
免费
技能文档
---
name: mgiovani-review-deps
title: 依赖审查
description: 全面审查项目依赖的安全漏洞、许可证合规与陈旧度。自动识别包管理器并运行原生审计工具(npm audit、pip-audit、cargo audit 等),查询 Dependabot 告警,并从漏洞、许可证、升级复杂度三个维度并行分析,输出健康评分与升级计划。当用户要求「审查依赖」「检查漏洞包」「审计许可证」「规划依赖升级」「评估供应链风险」时触发。触发词:依赖审查、依赖审计、漏洞扫描、许可证合规、依赖升级。
category: 开发工具
---
# 依赖审查(Dependency Review)
覆盖漏洞扫描、许可证合规与陈旧度分析的全面依赖审计。本技能**只做分析**——识别风险并推荐升级,不修改代码或锁文件。
## 反幻觉准则
**关键**:依赖审查必须基于真实工具输出与已验证数据:
1. **先运行后下结论**——未实际运行审计工具,不得报告漏洞
2. **结论要有证据**——每条发现必须指明具体的包名与版本
3. **不编造 CVE**——只引用审计工具或 Dependabot 返回的 CVE/GHSA 编号
4. **必须有工具输出**——原样摘录审计命令输出作为证据
5. **结果可量化**——从工具输出统计真实问题数,不估算
6. **不制造误报**——每条发现都要对照实际安装版本核实
7. **版本准确**——报告工具输出中的精确安装版本与修复版本
## 技能工作流
### 步骤 1:识别包管理器与技术栈
检查项目中存在的所有包管理器清单文件:
- package.json / package-lock.json / yarn.lock / pnpm-lock.yaml → npm/yarn/pnpm(Node.js)
- pyproject.toml / requirements*.txt / Pipfile / setup.py → pip/uv/poetry(Python)
- Cargo.toml / Cargo.lock → cargo(Rust)
- go.mod / go.sum → go modules(Go)
- composer.json / composer.lock → composer(PHP)
- Gemfile / Gemfile.lock → bundler(Ruby)
- *.csproj / packages.config / Directory.Packages.props → NuGet(.NET)
- pom.xml / build.gradle / build.gradle.kts → Maven/Gradle(Java/Kotlin)
读取每个清单,了解:直接依赖数、开发依赖数、锁文件是否提交、workspace/monorepo 结构。
### 步骤 2:运行原生审计命令
对识别出的每个包管理器执行对应审计命令,相互独立的命令并行执行。
**Node.js(npm/yarn/pnpm):**
```bash
npm audit --json 2>/dev/null || npm audit 2>&1
yarn audit --json 2>/dev/null || yarn audit 2>&1
pnpm audit --json 2>/dev/null || pnpm audit 2>&1
```
**Python(pip/uv):**
```bash
pip-audit --format=json 2>/dev/null || pip-audit 2>&1
uv pip audit 2>&1
```
**Rust:**
```bash
cargo audit 2>&1
```
**Go:**
```bash
go list -m -json all 2>&1
govulncheck ./... 2>&1
```
**PHP:**
```bash
composer audit --format=json 2>/dev/null || composer audit 2>&1
```
**Ruby:**
```bash
bundle audit check 2>&1
```
**.NET:**
```bash
dotnet list package --vulnerable --include-transitive 2>&1
```
**Java(Maven/Gradle):**
```bash
mvn dependency-check:check 2>&1 || echo "未配置 OWASP dependency-check 插件"
```
**GitHub Dependabot(在 git 仓库中总是尝试):**
```bash
gh api repos/{owner}/{repo}/dependabot/alerts --jq '.[] | {package: .security_advisory.summary, severity: .security_advisory.severity, state: .state, package_name: .dependency.package.name, ecosystem: .dependency.package.ecosystem}' 2>&1
```
保留全部原始输出供步骤 3 分析。
### 步骤 3:三路专项并行分析
从漏洞、许可证、升级复杂度三个风险维度并行执行专项分析,把步骤 2 的原始审计输出与清单文件传给每个分析任务。详细提示词见 [references/agent-prompts.md](references/agent-prompts.md)。
**任务分工:**
- **任务 1——漏洞分析**:CVE/GHSA 分诊、严重度评估、可利用性、修复可用性
- **任务 2——许可证合规**:许可证识别、传染性风险、商业兼容性、政策违规
- **任务 3——陈旧度与升级复杂度**:版本漂移、维护健康度、破坏性变更评估、升级路径
每个任务必须:分析原始输出与清单文件;需要时读取锁文件获取传递依赖详情;给出带证据的结构化发现;评定风险等级(严重/高/中/低);给出带精确目标版本的行动建议。
### 步骤 4:风险评估与优先级排序
1. **汇总**三路分析的全部发现
2. **去重**——移除多个分析重复报告的条目
3. **交叉关联**——按包合并漏洞 + 许可证 + 陈旧度数据
4. **按综合风险排序**:
- **严重**:已被利用的 CVE(CISA KEV)、RCE 漏洞、无维护分支的包
- **高**:有公开利用代码的高危 CVE、专有项目中的传染性许可证、落后 3+ 个大版本的包
- **中**:无公开利用的中危 CVE、宽松但少见的许可证、落后 1-2 个大版本
- **低**:低危 CVE、提示性许可证说明、小版本漂移
5. **按行动类型分组**:安全补丁(非破坏性)vs 大版本升级(破坏性)vs 替换(弃用包)
6. **统计**:依赖总数、有漏洞数、许可证风险数、陈旧数,计算健康评分
### 步骤 5:生成依赖审查报告
按 [references/report-template.md](references/report-template.md) 的模板生成完整的 Markdown 报告。
### 步骤 6:核实与质量检查
呈现报告前逐项核实:
1. 每条漏洞发现都有 CVE/GHSA 编号或审计工具引用
2. 每条发现都标注精确安装版本与修复版本
3. 许可证发现引用包清单中的实际 license 字段
4. 陈旧度发现包含当前版本、最新版本与发布日期
5. 统计数字准确(来自真实工具输出,非估算)
6. 各分类间无重复发现
7. 风险评级有证据支撑
8. 升级建议在适用时附带破坏性变更警告
9. 无编造的 CVE、许可证类型或版本号
10. Dependabot 告警与本地审计结果已完成核对
## 使用方式
```bash
# 全量审计(三个维度)
review-deps
review-deps --scope all
# 只看漏洞
review-deps --scope vulnerabilities
# 只看许可证合规
review-deps --scope licenses
# 只看陈旧度与升级规划
review-deps --scope staleness
# 按最低严重度过滤
review-deps --severity critical
review-deps --severity high
# 组合选项
review-deps --scope vulnerabilities --severity critical
```
**范围选项:** `all`(默认,三个维度全跑)| `vulnerabilities` | `licenses` | `staleness`
**严重度过滤:** 指定 `--severity` 时只报告达到该级别及以上的发现:`critical` | `high` | `medium`(默认)| `low`
## 能力边界
**本技能做的事:** 识别项目全部包管理器;运行各生态原生审计工具;可用时查询 Dependabot 告警;结合 CVE 严重度与可利用性分析漏洞;识别商业与开源项目的许可证合规风险;评估依赖陈旧度与升级复杂度;给出带破坏性变更警告的升级优先级计划;生成含健康评分的完整报告。
**本技能不做的事:** 不修改任何代码、锁文件或清单;不自动升级依赖;不安装缺失的审计工具(会报告为不可用);不做运行时/动态漏洞测试;不保证 100% 漏洞检出;不提供许可证合规的法律意见。
**局限:** 仅静态分析,无法发现仅运行时才暴露的漏洞;准确性依赖已安装的审计工具及其数据库;许可证识别依赖包元数据,可能不完整;不支持私有仓库的漏洞检测;部分生态的传递依赖数据有限;新披露的 CVE 可能 24-48 小时后才进入审计数据库。
## 参考资料
- [OWASP Dependency-Check](https://owasp.org/www-project-dependency-check/)
- [GitHub Advisory Database](https://github.com/advisories)
- [CISA Known Exploited Vulnerabilities](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [SPDX License List](https://spdx.org/licenses/)
- [OSI Approved Licenses](https://opensource.org/licenses/)
- [OpenSSF Scorecard](https://securityscorecards.dev/)使用说明
# 依赖审查 对项目依赖做全面审计:安全漏洞、许可证合规、陈旧度三个维度。自动识别包管理器、运行原生审计工具、查询 Dependabot 告警,输出带健康评分(0-100)的审查报告与分优先级升级计划。只分析,不改动任何代码或锁文件。 ## 使用场景 - 上线前评估项目供应链风险 - 接手遗留项目时摸清依赖健康状况 - 制定依赖升级计划 ## 用法示例 ```text 审查这个项目的依赖 review-deps --scope vulnerabilities --severity high 帮我审计依赖许可证有没有合规风险 ``` 支持 npm/yarn/pnpm、pip/uv、cargo、go、composer、bundler、NuGet、Maven/Gradle 等主流生态。 ## 说明 - 报告模板与三路专项分析提示词见 references/ - 未安装的审计工具会被标注为不可用,不会自动安装
支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手