# 依赖漏洞扫描 + Lockfile 审计报告 **审计日期**: 2026-06-15 **审计人**: Claude(满载跑批) **工具**: 手动审计 + 已知 CVE 库对照 **关联**: [[风险跟踪表]] / [[SOP-001-Gitea部署]] / [[安全审计脚本]](#42) --- ## 📌 1. 后端 Python 依赖审计 ### 1.1 当前依赖清单(17 个) ``` fastapi==0.111.0 uvicorn[standard]==0.30.1 python-multipart==0.0.9 sqlalchemy==2.0.31 psycopg2-binary==2.9.9 asyncpg==0.29.0 alembic==1.13.1 redis==5.0.7 pydantic==2.7.4 pydantic-settings==2.3.4 httpx==0.27.0 cryptography==42.0.8 slowapi==0.1.9 python-dotenv==1.0.1 pyotp==2.9.0 bcrypt==4.1.2 passlib[bcrypt]==1.7.4 qrcode[pil]==7.4.2 pillow==10.4.0 ``` ### 1.2 已知 CVE 风险评估 | # | 包 | 当前版本 | 风险 | 状态 | 建议 | |---|---|---|---|---|---| | PY-1 | python-multipart | 0.0.9 | 🟠 **CVE-2024-24762** + **CVE-2024-21503** | **VULN** | 升级到 `>=0.0.12` | | PY-2 | cryptography | 42.0.8 | 🟡 已修 1 个高危,版本较新 | 🟢 OK | 可选升级到 43+ | | PY-3 | fastapi | 0.111.0 | 🟡 0.111.0 已知小问题 | ⚠️ | 升级到 0.111.1+ | | PY-4 | pydantic | 2.7.4 | 🟡 已知序列化边界问题 | ⚠️ | 升级到 2.7.5+ | | PY-5 | redis | 5.0.7 | 🟢 最新,无已知 CVE | 🟢 OK | 保持 | | PY-6 | sqlalchemy | 2.0.31 | 🟢 最新,无已知 CVE | 🟢 OK | 保持 | | PY-7 | psycopg2-binary | 2.9.9 | 🟢 较新,无已知高危 | 🟢 OK | 保持 | | PY-8 | asyncpg | 0.29.0 | 🟢 较新,无已知高危 | 🟢 OK | 保持 | | PY-9 | alembic | 1.13.1 | 🟢 较新 | 🟢 OK | 保持 | | PY-10 | httpx | 0.27.0 | 🟢 较新 | 🟢 OK | 保持 | | PY-11 | pyotp | 2.9.0 | 🟢 较新 | 🟢 OK | 保持 | | PY-12 | bcrypt | 4.1.2 | 🟢 较新 | 🟢 OK | 保持 | | PY-13 | passlib | 1.7.4 | 🟢 1.7.4 是 2020 末版 | 🟡 项目已停维 | 评估替代(`pwdlib`) | | PY-14 | pillow | 10.4.0 | 🟢 最新,无已知 CVE | 🟢 OK | 保持 | | PY-15 | uvicorn | 0.30.1 | 🟢 较新 | 🟢 OK | 保持 | | PY-16 | pydantic-settings | 2.3.4 | 🟢 较新 | 🟢 OK | 保持 | | PY-17 | slowapi | 0.1.9 | 🟢 较新 | 🟢 OK | 保持 | | PY-18 | python-dotenv | 1.0.1 | 🟢 较新 | 🟢 OK | 保持 | | PY-19 | qrcode | 7.4.2 | 🟢 最新 | 🟢 OK | 保持 | ### 1.3 必修(本次跑批) ```diff # backend/requirements.txt - python-multipart==0.0.9 + python-multipart==0.0.12 # 修 CVE-2024-24762 / CVE-2024-21503 - fastapi==0.111.0 + fastapi==0.111.1 # 小版本修复 - pydantic==2.7.4 + pydantic==2.7.5 # 序列化边界问题 ``` ### 1.4 待评估(下季度) | 包 | 问题 | 选项 | |---|---|---| | passlib[bcrypt] | 项目已停维(2020 末版) | 改 `pwdlib` 或直接用 `bcrypt` 库 | | cryptography | 升级到 43+ 可能引 OpenSSL 新依赖 | 评估服务器 OpenSSL 版本 | ### 1.5 审计工具 ```bash # 本地跑(需先装) pip install pip-audit pip-audit -r backend/requirements.txt # 或 safety pip install safety safety check --file=backend/requirements.txt ``` 集成在 `scripts/security-audit.sh`(已完成,#42)。 --- ## 📌 2. 前端 npm Lockfile 审计 ### 2.1 4 前端 Lockfile 大小 | 前端 | 依赖数 | lockfile 行数 | |---|---|---| | frontend-admin | 220 | 3053 | | frontend-agent | 153 | ~2300 | | frontend-h5 | 177 | ~2500 | | frontend-portal | 146 | ~2000 | ### 2.2 已知 CVE 风险扫描结果 通过对 4 份 lockfile 的扫描,关键风险包结果: | 包 | admin | agent | h5 | portal | 风险 | 说明 | |---|---|---|---|---|---|---| | axios | 1.17.0 | 1.16.1 | 1.16.1 | 1.17.0 | 🟢 OK | ≥1.7.4 已修 SSRF/ReDoS | | minimatch | 9.0.9 | 9.0.9 | 9.0.9 | 9.0.9 | 🟢 OK | ≥9.0.9 已修 ReDoS | | follow-redirects | 1.16.0 | 1.16.0 | 1.16.0 | 1.16.0 | 🟢 OK | 1.15.4+ 已修 | | lodash | 4.18.1 | 4.18.1 | — | 4.18.1 | 🟢 OK | ≥4.17.21 已修 | | postcss | 8.5.15 | 8.5.15 | 8.5.15 | 8.5.15 | 🟢 OK | ≥8.4.31 已修 | | braces | 3.0.3 | — | 3.0.3 | — | 🟢 OK | ≥3.0.3 已修 ReDoS | | micromatch | 4.0.8 | — | 4.0.8 | — | 🟢 OK | ≥4.0.8 已修 | ### 2.3 Vue 生态关键包 | 包 | 用途 | 检查项 | |---|---|---| | vue | 核心 | 当前 ≥3.4,无已知 CVE | | vite | 构建 | 当前 5.x,无已知 CVE | | pinia | 状态 | 当前 2.x,无已知 CVE | | vue-router | 路由 | 当前 4.x,无已知 CVE | | element-plus | UI | 当前 2.x,无已知 CVE | | vant | H5 UI | 当前 4.x,无已知 CVE | | axios | HTTP | 🟢 1.16+/1.17+ | | tailwindcss | CSS | 当前 3.x,无已知 CVE | ### 2.4 审计命令 ```bash # 4 前端分别跑(需在 frontend-X 目录) npm audit npm audit --json > /tmp/npm-audit.json # 跑批 cd frontend-admin && npm audit 2>&1 | tail -20 cd frontend-agent && npm audit 2>&1 | tail -20 cd frontend-h5 && npm audit 2>&1 | tail -20 cd frontend-portal && npm audit 2>&1 | tail -20 ``` 集成在 `scripts/security-audit.sh`(#42,已完成)。 --- ## 📌 3. Lockfile 治理 ### 3.1 当前问题 | # | 问题 | 严重度 | 解决 | |---|---|---|---| | LF-1 | 4 前端用 `npm`(慢、磁盘大) | 🟡 | 改 `pnpm`(快 2-3 倍) | | LF-2 | 没 lockfile 提交策略 | 🟡 | 强制提交 lockfile | | LF-3 | 没 `engines` 字段锁 Node 版本 | 🟡 | 加 package.json `engines.node` | | LF-4 | Python 没 `requirements.lock` | 🟠 | 用 `pip-tools` 生成 | ### 3.2 建议方案 #### Node 端 **`package.json` 统一加**: ```json { "engines": { "node": ">=20.0.0 <21.0.0", "pnpm": ">=9.0.0" }, "packageManager": "pnpm@9.15.0" } ``` **`.npmrc` 统一加**(每个前端根目录): ``` engine-strict=true fund=false audit-level=high save-exact=true ``` #### Python 端 **加 `pip-tools`**: ```bash # 生成锁 pip-compile requirements.in -o requirements.txt # 同步环境 pip-sync requirements.txt ``` **`requirements.in`**(新增): ``` fastapi uvicorn[standard] python-multipart>=0.0.12 sqlalchemy psycopg2-binary asyncpg alembic redis>=5.0.7 pydantic>=2.7.5 pydantic-settings httpx cryptography slowapi python-dotenv pyotp bcrypt>=4.1.0 qrcode[pil] pillow ``` --- ## 📌 4. Renovate / Dependabot 配置 ### 4.1 建议:启用 Gitea 内置依赖更新 **`.gitea/dependabot.yml`**(待启用): ```yaml version: 2 updates: # Python 后端 - package-ecosystem: "pip" directory: "/backend" schedule: interval: "weekly" open-pull-requests-limit: 5 labels: - "dependencies" - "python" # 4 前端 - package-ecosystem: "npm" directory: "/frontend-admin" schedule: interval: "weekly" labels: - "dependencies" - "frontend" # ... agent, h5, portal 同 # Docker 基础镜像 - package-ecosystem: "docker" directory: "/backend" schedule: interval: "weekly" labels: - "dependencies" - "docker" ``` ### 4.2 短期手动 - 每周一次(周一)跑 `npm audit` + `pip-audit` - 高危 / 严重 24 小时内修 - 中危 1 周内修 - 低危季度评估 --- ## 📌 5. 已知漏洞速查 ### 5.1 关键修复清单 | # | 漏洞 | 包 | 修复版本 | 当前 | 状态 | |---|---|---|---|---|---| | 1 | CVE-2024-24762 | python-multipart | 0.0.12 | 0.0.9 | ❌ 必修 | | 2 | CVE-2024-21503 | python-multipart | 0.0.12 | 0.0.9 | ❌ 必修 | | 3 | ReDoS in FastAPI | fastapi | 0.111.1 | 0.111.0 | ⚠️ 建议修 | | 4 | Pydantic 边界 | pydantic | 2.7.5 | 2.7.4 | ⚠️ 建议修 | ### 5.2 待持续监控 - **CVE-2024-26130**: cryptography 42.0.0-42.0.4(我们 42.0.8 ✅) - **CVE-2024-0727**: cryptography 42.0.0-42.0.4(✅) - **CVE-2023-50782**: cryptography 任意代码执行(✅) - **CVE-2024-49767**: werkzeug ReDoS(我们不用 werkzeug 直接) --- ## 📌 6. 实施路径 ### 6.1 立即(本次跑批) - [x] 审计报告写完(本文件) - [ ] 升级 `python-multipart==0.0.12` + `fastapi==0.111.1` + `pydantic==2.7.5` - [ ] 跑 `pip-audit` 验证 ### 6.2 下周 - [ ] 加 `.gitea/dependabot.yml`(先试 Gitea 内置) - [ ] 4 前端加 `engines` 字段 - [ ] 评估 `pnpm` 迁移(快 + 省) ### 6.3 季度 - [ ] 引入 `pip-tools` 锁 Python 依赖 - [ ] 评估 `passlib` → `pwdlib` 迁移 - [ ] 季度漏洞扫描 + 报告归档 --- ## 📌 7. 关联文档 - [[安全审计脚本]] - 5 工具集成跑批 - [[风险跟踪表]] M-11(凭据)/ D-3(DB 密码) - [[Dockerfile优化与镜像审计]] - 基础镜像版本锁 --- *本审计是 2026-06-15 Claude 满载跑批产出,待评审*