IMBoy 是一款 IM 产品,处理用户消息、设备密钥、端到端加密内容等敏感数据。 任何安全问题都应被认真对待。我们感谢负责任的安全研究者。
| 版本 | 状态 | 支持截止 |
|---|---|---|
1.0.0-rc.x |
✅ 主动维护 | —— |
0.8.x (app) / 0.7.x (backend) |
1.0.0 GA 后 3 个月 | |
< 0.7 |
❌ 不再支持 | —— |
首个标准 SKU 版本为 1.0.0-rc.1。早期 pre-SKU 版本仅在紧急情况下修复。
请不要通过公开 Issue 报告安全漏洞。
- 邮件(首选):
[email protected]- 可以用 PGP 加密(公钥见 KEYS)
- GitHub Security Advisory(私密):
- 仓库 → Security → Report a vulnerability
- 临时沟通:如以上都不可用,可在任意仓库开一个空白 Issue,标题写
SECURITY CONTACT REQUEST(不要附带任何细节),维护者会主动私下联系你。
- 影响的组件(backend / app / admin)及版本
- 复现步骤(最小可复现用例 PoC)
- 影响评估(数据泄露 / 权限提升 / 拒绝服务 / 其他)
- 您希望被致谢的名字(可选)
| 严重级别 | 首次响应 | 初步评估 | 修复窗口 |
|---|---|---|---|
| Critical(RCE / 密钥泄露 / 消息伪造) | 24 小时 | 72 小时 | 7 天 |
| High(认证绕过 / 权限提升 / 隐私泄露) | 72 小时 | 7 天 | 30 天 |
| Medium(信息泄露 / DoS / CSRF) | 7 天 | 14 天 | 60 天 |
| Low(配置建议 / 弱化建议) | 14 天 | 30 天 | 尽力而为 |
我们会在修复发布后 30 天内发布安全公告(GitHub Security Advisory + CHANGELOG)。
imboy后端(Erlang/Cowboy)认证、授权、会话、消息路由、E2EE 服务端实现imboyappFlutter 客户端(Android / iOS)本地密钥存储、消息加解密、权限控制、本地 SQLite 未授权访问、资源 URL 签名伪造imboy-admin-frontend管理后台(React)认证、XSS、CSRF、权限绕过- 官方 docker-compose / 部署脚本中的默认配置弱点
- 文档(
doc/)中的误导性安全建议
- 针对自部署实例配置错误导致的问题(如用户自己把
JWT_KEY写成CHANGE_ME上线) - 未使用官方 release 构建的第三方 fork
- 依赖库(Cowboy / epgsql / 等)的已知 CVE —— 请直接上报给上游
- 社工、物理攻击、针对特定用户的钓鱼
- 仅具有理论影响、无实际利用路径的问题
- 缺少"最佳实践"类安全头/配置的"最佳实践建议"(除非能证明实际危害)
在报告问题前,请先阅读 imboy/doc/operations/security.md 了解当前版本已声明的安全边界:
- 传输层强制 TLS(生产部署通过 Caddy 自动签发 Let's Encrypt)
- 密码使用 HMAC-SHA512 + 随机盐存储(
elib_password内置 dual-verify,兼容早期 MD5 格式并在登录时自然淘汰) - JWT + 刷新 token 机制
- E2EE 采用 RSA-OAEP-256 + AES-256-GCM,服务端不持有私钥、不解密
ciphertext - 管理后台使用独立 cookie secret + CSRF token
已记录在案的已知限制(不视为新漏洞,但欢迎参与讨论):
- 密码哈希算法为 HMAC-SHA512,非 memory-hard 函数;计划在 1.1 迁移到 Argon2id,老 hash 届时通过登录惰性 rehash 迁移
- 消息存储层
msg_store为明文落库(非 E2EE 对话),由运营方承担加密落盘责任 - 首次管理员创建目前仍需要
erl remote_console(P0-5 已列入 1.0.0 计划)
首批安全研究者致谢将在 1.0.0 GA 时发布到 SECURITY-HALL-OF-FAME.md。
1.0.0-rc.1 临时占位。GA 前会替换为正式 key 并发布到
keys.openpgp.org。
(placeholder — will be published at v1.0.0)
联系:[email protected]
最近更新:2026-04-10