Skip to content

XHIM 威胁模型

适用范围:XHIM Core、平台 Wrapper、参考服务端、媒体与通话控制面。 每次认证、协议、存储、Push、媒体或 RTC 边界变化都必须重新审查。

1. 资产与信任边界

关键资产包括用户 Token、服务端签名私钥、Cursor/RTC/媒体签名密钥、消息与 媒体内容、本地 SQLite、设备 Push Token、群管理权限、审计记录和发布签名。

信任边界:

text
App UI
  │ platform facade / untrusted custom renderer

XHIM stable C ABI ── private SQLite / media sandbox
  │ strict HTTPS + WSS

Edge/Gateway ── XHIM Server ── PostgreSQL / private object storage

                    ├── Push Provider
                    └── RTC Provider or SFU

App 输入、网络、Push Payload、自定义消息 Payload、媒体元数据、RTC 回调和 管理 API 调用均视为不可信。C++ Product Adapter 和服务端私钥运行环境属于高 信任区;普通 App、UI Renderer、日志平台与第三方 Push/RTC 不属于高信任区。

2. 主要威胁与控制

威胁现有控制发布前验证
Token 伪造/重放Ed25519 JWT、audience/scope/expiry、TLS撤销、轮换、错误 Token 黑盒矩阵
Endpoint 劫持签名 Bundle、固定 Key ID、HTTPS/WSS过期、降级、错签名、重定向测试
账号串库canonical account、account epoch、DB 绑定换号、迟到回调、多 profile 测试
旧连接污染新状态connection generation fence重连、登出、网络切换竞态测试
消息篡改/重复Payload hash、幂等 ID、server seq重放、冲突、乱序与重启测试
越权读写会话/媒体每次服务端成员校验、私有对象移出群后下载、猜测 ID 测试
群权限提升Owner/Admin 事务校验、revision CAS、审计并发转让/禁言/审批测试
黑名单绕过服务端发送/加好友/入群检查双向组合与并发解除测试
Push 泄密Push 仅含最小唤醒摘要锁屏、日志与 Provider Payload 审计
RTC Token 串用每用户短期签名 Token,不进公共事件流跨用户、过期、房间重放测试
本地数据泄露私有目录、平台安全存储边界备份、锁屏、越狱/Root 风险说明
自定义 Payload 攻击 UI大小/版本限制、fallback、Renderer 隔离fuzz、超限、未知版本测试
供应链篡改锁定依赖、Hash、签名、SBOM、来源证明干净环境复现与验签
DoS/资源耗尽有界队列/帧/请求/分页/连接、限流容量测试与慢客户端测试

3. 密钥与凭证

  • 服务端 Ed25519、Cursor HMAC、RTC HMAC、媒体 URL Key 使用不同密钥,禁止 复用;生产环境进入 KMS/HSM 或部署平台 Secret Store。
  • 客户端只持有用户访问 Token 和必要的短期媒体/RTC 凭证,不持有 Admin Key 或服务端签名密钥。
  • RTC Token 绑定 app_id + room_id + user_id + media_kind + expiry
  • 密钥轮换需允许新旧 Key ID 的有限重叠,并有回滚、审计与吊销流程。
  • 普通日志、指标 Label、Trace baggage、Crash 和客服诊断包不得包含秘密。

4. 安全测试门禁

  • C++:ASan、TSan、UBSan(受支持目标)、fuzz corpus 和 ABI 检查;
  • Go:go test -race ./...go vet ./...、依赖漏洞扫描;
  • API:认证/授权矩阵、请求体上限、超时、限流、幂等与租户隔离;
  • 数据库:迁移回滚演练、约束/事务、备份恢复、PITR;
  • 平台:Callback 生命周期、后台/锁屏、Keychain/Keystore/DPAPI/HUKS;
  • 发布:签名、Hash、SBOM、provenance、恶意依赖和 Secret 扫描。

5. 已知剩余风险

当前签名 RTC Token Provider 是供应商无关控制面实现,不包含媒体面的 SFU、 TURN、端到端媒体加密和厂商 SDK 真机验证。参考 C++ 网络 Adapter 的手写 Protobuf Codec 仍需替换为固定生成代码。数据库静态加密必须由各平台产品包按 合规级别选择并验证,不能仅凭 SQLite 文件位于私有目录就宣称“已加密”。

XHIM 客户端 SDK 与服务端文档