audit and harden workspace

This commit is contained in:
2026-08-10 11:42:45 +08:00
parent c883cc52a2
commit 1a1fa521c0
140 changed files with 640 additions and 475 deletions

53
wiki/audit-2026-08-10.md Normal file
View File

@@ -0,0 +1,53 @@
# 代码审计报告2026-08-10
## 范围
覆盖根 workspace、all、19 个业务模块、配置样例和维护脚本。执行结构盘点、敏感信息扫描、TODO/异常退出扫描和全部 module 测试。
## 已修复
| 优先级 | 问题 | 处理 |
| --- | --- | --- |
| P0 | 19 个 go.mod 绑定 D:/work/bsm-sdk/core | 移除绝对路径 replace20 个 module 测试仍通过 |
| P0 | 样例含公网地址、固定 secret 和开发机私钥路径 | 改为 localhost 或 CHANGE_ME |
| P1 | workspace 直接参与路径构造 | 限制字符和长度、转小写、增加测试 |
| P1 | 聚合入口缺少连接防护 | 增加 ReadHeaderTimeout、IdleTimeout、MaxHeaderBytes |
| P1 | gRPC GracefulStop 可能无限等待 | 受 context 约束,超时强制 Stop |
| P2 | 缺少统一验证入口 | 新增 PowerShell 和 Bash 验证脚本 |
| P2 | README 乱码且过时 | 重写 README 并建立 wiki |
## 尚存风险
### P0默认管理员密码
module/base/mgt/internal/models/init_db.go 仍包含 root 默认密码 123456。建议改为必填环境变量或一次性随机密码未提供安全凭据时拒绝初始化。
### P1弱密码哈希
market、mall 等部分逻辑仍使用 MD5 加盐。应迁移至 bcrypt、scrypt 或 Argon2id并采用登录时升级旧哈希的兼容策略。
### P1reflection 与明文 h2c
all 默认启用 gRPC reflection自身不终止 TLS。生产环境应在可信网络运行由网关终止 TLS并将 reflection 改为配置控制。
### P1未实现接口
social、wallet、mall、cms 等仍有模板 TODO。编译成功不代表功能完整未实现 RPC 应明确返回 Unimplemented。
### P2测试覆盖不足
多数 package 没有测试。应优先覆盖认证、权限、支付、订单状态机、迁移和 all 请求分流。
### P2迁移与启动耦合
多个 models.New 会自动迁移或 seed。建议拆分连接、迁移、seed支持蓝绿发布、只读实例和回滚。
## 建议路线
1. 消除默认管理员密码并迁移弱密码哈希。
2. 配置化 reflection、初始化行为和 TLS 信任边界。
3. 为 auth、mgt、order、wallet 建立核心路径测试。
4. 将数据库迁移和 seed 从进程启动拆出。
5. CI 增加 workspace 验证、凭据扫描、proto 一致性和依赖漏洞扫描。
审计基线:全部 20 个 workspace module 的 go test ./... 通过;不包含真实基础设施集成测试。