CVE-2026-31842Tinyproxy 1.11.3及之前版本存在HTTP请求解析去同步漏洞。漏洞源于src/reqs.c中is_chunked_transfer()函数使用strcmp对Transfer-Encoding头进行大小写敏感比较,违反了RFC 7230规范。未认证攻击者可发送包含特定大小写Transfer-Encoding头的请求,导致Tinyproxy误判请求体长度,跳过数据读取直接进入TCP转发模式。这会导致后端服务器连接挂起,引发拒绝服务攻击,或在特定部署下绕过请求体安全检查。
该漏洞位于Tinyproxy的请求解析逻辑中。在处理HTTP头时,is_chunked_transfer()函数利用strcmp()检查Transfer-Encoding字段值是否为“chunked”。由于strcmp区分大小写,当攻击者发送“Transfer-Encoding: Chunked”(首字母大写)时,函数返回假值。Tinyproxy随后将content_length.client设为-1,跳过pull_client_data_chunked()函数,未读取缓冲区中的请求体数据,直接将头部转发至上游并切换至relay_connection()状态。对于符合RFC标准的后端(如Nginx、Node.js),收到头部后会持续等待分块传输的实体数据。由于Tinyproxy已停止读取客户端数据并仅进行原始TCP转发,连接将无限期挂起,导致后端工作线程耗尽,实现拒绝服务。此外,若Tinyproxy用于内容过滤,未检查的请求体可能被直接转发,导致安全机制失效。