天下漏洞,尽知其名
HIGH

CVE-2026-102556 libsoup WebSocket Pong 帧堆破坏漏洞

影响攻击者可触发堆内存破坏或进程崩溃

AI 研判

libsoup 在处理传入的 WebSocket Pong 帧时存在类型混淆缺陷。SoupWebsocketConnection 在发出 ::pong 信号时传入的是 GByteArray 指针,而该信号声明应传递 GBytes。遵循文档 GBytes API 编写处理函数的应用在收到构造的 Pong 帧后可能发生堆破坏或崩溃。

影响范围

libsoup

受影响版本范围暂无公开信息,涉及 libsoup 的 WebSocket 功能组件。

漏洞详情

漏洞类型为类型混淆导致的内存破坏。成因是信号发射时实际参数类型(GByteArray)与信号声明类型(GBytes)不一致,二者内存布局与引用计数语义不同。攻击者只需向使用 libsoup 的 WebSocket 客户端或服务端发送特制 Pong 帧,即可使按文档实现 GBytes 处理逻辑的应用发生越界访问、堆破坏或崩溃。

利用条件与风险

利用前提是目标应用使用 libsoup 的 WebSocket 功能并连接了 ::pong 信号处理函数,且攻击者能向其发送 WebSocket 帧。实战中可导致拒绝服务,并存在进一步内存破坏利用的可能。

修复建议

建议关注 libsoup 官方发布的修复版本并及时升级;暂无公开信息说明具体补丁版本。临时缓解措施包括避免在 ::pong 信号处理函数中直接按 GBytes 语义使用参数,或限制不可信来源的 WebSocket 连接。

原始情报

A flaw was found in libsoup. When handling an incoming WebSocket Pong frame, SoupWebsocketConnection emitted the ::pong signal with a GByteArray pointer even though the signal is declared to pass a GBytes. Applications connecting a handler that follows the documented GBytes API can trigger heap corruption or a crash upon receiving a crafted Pong.