漏洞总结:hackney WebSocket 缓冲区限制缺失 漏洞概述 该漏洞存在于 库的 WebSocket 客户端实现中。由于缺乏对接收缓冲区大小的限制,攻击者可以通过发送超大帧或无限流式传输数据,导致客户端内存耗尽(OOM),从而引发拒绝服务(DoS)攻击。 影响范围 受影响组件: 库的 WebSocket 客户端功能。 触发条件: 1. 接收声明了巨大长度的单个帧(RFC 6455 允许长度达到 2^63-1)。 2. 接收未以 终止的超大握手响应。 3. 接收无限流的非最终续传片段(累积数据量无上限)。 修复方案 开发者 提交了修复补丁,主要措施包括: 1. 限制帧大小:默认限制最大帧大小为 16 MiB。 2. 限制消息大小:默认限制最大消息大小为 64 MiB(累积所有片段)。 3. 限制握手响应:限制握手响应大小为 64 KiB。 4. 配置化:允许通过 选项自定义上述限制。 POC 代码 页面底部包含用于测试该漏洞利用的 Erlang 测试代码: