开源 IM 上线时通常很顺利。源码可审计,服务部署在企业自己的机房,许可成本也低。真正的问题往往出现在一两年后:社区主线已经走到新的大版本,企业还在用旧版;安全公告里出现了影响当前版本的问题,升级却牵动客户端、插件、数据库和周边集成。
这时再问谁来负责,已经晚了。评估的核心不是找一个永远不出漏洞的软件,而是确认漏洞出现后,谁在什么时限内、对哪些版本、用什么方式负责。开源许可证给的是使用、修改和分发的权利,不是持续提供安全补丁的承诺。企业要在选型阶段就把安全更新和版本兼容拆成可验证的责任项,写进合同和运维流程。
开源 IM 的安全更新,责任到底在谁
许可证给的是使用权,不是维护承诺
Apache 2.0 第 7、8 节把软件按原样提供,不附带任何明示或默示担保;除法律强制或书面约定外,贡献者也不对使用后果承担赔偿责任。不同许可证的条款不一样,AGPL v3 等许可证同样需要逐条阅读,但共同点是: 许可证主要解决能不能用,不保证出了漏洞谁来修、多久修、修到哪个版本。
这不是说开源项目不修漏洞。活跃项目通常会在主线修复,也会发布安全公告。问题在于,修复是否覆盖你正在用的版本、是否有人回补旧分支、是否提供可执行的缓解措施,这些都不由许可证自动保证。
社区、商业发行版和企业各自负责什么
一个开源 IM 的维护责任通常落在三类角色身上:
- 上游社区负责主线版本的漏洞修复、发布说明和安全公告,一般没有合同意义上的响应时限。
- 商业发行版或服务商负责把上游修复回补到受支持版本,提供兼容矩阵、升级协助和安全通知,责任边界由合同约定。
- 企业自己负责资产盘点、暴露面收敛、升级测试、应急响应和数据备份。即使买了商业支持,最后一公里的验证和决策仍在企业。
把这三类角色混在一起,就会出现用了开源版、却以为有人兜底的错位。选型时要问清楚: 你买的是软件许可、支持服务,还是两者都有。
国内法规把提供者和运营者分开
《网络产品安全漏洞管理规定》由工信部、国家互联网信息办公室、公安部联合制定,自 2021 年 9 月 1 日起施行。规定对网络产品提供者和运营者提出了要求:建立畅通的漏洞接收渠道,及时验证并修补漏洞;对在国内提供网络产品的厂商,还要在 2 日内向工信部网络安全威胁和漏洞信息共享平台报送漏洞信息,及时把风险与修补方式告知受影响用户,并提供必要的技术支持。
这里的关键是角色认定。企业只在自己内部部署使用,和把修改后的版本分发给子公司、客户,角色并不相同。前者更接近网络运营者,后者可能涉及网络产品提供者的义务。 具体认定要看是否对外提供产品、是否修改后分发,建议由法务结合业务模式确认,不要用一句“我们只是内部使用”带过。
2024 年 4 月 25 日发布、2024 年 11 月 1 日实施的 GB/T 43698-2024《网络安全技术 软件供应链安全要求》,把供方和需方的安全责任、软件物料清单和漏洞修复放进了同一个框架。它是推荐性国家标准,不是强制认证,但适合作为采购和验收时的共同语言。
看支持窗口,而不是只看功能清单
版本生命周期要能查到具体日期
判断一个开源 IM 是否可持续,先看它有没有公开的版本生命周期表。以开源协作平台 Mattermost 的官方文档为例:服务器版本每月 16 日发布;功能版本会把高危安全修复回补到此前 3 个月度版本;扩展支持版本(ESR)每 9 个月发布一次,支持 12 个月。截至 2026 年 11 月,v11.11 的支持截止日期是 2026 年 12 月 15 日,v11.7 ESR 支持到 2027 年 5 月 15 日。
这张表比功能列表更能说明问题。它把支持多久变成了可以查证的日期,也把升级频率摆到了台面上。
三个问题筛掉不可持续的项目
评估时不必一开始就做很深的技术审计,先问三个问题:
- 当前版本的支持截止日期是哪一天?
- 安全修复只覆盖最新版,还是也覆盖 LTS、ESR 或上一个稳定版?
- 过去 12 个月是否有稳定的安全公告和补丁发布记录?
如果答案只有最新版会修,而企业的升级周期是 12 个月,这个项目在选型阶段就应该降权。 支持窗口小于企业升级周期,等于把企业长期放在永远落后一个版本的状态。
支持窗口和企业升级周期要对齐
有些企业不是不想升级,而是升级链条太长:客户端要重新打包,插件要回归测试,数据库要停机窗口,信创环境还要重新验证。这种情况下,ESR 或商业延长支持不是奢侈品,而是把升级频率降到可管理范围的工具。
如果项目没有 ESR,也没有商业支持,企业就要诚实评估自己的升级能力。团队能在两周内完成全量升级,和只能一年升级一次,适合的选择完全不同。
安全更新能力,看发现、修复、告知、验证的闭环
漏洞接收和披露渠道
一个可评估的项目,至少要有固定的安全联系方式和安全公告页。公告里应写清影响版本、修复版本、漏洞等级和可用的缓解措施。没有固定渠道,漏洞可能只在 issue 列表里沉底,企业很难判断自己是否受影响。
披露节奏也很重要。有的项目在修复发布后立即公布细节,有的会留出缓冲期。 关键不是照搬某个时间表,而是企业能不能提前知道影响范围、修复版本和临时缓解办法。
修复是否覆盖你在用的版本
开源项目常见的做法是只维护最新主线,旧版本不再回补。这本身不是问题,前提是企业能跟上主线。如果企业跑的是旧版本,又需要安全修复,就要确认三件事:项目是否维护该分支、是否有商业回补、回补的修复是否经过测试。
最新版已经修了,不等于你的版本已经安全。选型时要把这句话写进评估表,避免采购后被一句“升级到最新版”打发。
能不能拿到可验证的证据
安全更新不能只看承诺,要看证据。可以要求提供软件物料清单(SBOM)、修复版本号、CVE 编号或安全公告链接、发布包的校验值,以及漏洞扫描或渗透测试报告。SBOM 的价值在于,当上游组件爆出漏洞时,企业能快速定位自己的版本是否受影响。
GB/T 43698-2024 提出的软件供应链安全图谱,也是同样的思路:把软件来源、组件成分、漏洞信息和合规信息连成一张可追溯的图。 没有这张图,漏洞来了只能靠猜。
版本兼容风险,不只在服务端
一张兼容矩阵要覆盖哪些层
很多团队把版本兼容理解成服务端能不能启动。真正会出问题的,往往是下面这些层:
| 层级 | 要确认的内容 | 常见问题 |
|---|---|---|
| 服务端 | 操作系统、CPU 架构、数据库版本、运行时、反向代理、TLS | 数据库大版本升级后无法回退 |
| 客户端 | Windows、macOS、Linux、iOS、Android、浏览器 | 旧客户端连不上新服务端 |
| 集成 | LDAP/AD、单点登录、API、SDK、Webhook、机器人 | 认证协议或接口字段变化 |
| 信创环境 | 麒麟、统信 UOS、鲲鹏、飞腾、申威、龙芯等 | 只在特定芯片或系统上复现的兼容问题 |
| 运维 | 备份、监控、日志、存储、扩容 | 升级后监控指标或备份任务失效 |
兼容矩阵要能对应到具体版本号,而不是只写支持主流系统。企业自己的插件、脚本和本地改造,厂商的矩阵通常覆盖不到,这部分只能自己做回归测试。
升级路径和回滚同样属于兼容责任
跨版本升级是否支持,是否需要逐级升级,数据库迁移是否可逆,升级失败后能不能回到原版本,这些问题要在采购前问清楚。尤其是 IM 这种强依赖客户端的系统,服务端升级后旧客户端还能不能登录、移动端是否要等应用商店审核,都会影响升级窗口。
升级方案里没有回滚步骤,等于把一次升级变成一次不可逆的迁移。 对生产环境来说,这比新功能好不好用更值得关注。
谁来做兼容测试
厂商负责其声明支持的版本组合,企业负责自己的集成和终端环境。比较稳妥的做法是在试用阶段做一次小范围试点:选一个部门,覆盖主要客户端类型、认证方式和周边集成,跑一遍升级、回滚和故障恢复。
试点不是为了证明能用,而是为了找出哪些地方会在真实环境里断掉。 兼容责任的分界线,应该由测试结果来划,而不是由销售口头承诺来划。
把责任写进合同和运维流程
一张责任矩阵
把前面几节的内容收拢,可以得到一张责任矩阵。它的作用不是追责,而是在签约前把空白处补上。
| 责任项 | 上游社区 | 商业发行版或服务商(如有) | 企业 | 要拿到的证据 |
|---|---|---|---|---|
| 漏洞修复 | 修复主线版本 | 回补受支持版本 | 跟踪影响、安排升级 | 安全公告、CVE、修复版本号 |
| 支持窗口 | 维护当前主线 | 明确 LTS/ESR 和截止日期 | 在窗口内完成升级 | 版本生命周期表 |
| 兼容性 | 维护主线兼容 | 提供兼容矩阵和升级路径 | 验证自有集成和终端 | 兼容矩阵、升级说明 |
| 通知 | 社区公告 | 合同约定的通知渠道 | 内部通报和应急 | 通知记录、联系人 |
| 退出 | 社区文档 | 数据导出和迁移协助 | 备份、演练、迁移 | 退出预案、数据格式说明 |
四类条款要写清楚
合同里的安全条款不需要写得很长,但四类内容不能缺:
- 支持周期与版本清单:写清起止日期、覆盖哪些版本、是否包含安全修复和旧版本回补。
- 安全事件通知与修复时限:写清通知渠道、通知时限、是否提供缓解措施和升级协助。
- 兼容性与升级协助:写清兼容矩阵范围、跨版本升级方案、回滚支持和现场或远程支持方式。
- 退出与数据迁移:写清数据导出格式、迁移协助、源码或托管安排、过渡期。
口头承诺不算,写进合同才算。 如果厂商不愿意把支持窗口和修复时限写清楚,这本身就是一条评估信息。
开源版、专业版和纯商业产品怎么选
三类选择对应三种责任结构:
- 开源版适合有研发能力、能自己读代码、能快速测试升级的团队。它把控制权交给企业,也把维护责任交给企业。选择前要确认许可证义务;如果许可证带有源码开放条款,修改后对外提供服务时的边界要提前确认。
- 专业版或商业支持适合需要明确支持窗口、兼容矩阵、安全通知和升级协助的组织。买的是服务边界,不只是功能。
- 纯商业 IM适合没有团队承担底层维护、希望开箱即用的组织。代价是数据控制权和定制空间通常更小。
喧喧IM 可以作为观察这三种责任结构的一个样本。它的 开源版基于 AGPL v3,核心源码开放,支持私有化部署和纯局域网运行,也适配国产芯片与操作系统。如果团队需要更完整的企业功能和商业支持,可以在 版本与购买页面核对开源版与专业版的功能差异。专业版提供组织隔离、LDAP 认证、IP 登录限制、服务端文件加密存储等能力,具体范围以版本清单为准。
如果准备从开源版起步,建议把两件事一起确认:一是 私有化部署环境下的升级和备份方案,二是厂商能否提供版本支持周期、安全通知渠道和升级协助。
喧喧IM 的 安装升级手册可以作为评估其升级路径的起点。需要提醒的是,开源许可本身不承诺安全更新,商业支持的具体内容仍要落到合同。
上线前的验证清单
七步验证
把评估落到动作,可以在试用阶段跑一遍下面七步:
- 盘点资产和组件:服务端、数据库、客户端、插件、接口和周边集成,形成一份 SBOM。
- 查版本生命周期:当前版本的支持截止日期、是否有 ESR/LTS、旧版本是否回补。
- 订阅安全公告:安全页面、邮件列表、CVE 订阅都行,关键是有人负责看。
- 做一次升级演练:在测试环境完成备份、升级、验证和回滚,记录耗时。
- 测兼容矩阵:覆盖主要操作系统、数据库、客户端、认证方式和信创环境。
- 设补丁窗口:按风险分级安排内部修复时限,关键漏洞优先处理。
- 准备应急和退出:联系人、回滚包、数据导出方式、迁移预案。
问供应商的八个问题
如果时间有限,至少把这八个问题问完:
- 当前版本的支持截止日期是哪天?
- 安全修复覆盖哪些版本,是否包括上一个稳定版?
- 漏洞公告通过什么渠道发布,多久更新一次?
- 能否提供 SBOM、修复版本号和漏洞公告链接?
- 兼容矩阵覆盖哪些操作系统、数据库、客户端和信创组合?
- 跨版本升级是否支持,失败后怎么回滚?
- 漏洞应急和升级协助的支持方式、响应时限是什么?
- 合同到期或停止合作后,数据怎么导出、过渡期多长?
FAQ
开源 IM 部署在内网,就不会有安全更新问题吗?
内网只改变了暴露面,没有取消漏洞。客户端仍要更新,账号仍可能被钓鱼,运维终端仍可能成为跳板,第三方组件也仍会爆出漏洞。内网部署的企业更需要自己建立漏洞跟踪和补丁流程,因为外部服务商看不到你的内部环境。
社区版没有 SLA,企业就只能自己承担全部责任吗?
许可证通常会免除贡献者的担保责任,但项目仍可能持续修复漏洞。企业作为部署和运营方,需要对自己的系统安全负责。如果希望把部分责任转移给厂商,就要购买商业支持,并把支持窗口、通知时限和修复协助写进合同。没有合同,口头承诺很难构成可执行的责任。
版本越新越安全吗?
不一定。新版本通常包含最新修复,但也可能带来新的兼容问题。安全判断看的是版本是否在支持窗口内、是否包含当前漏洞的修复、是否经过企业环境验证,而不是版本号大小。对生产系统来说, 受支持且验证过的版本,比盲目追新更可靠。
旧版本还能用,为什么必须升级?
旧版本能用,只说明当前没有遇到问题,不说明它还能获得安全修复。一旦项目停止维护该分支,新披露的漏洞不会有官方补丁,企业只能自己回补或隔离风险。升级前要做好备份、回滚和兼容测试,但不能把还能用当成不用管。
源码开放能替代安全更新吗?
不能。源码开放让企业可以审计和自行修复,但不保证有人持续发现问题、修复主线、回补旧版本和发布公告。安全更新是一套持续运转的流程,源码只是这套流程的前提之一。没有维护团队和响应机制,源码开放反而可能让企业低估风险。
参考资料
- Mattermost. Server Releases. https://docs.mattermost.com/product-overview/mattermost-server-releases
- Mattermost. Release Policy. https://docs.mattermost.com/product-overview/release-policy
- Apache Software Foundation. Apache License, Version 2.0. https://www.apache.org/licenses/LICENSE-2.0
- 工业和信息化部、国家互联网信息办公室、公安部.《网络产品安全漏洞管理规定》解读. http://www.wengan.gov.cn/gk/zdlyxx/dsjgljs/202107/t20210728_76542918.html

635
联系我们
社群交流