Files
blackbird/docs/security/ca_SECURITY_AUDIT.md
qing 6f1f2bd296 docs: 清理已落地的开发计划文档并修复引用
删除 10 篇已完成/已实施的开发计划文档(认证独立化、captcha/confs
C++ 重写、services.yaml、pybot 迁移、aibox --once/工具分层/CLI 化/
重构快照、actpred cv2.LUT 优化),同步修复 ca/captcha2/pybot/aibox
README、代码注释、安全审计与报告中的 12 处引用,MODULES.md 文档
计数更新为 67 篇。
2026-08-20 11:43:45 +00:00

65 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 无独立审计文档)