docs: aggregate project documentation under docs/ with unified index

- Move all per-module security audit reports to docs/security/
- Move code review logs to docs/reviews/, analysis reports to docs/reports/
- Add docs/INDEX.md as single entry point for all project documentation
- Add documentation management conventions section to README.md
- Clean up empty per-module docs/ directories
This commit is contained in:
qing committed 2026-08-03 13:21:48 +08:00
1 parent 9dbe395484
commit a7a78d1424
22 files changed
+151

No files matched your search

-86
View File
@@ -1,86 +0,0 @@
# gateway 模块安全审计报告
**审计日期**: 2026-08-01
**审计范围**: `src/main.cpp`、`src/shared/`(libth、libhttp、libcrypt、libsqlite3)
**代码版本**: dev_qing 分支
---
## 修复进度
| 优先级 | 总数 | 已修复 | 待修复 |
|--------|------|--------|--------|
| P0 | 1 | 0 | 1 |
| P1 | 5 | 部分 | 3 |
| P2 | 2 | 0 | 2 |
---
## 🔴 P0 — 严重问题
### P0-1: RSA 私钥存储在仓库中/硬编码
- **位置**: Token 签名相关代码
- **问题**: RSA 私钥若硬编码在代码中或随仓库分发:
- 所有部署使用同一密钥对,私钥泄露即全局沦陷
- 任何有代码访问权限的人都可伪造 Token
- **修复建议**:
1. 私钥从文件路径加载(启动参数或环境变量),不硬编码
2. 每个部署实例生成独立密钥对
3. 私钥文件权限 0600,仅服务运行用户可读
4. 公钥分发机制:dnfs、aibox 等需要验签的服务可访问公钥
---
## 🟠 P1 — 高危问题
| # | 问题 | 说明 |
|---|------|------|
| P1-1 | Token 吊销机制缺失 | 当前无 Token 黑名单/吊销列表,修改密码/注销后旧 Token 仍然有效直到过期 |
| P1-2 | 登录失败次数限制需确认实现 | 是否有 IP/账户级别的失败锁定 |
| P1-3 | 上游代理超时配置需验证 | 反向代理超时过短导致大文件上传失败,过长导致 Slowloris |
| P1-4 | C++ HTTP 解析器缓冲区溢出审计 | libhttp 库需全面 fuzz 测试 |
| P1-5 | 请求体大小限制需确认 | 是否配置了合理的上限(如 10MB) |
---
## 🟡 P2 — 中危问题
| # | 问题 |
|---|------|
| P2-1 | 错误页面可能泄露版本号/堆栈信息 |
| P2-2 | HTTPS 配置(如使用)需确认 TLS 版本和密码套件安全 |
---
## ✅ 已有安全机制
1. ✅ **PBKDF2 密码哈希**: 慢哈希算法防彩虹表,使用唯一盐值
```cpp
bool auth_ok = PBKDF2Hasher::verify_password(password, stored_hash);
```
2. ✅ **RSA Token 签名**: Token 使用 RSA 私钥签名,防伪造
3. ✅ **反向代理架构**: 统一入口,隐藏后端服务拓扑
4. ✅ **速率限制**: 邮件轰炸多层防护(gateway+smtp 双窗口限流、60秒冷却、失败锁定)
5. ✅ **防用户名枚举**: 登录失败返回统一消息(需确认实现)
6. ✅ **WAF 前置防护**: Go WAF 处理 SQLi/XSS/CC/协议解析
7. ✅ **C++ 高性能实现**: 避免 Python GIL 瓶颈,抗并发能力强
8. ✅ **依赖审计**: 使用项目自带的 libcrypt 加密库(PBKDF2、RSA)
---
## 修复路线图
### 立即(24小时)
- [ ] 确认 RSA 私钥不从仓库/硬编码加载,改为外部文件
- [ ] 验证请求体大小限制已启用(参考 waf 的 10MB 配置)
### 短期(72小时)
- [ ] 实现 Token 吊销列表(密码修改时注销旧 Token)
- [ ] 确认登录失败锁定机制生效
- [ ] 验证代理超时配置(防 Slowloris + 支持大文件上传)
- [ ] libhttp 解析器 fuzz 测试
### 中期
- [ ] 错误页面脱敏
- [ ] TLS 安全配置(HTTPS 场景)
- [ ] 管理操作审计日志