CVE-2025-54315CVE-2025-54315是Matrix去中心化实时通信协议规范中的一个高危安全漏洞。该漏洞存在于Matrix协议规范1.16版本之前(即房间版本号小于12的实现中),核心问题在于协议规范缺乏对"创建事件"(create event)唯一性的强制校验机制。Matrix协议使用事件图(event graph)来维护房间状态,房间创建时会产生一个create事件,该事件定义了房间的创建者、房间类型等关键属性。在存在缺陷的规范中,由于缺乏对create事件唯一性的验证,恶意攻击者可以在房间状态解析过程中注入伪造的create事件,从而篡改房间的初始状态信息,包括房间创建者身份等关键属性。此漏洞的CVSS 3.1评分为7.1,属于高危级别,其攻击向量为网络攻击,需要低权限认证,无需用户交互,影响范围已改变(Scope Changed),对完整性造成高影响,对可用性造成低影响。该漏洞影响了所有使用Matrix协议规范1.16之前版本的兼容实现,包括各种Matrix homeserver软件、客户端应用以及桥接服务等。Matrix项目团队已在2025年8月通过"Project Hydra"项目发布了改进的状态解析机制,并在1.16版本规范中修复了该问题。
Matrix协议采用基于事件的有向无环图(DAG)结构来维护房间状态。每个房间都有一个"create"事件作为状态图的根节点,定义了房间的初始属性,包括创建者(sender字段)、房间类型、版本号等关键信息。在正常的协议实现中,create事件应当具有唯一性,因为一个房间只能被创建一次。然而,在Matrix协议规范1.16之前的版本中(即房间版本小于12),状态解析算法(state resolution algorithm)并未对create事件的唯一性进行强制校验。
攻击者利用此漏洞的方式如下:
1. 攻击者首先需要获得房间的访问权限(低权限即可),这可以通过加入房间或拥有有效认证令牌实现。
2. 攻击者构造一个恶意的create事件,该事件具有与原始create事件不同的sender字段(伪造的创建者身份),但保持相同的room_id和state_key。
3. 攻击者将该恶意create事件发送到房间。由于规范缺乏唯一性校验,该事件可能被状态解析算法接受并合并到房间状态中。
4. 在后续的状态解析过程中,由于不同homeserver可能持有不同的状态视图,恶意create事件可能在某些服务器上覆盖原始的合法create事件,导致房间的创建者身份被篡改。
5. 攻击成功后,攻击者可以冒充房间的合法创建者,执行只有创建者才能执行的操作,如修改房间权限设置、踢出原创建者等。
该漏洞的根本原因在于状态解析算法在处理create事件时,仅依赖事件哈希和深度等属性进行比较,而未验证create事件的sender字段是否与已知的合法创建者一致。Matrix项目通过"Project Hydra"改进了状态解析算法,在1.16版本规范中引入了create事件唯一性校验机制,要求所有create事件必须具有相同的sender字段,从而修复了此漏洞。