Files
blackbird/docs/security/db_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

83 lines
2.7 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.
# db 模块安全审计报告
**审计日期**: 2026-08-01
**审计范围**: `dbv2.py`、`db_tools.py`、`log_client` 相关
**代码版本**: dev_qing 分支
---
## 修复进度
| 优先级 | 总数 | 已修复 | 待修复 |
|--------|------|--------|--------|
| P0 | 1 | 0 | 1 |
| P1 | 3 | 0 | 3 |
| P2 | 2 | 0 | 2 |
---
## 🔴 P0 — 严重问题
### P0-1: 零认证对外开放完整 CRUD(依赖 127.0.0.1 网络隔离)
- **位置**: `dbv2.py` RpcServer
- **问题**:
- 完全没有认证机制
- 任何能访问 8005 端口的本地进程/用户都可执行任意 select/insert/update/delete
- 可读取 Users 表密码哈希、Logs 表所有日志
- SELECT 无 limit 上限,可被拖库
- 无表级/操作级权限控制
- **当前缓解**: 默认监听 `127.0.0.1`,Docker 也绑定到 127.0.0.1
- **修复建议**:
1. 添加 API Token 认证(预共享密钥,所有调用需携带 `_auth` 字段)
2. SELECT 强制添加 LIMIT 上限(默认 1000 条),防止拖库
3. 添加操作权限:日志写入只允许 insert,禁止 delete/truncate
4. 拒绝无条件 UPDATE/DELETE(必须带 where 条件)
5. DDL 操作仅限本地运维工具,RPC 接口完全禁用
---
## 🟠 P1 — 高危问题
| # | 问题 | 说明 |
|---|------|------|
| P1-1 | db_tools.py 运维工具存在 SQL 字符串拼接风险 | 运维脚本中可能使用字符串拼接构建 SQL |
| P1-2 | 无操作审计日志 | 谁在什么时候修改了什么数据无独立审计记录 |
| P1-3 | Logs 表自动清理可被利用销毁证据 | 攻击者可通过触发大量日志加速清理,删除攻击痕迹 |
---
## 🟡 P2 — 中危问题
| # | 问题 |
|---|------|
| P2-1 | 日志表自动清理的保留策略可配置化(目前硬编码 30天/100万条) |
| P2-2 | 错误信息可能泄露表结构/字段名给调用方 |
---
## ✅ 已有安全机制
1. ✅ **SQLAlchemy Core 参数化查询**:核心 CRUD 路径使用表反射 + 参数化,零 SQL 注入风险
2. ✅ **仅监听 127.0.0.1**:不对外暴露
3. ✅ **集中式日志 fail-safe**:db 不可用时静默丢弃,不阻塞业务
4. ✅ **自动提交/回滚**:异常时自动回滚事务
5. ✅ **日期/时间适配**:ISO 8601 处理,`"$now"` 哨兵
6. ✅ **日志自动清理**:后台线程每小时清理,防止磁盘占满
7. ✅ **log_client 健壮性**:异步队列、后台线程、fail-safe、队列上限(从各服务副本)
---
## 修复路线图
### 立即(24小时)
- [ ] SELECT 添加强制 LIMIT 上限(防止拖库)
### 短期(72小时)
- [ ] 添加 API Token 认证
- [ ] 无条件 UPDATE/DELETE 拒绝执行
- [ ] 错误信息脱敏
### 中期
- [ ] 表级权限控制(日志表只写不删/改)
- [ ] 管理操作审计日志