# 全量审计报告 vs Phase 2 — 对照表

> **日期**: 2026-05-23  
> **全量报告**: [`2026-05-23-full-audit-report.md`](2026-05-23-full-audit-report.md)  
> **Phase 2 SSOT**: [`../project/phase-2-audit-remediation.md`](../project/phase-2-audit-remediation.md)

本表将全量报告 **C1–C12 / 前端 CRITICAL** 与当前代码状态对照，避免与 Phase 2 矩阵重复劳动。

---

## CRITICAL（C1–C12）

| ID | 全量报告描述 | 状态 | 说明 |
|----|-------------|------|------|
| **C1** | `/logout` 无 JWT，可枚举 admin_id 强退 | ✅ 已缓解 | 当前 `POST /logout` 仅接受 **refresh_token**，无 `admin_id` 参数；公开路径设计如此 |
| **C2** | 审计日志缺 `admin_username` / `ip_address` | ✅ 已修复 | `auth_service._audit()` 写入两字段（2026-05-23） |
| **C3** | bcrypt 失败回退 SHA-256 | ✅ 已修复 | 仅 `bcrypt.checkpw`，无回退 |
| **C4** | 模型 `default=datetime.now()` 冻结 | ✅ 已修复 | `default=_utcnow` 可调用 |
| **C5** | `sync_service` `nonlocal completed` | ✅ 已修复 | F2b-06 |
| **C6** | SSH 私钥临时文件未清理 | ✅ 已缓解 | `sync_service` 经 `exec_ssh_command` 池化；无本地 temp key 路径 |
| **C7** | `test_credential_connection` shell 注入 | ✅ 已修复 | 不再拼接 mysql 命令返回 API（F2b-09） |
| **C8** | `sync_files` rsync 路径注入 | ✅ 已修复 | `shlex.quote`（F2b-01～03） |
| **C9** | WebSocket 告警重复投递 | ✅ 已修复 | `_dispatch_ws_message()`：Pub/Sub 活跃时仅 publish，由 subscriber 本地投递一次 |
| **C10** | self_monitor Telegram 风暴 | ✅ 已修复 | `_prev_redis_ok` / `_prev_mysql_ok` 状态转换；仅故障开始/恢复推送 |
| **C11** | `migrations.py` 错误 import `engine` | ✅ 已修复 | 仅 `AsyncSessionLocal` |
| **C12** | Jinja2 CVE | — 不适用 | `requirements.txt` 未依赖 Jinja2 |

---

## 前端 CRITICAL（全量报告 §前端）

| 项 | 状态 | 说明 |
|----|------|------|
| `index.html` XSS（admin_username/action） | ✅ | 已 `esc()`（F2e-01） |
| `terminal.html` JWT 在 URL | 🟡 | webssh-token + server 绑定；query 带票为 WS 限制 |
| `servers.html` 字段未 esc | ✅ | Phase 2 / F2e-01 批次 |
| CDN 无 SRI | ✅ | vendor 自托管（F2e-06） |

---

## HIGH 摘要（仍待排期 / 部分缓解）

| ID | 状态 | 备注 |
|----|------|------|
| H1 sysctl 去重 | 🟡 | sync_config sed 去重（P1-7）；持续观察 |
| H2 duration `.seconds` | ✅ | F2b-05 `total_seconds()` |
| H4 heartbeat 解析失败写 now | ⏳ | 待专项 |
| H7 decrypt 静默 | ✅ | F2c-01 抛异常 |
| H8 Telegram HTML | ✅ | html.escape |
| H12 空 SECRET_KEY 默认 | 🟡 | 安装向导生成；启动应校验（见 deploy） |
| H14 get_all 无分页 | 🟡 | F2a 列表 API 有分页；`get_all` 内部仍全量 |
| H15 nginx 子 location 覆盖安全头 | ⏳ | 部署侧 |
| H18 server_service 存根 | ⏳ | 功能债，非安全 |

---

## 建议阅读顺序

1. 本对照表 — 全量 vs 现状  
2. [`phase-2-audit-remediation.md`](../project/phase-2-audit-remediation.md) — 63 条 FINDING 修复 SSOT  
3. [`production-verification-checklist.md`](../project/production-verification-checklist.md) — 外网验证  

---

## Changelog

- `docs/changelog/2026-05-23-full-audit-reconciliation-fixes.md` — C2 + C9 代码修复
