93ba41ed79
- 新增 backend/app/api/approval.py 审批API - 前端H5支持发起审批、审批操作 - 添加审批卡片弹窗组件 - 路由注册审批模块
8.2 KiB
8.2 KiB
依赖漏洞扫描 + Lockfile 审计报告
审计日期: 2026-06-15 审计人: Claude(满载跑批) 工具: 手动审计 + 已知 CVE 库对照 关联: 风险跟踪表 / SOP-001-Gitea部署 / [安全审计脚本]
📌 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 必修(本次跑批)
# 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 审计工具
# 本地跑(需先装)
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 审计命令
# 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 统一加:
{
"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:
# 生成锁
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(待启用):
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 立即(本次跑批)
- 审计报告写完(本文件)
- 升级
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 满载跑批产出,待评审