删除 10 篇已完成/已实施的开发计划文档(认证独立化、captcha/confs C++ 重写、services.yaml、pybot 迁移、aibox --once/工具分层/CLI 化/ 重构快照、actpred cv2.LUT 优化),同步修复 ca/captcha2/pybot/aibox README、代码注释、安全审计与报告中的 12 处引用,MODULES.md 文档 计数更新为 67 篇。
65 lines
4.1 KiB
Markdown
65 lines
4.1 KiB
Markdown
# ca 模块安全审计索引(Central Auth)
|
||
|
||
> ca(Central Auth,C++20,v1.0.0)是 UniServe Framework 的中央认证服务,承接原 gateway v0.8.0 的全部认证职责。
|
||
> 本索引汇总:① 从 gateway v0.9.0 认证独立化**迁移接收**的审计项(已在 ca 闭环);② **ca 相关开放项**(与 gateway 转发层/配置共享,需 ca 侧处理);③ ca 原生安全态势基线。
|
||
> 关联文档:gateway 合并审计 [`gateway_SECURITY_AUDIT.md`](gateway_SECURITY_AUDIT.md)。
|
||
|
||
---
|
||
|
||
## 1. 从 gateway 迁移接收项(v0.9.0,已在 ca 闭环)
|
||
|
||
下列历史问题随 v0.9.0 认证独立化由 gateway 移交 ca,gateway 侧不再跟踪。ca 已闭环(实现见 `ca/src/main.cpp`):
|
||
|
||
| 原编号 | 问题 | ca 侧状态 | 实现位置 / 说明 |
|
||
|--------|------|-----------|----------------|
|
||
| P0-1 | RSA 密钥持久化 | 设计接受(重启即密钥轮换,同进程验签) | ca 内存生成 RSA 密钥 |
|
||
| P0-2 / P0-3 | 错误信息脱敏 | ✅ 已闭环 | ca handler 错误不外泄内部原因 |
|
||
| P1-1 | Token 吊销机制 | ✅ 已实现 | jti 黑名单(5000 阈值)+ 用户版本号双轨,纯内存 |
|
||
| P1-2 | 账户级登录失败锁定 | ✅ 已实现 | 登录失败计数 + 锁定(ca 侧) |
|
||
| P2-5 | JTI 黑名单内存有界 | ✅ 已实现 | 5000 条阈值清理 |
|
||
| P2-6 | 用户名 / 邮箱长度限制 | ✅ 已实现 | ca 输入校验 |
|
||
| A3 | 缺字段返回 400 | ✅ 已实现 | ca handler 参数校验 |
|
||
| A6 / A7 | 验证码双渠道统一 / 废弃内置验证码 | ✅ 已闭环 | 统一走 captcha2 远端校验 |
|
||
|
||
---
|
||
|
||
## 2. ca 相关开放项(需 ca 侧处理)
|
||
|
||
下列 gateway 合并审计的开放项与 ca 直接相关,归 ca 跟踪:
|
||
|
||
| 编号 | 等级 | 问题 | 归属说明 | 状态 |
|
||
|------|------|------|----------|------|
|
||
| P2-3 | 🟡 | CORS 白名单未生效(OPTIONS 预检反射 Origin) | ca `CORS.allowed_origins` 已读取但未用于预检响应头(见 `ca/README.md` 配置段);与 gateway 共享同一白名单配置 | ❌ 未修复 |
|
||
| P1-7 | 🟠 | CSRF Token 缺失 | gateway 纯转发无认证表单;CSRF 评估在 ca 层(会话模型 + `SameSite=Lax`)。如 ca 启用 `tls=on` 独立 HTTPS 需评估 | ❌ 未修复(低优先级) |
|
||
| A2 | 🟠 | 白名单 403 断言 | `Target-Url` 白名单由 gateway `Proxy.opened` 裁决 403,但白名单配置 / 断言随转发层迁入 ca;跨模块边界,gateway 与 ca 需保持一致 | ⚠️ 边界共识(gateway A2 已转绿,ca 侧需保持白名单同步) |
|
||
|
||
> 其余 gateway 开放项(P1-3 代理超时、P1-5 请求体大小、P1-8 日志注入、P2-2 TLS、P2-4 HTTP 超时、A4 XFF)属 gateway 纯转发层 / libhttp 层,不归 ca,见 [`gateway_SECURITY_AUDIT.md`](gateway_SECURITY_AUDIT.md) §4。
|
||
|
||
---
|
||
|
||
## 3. ca 原生安全态势基线
|
||
|
||
摘自 `ca/README.md` 安全特性(v1.0.0):
|
||
|
||
| 特性 | 实现 |
|
||
|------|------|
|
||
| 密码哈希 | PBKDF2-HMAC-SHA256,100000 轮,16B 随机盐,32B 哈希 |
|
||
| 密码强度 | ≥8 字符,大写/小写/数字/特殊中至少 3 类 |
|
||
| Token 机制 | `Base64(payload) + "_" + RSA-Sign(payload)`,验签 + 过期(默认 1h) |
|
||
| Token 吊销 | 双轨纯内存:jti 黑名单(5000 阈值)+ 用户版本号 |
|
||
| 常数时间比较 | PBKDF2 验证 `diff |= hash[i] ^ expected[i]` 防 timing |
|
||
| 防枚举 | 不存在用户 dummy PBKDF2 拉平时序;重置密码恒成功 |
|
||
| CAPTCHA | 统一 captcha2 远端校验(一次性 Token);`/login` 强制 |
|
||
| TLS 可选 | `Server.tls = off` 纯 HTTP(配合 WAF),`on` 用 `full_chain.crt` / `server.key` |
|
||
| 下游容错 | pymsg `retry_on_refused` 阻塞等待 db/confs;日志 fail-safe |
|
||
|
||
---
|
||
|
||
## 4. 维护说明
|
||
|
||
- 新增 / 复测 ca 相关开放项请编辑本文件 §2;修复后移至 §1 或合入 `ca/src/main.cpp` 注释。
|
||
- gateway 合并审计的“已迁 ca”清单(§1)以本文件为权威;如 gateway 文档与本文件不一致,以本文件为准。
|
||
|
||
**审计人**: AI Security Auditor
|
||
**建立于**: 2026-08-10(从 gateway 合并审计同步开放项与迁移接收项;此前 ca 无独立审计文档)
|