CVE-2026-2708libsoup是一个用于GNOME桌面环境的HTTP客户端/服务器库。CVE-2026-2708是该库中存在的一个请求 smuggling 漏洞,主要源于HTTP/1头部解析逻辑的缺陷。具体而言,libsoup的`soup_message_headers_append_common()`函数在处理HTTP头部时,无条件地追加每个头部值,未能对重复或冲突的Content-Length字段进行验证。这使得攻击者能够发送包含多个具有不同值的Content-Length头的HTTP请求。尽管该漏洞CVSS评分较低,但在特定环境下,请求走私可能导致安全边界绕过。
该漏洞的技术核心在于libsoup对HTTP/1协议头部解析的实现差异。在`soup-message-headers.c`文件中,`soup_message_headers_append_common()`函数设计上允许同一头部字段多次出现而不做冲突检查。针对HTTP请求中的Content-Length字段,RFC 7230标准要求其值必须唯一且一致。攻击者利用此缺陷,构造包含两个或多个Content-Length字段的恶意请求(例如Content-Length: 0和Content-Length: 100)。当此类请求经过中间代理(如Nginx)到达后端libsoup服务时,由于两者对冲突Content-Length的处理逻辑不同,可能导致请求解析不同步。这种不同步(即Desync攻击)允许攻击者将恶意请求“走私”到后端处理的下一个连接中,从而可能绕过防火墙规则或导致缓存投毒。由于利用需要特定的网络拓扑结构(AC:H),其CVSS评分为3.7,属于低危。