Netflix安全团队与Google,CERT / CC合作,在各种中间件服务中披露HTTP/2协议实施中的分布式拒绝服务攻击漏洞问题。 我们发现(今天修复)的许多攻击媒介是一个关键变体:恶意客户端要求服务器做一些响应行为,但客户端拒绝读取响应。 这将测试服务器的队列管理代码。 根据服务器处理队列的方式,客户端可以在处理请求时强制它消耗过多的内存和CPU。
CVE-2019-9511
攻击者通过多个流从指定资源请求大量数据。它们操纵窗口大小和流优先级以强制服务器以1字节块的形式对数据进行排队。根据此数据排队的效率,这可能会消耗过多的CPU,内存或两者,从而可能导致拒绝服务。
CVE-2019-9512
攻击者向HTTP/2对等体发送连续ping,导致对等体构建内部响应队列。根据此数据排队的效率,这可能会消耗过多的CPU,内存或两者,从而可能导致拒绝服务。
CVE-2019-9513
攻击者创建多个请求流,并以一种导致优先级树大量流失的方式不断地改变流的优先级。这可能会消耗过多的CPU,可能导致拒绝服务。
CVE-2019-9514
攻击者打开多个流,并在每个流上发送一个无效请求,该请求应该从对等方请求RST_STREAM帧流。根据对等体如何对RST_STREAM帧进行排队,这会消耗过多的内存,CPU或两者,从而可能导致拒绝服务。
CVE-2019-9515
攻击者向对等体发送SETTINGS帧流。由于RFC要求对等体回复每个SETTINGS帧有一个确认,因此空的SETTINGS帧在行为上与ping几乎相同。根据此数据排队的效率,这可能会消耗过多的CPU,内存或两者,从而可能导致拒绝服务。
CVE-2019-9516
攻击者发送带有0长度头名称和0长度头部值的头部流,可选地将霍夫曼编码为1字节或更大的头部。某些实现为这些头分配内存并使分配保持活动直到会话终止。这可能会消耗过多的内存,可能导致拒绝服务。
CVE-2019-9517
攻击者打开HTTP/2窗口,以便对等体可以无限制地发送;但是,它们会使TCP窗口关闭,因此对等体实际上无法在线路上写入(许多)字节。然后,攻击者发送大量响应对象的请求流。根据服务器对响应进行排队的方式,这可能会消耗过多的内存,CPU或两者,从而可能导致拒绝服务。
CVE-2019-9518
攻击者发送一个具有空载荷且没有流末尾标志的帧流。这些帧可以是DATA,HEADERS,CONTINUATION和/或PUSH_PROMISE。对等体花费时间处理每个帧与攻击带宽不成比例。这可能会消耗过多的CPU,可能导致拒绝服务。
Nginx已被确认受到影响,并已发布此漏洞的更新。