# 代码审计报告（2026-08-10）

## 范围

覆盖根 workspace、all、19 个业务模块、配置样例和维护脚本。执行结构盘点、敏感信息扫描、TODO/异常退出扫描和全部 module 测试。

## 已修复

| 优先级 | 问题 | 处理 |
| --- | --- | --- |
| P0 | 19 个 go.mod 绑定 D:/work/bsm-sdk/core | 移除绝对路径 replace；20 个 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。建议改为必填环境变量或一次性随机密码；未提供安全凭据时拒绝初始化。

### 已修复：market、mall 弱密码哈希

market 和 mall 的账号创建、登录、改密及初始化密码已从 MD5 加盐切换为 bcrypt。历史 MD5 记录需要通过密码重置流程迁移。

### P1：reflection 与明文 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 ./... 通过；不包含真实基础设施集成测试。
