针对 Node.js、Python、Rust、Go 和 Ruby 项目的依赖审计与升级规划工具。扫描过时包、漏洞 CVE 及破坏性变更,...
依赖性审计和更新计划是一项面向实际任务的技能,主要用于扫描所有项目,以了解Node.js、Python、Rust、Go和Ruby的过时和脆弱的依赖性,然后制定优先可操作的升级计划。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
扫描任意项目中 Node.js、Python、Rust、Go 和 Ruby 的过时及存在漏洞的依赖项,随后生成一份优先级明确、可直接执行的升级计划,包含精确命令和破坏性变更警告。
无需 API 密钥,不依赖任何外部服务。完全基于本地项目文件和标准 CLI 工具运行。
扫描当前目录下的锁文件(lockfiles)和清单文件(manifests),以识别所有存在的项目类型:
# 一次性检测全部项目类型 ls package.json package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null && echo "NODE" ls requirements.txt pyproject.toml setup.py Pipfile 2>/dev/null && echo "PYTHON" ls Cargo.toml Cargo.lock 2>/dev/null && echo "RUST" ls go.mod go.sum 2>/dev/null && echo "GO" ls Gemfile Gemfile.lock 2>/dev/null && echo "RUBY"
一个项目可能包含多种类型(例如:Python 后端 + Node 前端)。对所有已识别的类型均执行审计。
针对每种已识别的项目类型,运行对应命令;在可行情况下并行执行。
# 安全漏洞检测(内置) npm audit --json 2>/dev/null || yarn audit --json 2>/dev/null # 过时包检测 npm outdated --json 2>/dev/null || yarn outdated --json 2>/dev/null # 若使用 pnpm pnpm audit --json 2>/dev/null pnpm outdated 2>/dev/null
# 检查过时包(pip) pip list --outdated --format=json 2>/dev/null # 安全审计(优先使用 pip-audit;若不可用,则回退至 safety) pip-audit --format=json 2>/dev/null || python3 -m pip_audit --format=json 2>/dev/null || safety check --json 2>/dev/null || echo "Install pip-audit: pip install pip-audit" # 检查 pyproject.toml / requirements.txt 是否存在 cat requirements.txt 2>/dev/null | head -50 cat pyproject.toml 2>/dev/null | head -30
# 安全审计 cargo audit 2>/dev/null || echo "Install: cargo install cargo-audit" # 过时依赖检测 cargo outdated 2>/dev/null || echo "Install: cargo install cargo-outdated"
# 漏洞检查
govulncheck ./... 2>/dev/null || echo "Install: go install golang.org/x/vuln/cmd/govulncheck@latest"
# 列出全部依赖及其版本
go list -m -json all 2>/dev/null | python3 -c "
import sys, json
for line in sys.stdin:
try:
m = json.loads(line)
if m.get('Update'):
print(f"{m['Path']}: {m['Version']} → {m['Update']['Version']}")
except: pass
"
# 安全审计 bundle audit check --update 2>/dev/null || echo "Install: gem install bundler-audit" # 过时 gem 检测 bundle outdated 2>/dev/null
收集全部审计输出后,对每一项发现进行归类:
| 等级 | 判定依据 | 操作建议 |
|---|---|---|
| 🔴 CRITICAL | CVE CVSS ≥ 9.0,或存在远程代码执行(RCE)/认证绕过漏洞 | 必须在任何部署前立即修复 |
| 🟠 HIGH | CVE CVSS 7.0–8.9,或存在敏感数据泄露风险 | 须在本迭代周期(sprint)内修复 |
| 🟡 MEDIUM | CVE CVSS 4.0–6.9,或主版本严重过时 | 纳入下一次迭代周期计划 |
| 🟢 LOW | 仅次版本或修订版本过时,且无已知 CVE | 按季度批量更新 |
| ⚪ INFO | 仅用于开发环境的依赖项,虽过时但无 CVE | 可选处理 |
对每个被标记为过时的包,检查其升级是否跨越主版本号边界:
1.x → 2.x = BREAKING(需查阅 CHANGELOG)1.2 → 1.9 = 通常安全0.x → 1.x = BREAKING(1.0 之前版本 API 不稳定)若某包当前版本与最新版本的主版本号不同,则将其标记为潜在破坏性变更。
输出结构化报告,含可直接复制粘贴执行的命令:
## 依赖项审计报告 项目:[已识别类型] | 目录:[路径] | 日期:[今日] ### 概览 | 严重性 | 数量 | |----------|-------| | 🔴 Critical | N | | 🟠 High | N | | 🟡 Medium | N | | 🟢 Low | N | | 总计过时包数 | N | --- ### 🔴 CRITICAL — 立即修复 **[package-name]** `1.2.3` → `1.2.9` - CVE:CVE-2026-XXXX(CVSS 9.8)—— 通过 [描述] 触发远程代码执行 - 修复命令:`npm install package-name@1.2.9` - 破坏性变更:无(仅为补丁版本) --- ### 🟠 HIGH — 本迭代周期内修复 **[package-name]** `2.1.0` → `3.0.1` ⚠️ 主版本变更 - CVE:CVE-2026-XXXX(CVSS 7.5)—— [描述] - 修复命令:`npm install package-name@3.0.1` - ⚠️ 破坏性变更:请查阅 CHANGELOG — v3.0 修改了 [X] - 迁移指南:[如可获取则提供 URL] --- ### 🟡 MEDIUM — 下一迭代周期处理 [列表] --- ### 🟢 LOW — 批量更新 一次性执行所有安全的补丁/次版本更新: ```bash # Node:更新所有非破坏性版本 npx npm-check-updates -u --target minor && npm install # Python:更新所有非破坏性包 pip install --upgrade [安全包列表] ``` --- ### 推荐修复顺序 1. [package] — 高危 CVE,仅需补丁更新,安全 2. [package] — 高危 CVE,需先测试破坏性变更 3. [package] — 中危,可与其他包合并批量处理
若用户提出“仅修复 CRITICAL 项”或“自动修复安全更新”,则执行以下操作:
# 修复所有审计标记的漏洞,且对应非破坏性修复方案 npm audit fix # 仅在用户确认后才强制修复破坏性变更 npm audit fix --force # ⚠️ 必须先征得用户同意
# 更新特定存在漏洞的包 pip install --upgrade [package1] [package2]
# 重新运行审计以确认漏洞已解决 npm audit 2>/dev/null || pip-audit 2>/dev/null
| 场景 | 处理方式 |
|---|---|
| 未安装对应包管理器 | 提示安装命令,并直接解析清单文件(manifest) |
| 单体仓库(monorepo,含多个 package.json) | 执行 find . -name "package.json" -not -path "*/node_modules/*" 并逐个审计 |
| 私有包(private packages) | 跳过 @company/ 作用域包的 CVE 查询,但仍标记其版本过时 |
| 无网络连接 / 离线环境 | 使用缓存的 npm audit 数据,并注明 CVE 数据库可能已过期 |
| Peer dependency 冲突 | 报告冲突详情,建议使用 --legacy-peer-deps 或手动解决 |
## 依赖项审计 — my-app(Node.js + Python) 日期:2026-03-18 ### 概览 🔴 Critical:1 🟠 High:2 🟡 Medium:4 🟢 Low:11 --- 🔴 CRITICAL lodash 4.17.15 → 4.17.21 CVE-2021-23337(CVSS 9.1)—— 通过模板注入执行命令 修复命令:npm install lodash@4.17.21 安全性:补丁版本,无破坏性变更 ✅ --- 🟠 HIGH axios 0.21.1 → 1.6.8 ⚠️ 主版本变更 CVE-2023-45857(CVSS 8.8)—— 利用伪造请求头触发 CSRF 修复命令:npm install axios@1.6.8 ⚠️ axios v1.x 更改了默认适配器 —— 升级后需测试 HTTP 请求行为 --- 一键修复 CRITICAL + HIGH(仅限安全补丁): npm install lodash@4.17.21 npm install axios@1.6.8 # 请先审阅破坏性变更
主流安全工具(如 Snyk、Dependabot、Socket.dev)均要求:
本能力完全在本地运行——读取您的锁文件,调用您本地安装的包管理器 CLI,并在单次扫描中为您提供完整视图。无需身份认证、无需上传、无需注册账户。
Canlah AI — 在不损害品牌调性的前提下开展效果营销。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.9万人学习
共49课时 | 82.5万人学习