- 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
87 lines
3.0 KiB
Markdown
87 lines
3.0 KiB
Markdown
# 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 场景)
|
||
- [ ] 管理操作审计日志
|