严重性: 高 (CVSS 7.5)
CWE: 400 – 不受控制的资源消耗 (资源耗尽),
CWE: CWE-770 – 无限制或无节流的资源分配
状态: 已修复
确认受影响: CryptPad 2025.3.1
CSAF草案中的受影响范围: >=2025.3.1, <2026.2.1
修复版本说明: 协调员草案当前引用2026.2.1。CryptPad后来表示,由于2026.2.1存在版本问题,2026.2.2才是实际正确的漏洞修复版本。操作员应确认最终发布的CISA公告和CryptPad发行说明中的修复版本。
image
CryptPad的WebSocket实现虽然对单个帧施加了限制,但未能充分强制对每个连接处理的数据总量和分片数量进行累积限制。
根据RFC 6455,WebSocket消息可以跨多个帧拆分。在受影响版本中,重复的有效帧或经过分片的消息可能导致服务器端资源过度消耗。
远程未经身份验证的攻击者可能利用此行为降级或拒绝为合法用户提供服务。测试中,这导致了高CPU和内存使用、CryptPad UI无响应、文档/会话加载失败,以及高负载下的服务终止。
image
该问题由WebSocket处理路径中累积资源核算不足引起。虽然单个帧可能受到大小检查,但服务器仍然处理重复的有效帧或分片,而缺乏有效的每连接累积限制。
在实验室测试中,使用了若干看似无害的WebSocket流量模式来验证该问题:
这些测试表明,CryptPad在处理各自看似有效的流量时持续消耗资源。在更重的实验室负载下,服务变得不可用,系统日志显示由于内存耗尽导致进程终止。
完整的压力测试脚本未发布,以避免被用于攻击生产环境中的CryptPad实例。
image
本公告有意仅包含非武器化的复现方法描述。
从高层来看,该问题可以在受控实验室中通过以下步骤复现:
不包含任何公开的利用或洪流脚本。
image
因此,攻击者可以打开一个WebSocket连接,并发送数百甚至数千个帧(每个都在允许的大小限制内),直到服务器缓冲并处理了海量数据。尽管每个帧本身看起来“合法”,但累积效应是服务器的内存和CPU在处理每个分片时被消耗。
远程未经身份验证的攻击者可能:
image
>=2025.3.1, <2026.2.11e0c06ad8a0c5dab795f85f9730ec2693320c62eimage
操作员应升级到最终CISA公告和CryptPad发行说明中指定的修复版本。
额外的纵深防御缓解措施包括:
image
CryptPad确认了拒绝服务情况。厂商表示,已在旗舰实例的nginx端实施了应对措施,并正在向示例配置和服务器逻辑添加额外更改。CryptPad还提到了一个更广泛的服务器重构,旨在包含这些应对措施。
CryptPad后来提供了PR #2239作为公开修复引用,并指出在2026.2.1出现版本问题后,修正后的漏洞修复版本为2026.2.2。
image
该问题被正确归类为高严重性拒绝服务漏洞。攻击无需身份验证,可通过有效的WebSocket流量模式耗尽服务器资源,导致服务完全不可用。
image
测试仅在受控环境中进行。本公告不包含武器化的洪流脚本或完整的复现工具。
image
John Perifanis
安全研究员
联系方式: https://www.linkedin.com/in/ioannis-p-9081842b9