HAProxy发现易受关键HTTP请求走私攻击

HAProxy是一种广泛使用的开源负载平衡器和代理服务器,它暴露了一个严重的安全漏洞,对手可能会利用该漏洞走私HTTP请求,导致未经授权访问敏感数据和执行任意命令,从而有效地打开了一系列攻击的大门
作为CVE-2021-40346跟踪,整数溢出漏洞在CVSS评分系统上的严重性等级为8.6,并已在HAProxy版本2.0.25、2.2.17、2.3.14和2.4.4中得到纠正
HTTP请求走私,顾名思义,是一种web应用程序攻击,篡改网站处理从多个用户接收的HTTP请求序列的方式。这种技术也被称为HTTP去同步,它利用解析前端服务器和后端服务器处理发件人请求时的不一致性
前端服务器通常是负载平衡器或反向代理,网站使用它们通过单个连接管理一系列入站HTTP请求,并将它们转发到一个或多个后端服务器。因此,在两端正确处理请求是至关重要的,这样服务器就可以确定一个请求的结束和下一个请求的开始,如果失败,可能会导致附加到一个请求的恶意内容被添加到下一个请求的开始
换句话说,由于前端和后端服务器如何使用内容长度和传输编码头计算每个请求的开始和结束,因此错误计算了恶意HTTP请求的结束,使恶意内容未经一台服务器处理,但以链中下一个入站请求的开头为前缀
“攻击是通过利用一个整数溢出漏洞实现的,该漏洞允许在解析HTTP请求时在HAProxy中达到意外状态—;特别是在处理内容长度头的逻辑中,—;”,JFrog Security的研究人员在周二发布的一份报告中说
在潜在的真实攻击场景中,该漏洞可用于触发HTTP请求走私攻击,目的是绕过HAProxy定义的ACL(又名访问控制列表)规则,该规则允许用户定义阻止恶意请求的自定义规则
在负责任的披露之后,HAProxy通过为名称和值长度添加大小检查来弥补这一缺陷。HAProxy的创始人兼首席开发者威利·塔罗(Willy Tarreau)在9月3日推出的GitHub提交中指出:“作为一项缓解措施,验证任何消息中不存在超过一个这样的[内容长度]头就足够了。”
建议无法升级到上述软件版本的客户将以下代码片段添加到代理的配置中,以减轻攻击—
如果{req.hdr_cnt(内容长度)gt 1}
[UNK]а{res.hdr_cnt(内容长度)gt 1}