CVE-2026-24332CVE-2026-24332是Discord客户端中的一个信息泄露漏洞,存在于2026年1月16日之前的版本。该漏洞允许攻击者通过WebSocket API请求判断目标用户是否处于"不可见(Invisible)"状态,而不仅仅是离线状态。在正常的Discord协议设计中,当用户设置为"不可见"状态时,客户端UI显示"你将显示为离线",但实际上该状态与真正的离线状态在协议层面存在可区分的差异。具体而言,当用户处于不可见状态时,WebSocket API的presences响应数组中会包含该用户(状态标记为"offline"),而真正的离线用户则不会出现在presences数组中。这种不一致性使得攻击者可以绕过隐私保护机制,精确检测目标用户的真实在线状态,包括那些希望保持匿名的用户。该漏洞影响了Discord的客户端状态同步功能,属于访问控制和信息泄露类安全问题。
该漏洞的技术原理基于Discord WebSocket API的状态同步机制。当用户连接到Discord服务器时,客户端通过WebSocket接收实时的用户状态更新。正常情况下,presences数组用于广播用户的在线状态信息,包括在线、离开、忙碌和离线等状态。漏洞的核心问题在于不可见状态的处理逻辑存在缺陷:当用户A将状态设置为"不可见"后,服务器仍然会在presences响应中包含该用户,但将status字段设置为"offline"。而真正的离线用户B则完全不会出现在presences数组中。攻击者可以利用这一差异构造特定的WebSocket API请求,遍历目标用户列表,通过检查presences数组中是否存在某用户来判断其是否处于不可见状态。具体实现需要攻击者与目标用户处于同一服务器(Guild),或者通过好友关系建立WebSocket连接。攻击者需要发送GUILD_PRESENCES或FRIEND_SUGGESTIONS类型的Gateway事件请求,服务器返回的presences数据将暴露目标用户的真实状态。