HTTP/2 Server 多个拒绝服务漏洞安全通告
发布时间 2019-08-14• 漏洞编号和级别
CVE编号:CVE-2019-9512,危险级别:高危,CVSS分值:官方未评定
CVE编号:CVE-2019-9513,危险级别:高危,CVSS分值:官方未评定
CVE编号:CVE-2019-9514,危险级别:高危,CVSS分值:官方未评定
CVE编号:CVE-2019-9515,危险级别:高危,CVSS分值:官方未评定
CVE编号:CVE-2019-9516,危险级别:高危,CVSS分值:官方未评定
CVE编号:CVE-2019-9517,危险级别:高危,CVSS分值:官方未评定
CVE编号:CVE-2019-9518,危险级别:高危,CVSS分值:官方未评定
• 影响版本
受影响的版本
适用于HTTP/2协议
• 漏洞概述
HTTP/2(Hypertext Transfer Protocol Version 2)无疑是下一代互联网加速技术的基石与方向,自诞生以来经历了00~17 共 18 版草案,目前,已经拥有了明确的RFC标准:RFC 7540和RFC 7541。 目前支持 HTTP/2 的浏览器有 Chrome 41+、Firefox 36+、Safari 9+、Windows 10 上的 IE 11 和 Edge。服务器方面则有 F5、H2O、nghttp2 等数十种选择,各种语言实现的都有。
HTTP/2实现过程中容易受到各种拒绝服务(DoS)攻击,具体如下:
攻击者通过多个流从指定资源请求大量数据。它们操纵窗口大小和流优先级以强制服务器以1字节块的形式对数据进行排队。根据此数据排队的效率,这可能会消耗过多的CPU,内存或两者,从而可能导致拒绝服务。
CVE-2019-9512
攻击者向HTTP/2对等体发送连续ping,导致对等体构建内部响应队列。根据此数据排队的效率,这可能会消耗过多的CPU,内存或两者,从而可能导致拒绝服务。
攻击者创建多个请求流,并以一种导致优先级树大量流失的方式不断地改变流的优先级。这可能会消耗过多的CPU,可能导致拒绝服务。
攻击者打开多个流,并在每个流上发送一个无效请求,该请求应该从对等方请求RST_STREAM帧流。根据对等体如何对RST_STREAM帧进行排队,这会消耗过多的内存,CPU或两者,从而可能导致拒绝服务。
攻击者向对等体发送SETTINGS帧流。由于RFC要求对等体回复每个SETTINGS帧有一个确认,因此空的SETTINGS帧在行为上与ping几乎相同。根据此数据排队的效率,这可能会消耗过多的CPU,内存或两者,从而可能导致拒绝服务。
CVE-2019-9516
攻击者发送带有0长度头名称和0长度头部值的头部流,可选地将霍夫曼编码为1字节或更大的头部。某些实现为这些头分配内存并使分配保持活动直到会话终止。这可能会消耗过多的内存,可能导致拒绝服务。
攻击者打开HTTP/2窗口,以便对等体可以无限制地发送。但是,它们会使TCP窗口关闭,因此对等体实际上无法在线路上写入(许多)字节。然后,攻击者发送大量响应对象的请求流,根据服务器对响应进行排队的方式,这可能会消耗过多的内存,CPU或两者,从而可能导致拒绝服务。
攻击者发送一个具有空载荷且没有流末尾标志的帧流。这些帧可以是DATA,HEADERS,CONTINUATION和/或PUSH_PROMISE。对等体花费时间处理每个帧与攻击带宽不成比例。这可能会消耗过多的CPU,可能导致拒绝服务。
• 漏洞验证
暂无POC/EXP。
• 修复建议
Microsoft:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-9513https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-9512
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-9511
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-9518;
http://nginx.org/en/CHANGES
https://support.apple.com/en-us/HT210436
• 参考链接
https://kb.cert.org/vuls/id/605641/


京公网安备11010802024551号