H2O是一个支持HTTP/1.x,HTTP/2和HTTP/3协议的HTTP服务器。在版本2.3.0-beta2及之前的版本中,当H2O配置为监听多个地址或端口,并且每个地址或端口使用不同的后端服务器时,一个恶意后端实体有机会观察或注入客户端和H2O之间交换的数据包。攻击者可以通过重定向数据包到与客户端意图不同的地址或端口来误导其他后端的HTTPS请求,并观察发送的HTTPS请求内容。
攻击涉及到一个受害客户端尝试恢复TLS连接,攻击者将数据包重定向到一个不同于客户端所期望的地址或端口。攻击者必须已经由H2O的管理员配置为作为其中一个地址或端口的后端。由H2O生成的会话ID和票据不与服务器地址、端口或X.509证书相关联,因此攻击者可以强制受害连接错误地恢复到同一台H2O实例正在监听的不同服务器地址或端口。
一旦TLS会话被导向到配置为使用攻击者控制的服务器作为后端的服务器地址/端口,根据配置,来自受害客户端的HTTPS请求可能会被转发到攻击者的服务器。
只有当H2O实例配置为使用主机级别的监听指令监听不同地址或端口,并且实例配置为连接由多个实体管理的后端服务器时,该实例才容易受到此攻击。
修补程序可在提交35760540337a47e5150da0f4a66a609fad2ef0ab中获得。作为解决方法,可以停止使用主机级别的监听指令,而改用全局级别的指令。
建议您更新当前系统或软件至最新版,完成漏洞的修复。