针对 Node.js、Python、Rust、Go 和 Ruby 项目的依赖审计与升级规划工具。扫描过时包、漏洞 CVE 及破坏性变更,...
依赖性审计和更新计划
功能概述
依赖性审计和更新计划是一项面向实际任务的技能,主要用于扫描所有项目,以了解Node.js、Python、Rust、Go和Ruby的过时和脆弱的依赖性,然后制定优先可操作的升级计划。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
依赖项审计与升级规划器
扫描任意项目中 Node.js、Python、Rust、Go 和 Ruby 的过时及存在漏洞的依赖项,随后生成一份优先级明确、可直接执行的升级计划,包含精确命令和破坏性变更警告。
无需 API 密钥,不依赖任何外部服务。完全基于本地项目文件和标准 CLI 工具运行。
触发短语
- “audit dependencies”、“check deps”、“check for vulnerabilities”
- “upgrade packages”、“update dependencies”、“outdated packages”
- “npm audit”、“pip audit”、“security vulnerabilities in deps”
- “/dep-upgrade”
步骤 1:识别项目类型
扫描当前目录下的锁文件(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 前端)。对所有已识别的类型均执行审计。
步骤 2:运行审计命令
针对每种已识别的项目类型,运行对应命令;在可行情况下并行执行。
Node.js / npm / yarn / pnpm
# 安全漏洞检测(内置) 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
Python
# 检查过时包(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
Rust
# 安全审计 cargo audit 2>/dev/null || echo "Install: cargo install cargo-audit" # 过时依赖检测 cargo outdated 2>/dev/null || echo "Install: cargo install cargo-outdated"
Go
# 漏洞检查
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
"
Ruby
# 安全审计 bundle audit check --update 2>/dev/null || echo "Install: gem install bundler-audit" # 过时 gem 检测 bundle outdated 2>/dev/null
步骤 3:分类与优先级排序
收集全部审计输出后,对每一项发现进行归类:
严重性等级
| 等级 | 判定依据 | 操作建议 |
|---|---|---|
| 🔴 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 不稳定)
若某包当前版本与最新版本的主版本号不同,则将其标记为潜在破坏性变更。
步骤 4:生成升级计划
输出结构化报告,含可直接复制粘贴执行的命令:
## 依赖项审计报告 项目:[已识别类型] | 目录:[路径] | 日期:[今日] ### 概览 | 严重性 | 数量 | |----------|-------| | 🔴 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] — 中危,可与其他包合并批量处理
步骤 5:快速修复模式
若用户提出“仅修复 CRITICAL 项”或“自动修复安全更新”,则执行以下操作:
Node.js — 修复 CRITICAL 项及非破坏性更新
# 修复所有审计标记的漏洞,且对应非破坏性修复方案 npm audit fix # 仅在用户确认后才强制修复破坏性变更 npm audit fix --force # ⚠️ 必须先征得用户同意
Python — 修复 CRITICAL 项
# 更新特定存在漏洞的包 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)均要求:
- 提供外部 API 密钥或注册账户
- 集成至 CI/CD 流水线
- 允许云端访问您的代码仓库
本能力完全在本地运行——读取您的锁文件,调用您本地安装的包管理器 CLI,并在单次扫描中为您提供完整视图。无需身份认证、无需上传、无需注册账户。
作者
Canlah AI — 在不损害品牌调性的前提下开展效果营销。
- GitHub:github.com/PHY041
- 全部技能集:clawhub.ai/PHY041
热门AI工具
相关专题
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。
0
2026.10.22
PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.5万人学习
共6课时 | 54.7万人学习
