Files
blackbird/docs/security/gateway_SECURITY_AUDIT_20260801.md
T
qing a7a78d1424 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
2026-08-03 13:21:48 +08:00

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