CVE-2026-102558 libsoup 堆缓冲区溢出漏洞
影响攻击者可触发堆缓冲区溢出,可能导致拒绝服务或代码执行
libsoup 的 SoupWebsocketConnection 在处理 WebSocket 帧时存在堆缓冲区溢出漏洞。当 max-incoming-payload-size 被设置为 0(不限制)时,接收缓冲区会依据攻击者控制的帧长度增长,直至长度回绕,从而在读取帧数据时发生堆溢出。
影响范围
受影响版本范围暂无公开信息,涉及启用 WebSocket 且将 max-incoming-payload-size 配置为 0 的 libsoup 使用场景。
漏洞详情
漏洞类型为堆缓冲区溢出(CWE-122)。成因是 WebSocket 帧长度由攻击者控制,在无上限配置下缓冲区长度计算发生整数回绕,导致分配空间不足。攻击者可通过发送特制 WebSocket 帧触发越界写入,进而造成内存破坏。
利用条件与风险
利用前提是目标使用 libsoup 的 WebSocket 功能并将 max-incoming-payload-size 设为 0,攻击者需能建立 WebSocket 连接。实战中可导致服务崩溃,是否可稳定实现代码执行取决于具体环境。
修复建议
建议关注 libsoup 官方发布的修复版本并及时升级;临时缓解措施为避免将 max-incoming-payload-size 设置为 0,改为设置合理的上限值。
A flaw was found in libsoup. When max-incoming-payload-size is unlimited (0), SoupWebsocketConnection could grow its incoming GByteArray based on an attacker-controlled frame length until the length wrapped, causing a heap buffer overflow while reading frame data.