Description
net/http, x/net/http2: close connections when receiving too many headers
An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by sending an excessive number of CONTINUATION frames. Maintaining HPACK state requires parsing and processing all HEADERS and CONTINUATION frames on a connection. When a request's headers exceed MaxHeaderBytes, no memory is allocated to store the excess headers, but they are still parsed. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send. The fix sets a limit on the amount of excess header frames we will process before closing a connection.
Mitigation
Minimal update. May introduce new vulnerabilities or breaking changes.
|
 debian 11 | | =1:0.0+git20210119.5f4716e+dfsg-4 || =1:0.0+git20210805.aaa1db6+dfsg-1 || =1:0.0+git20211209.491a49a+dfsg-1 || =1:0.0+git20211209.491a49a+dfsg-1~bpo11+1 || =1:0.0+git20220225.27dd868+dfsg-1 || =1:0.0+git20220531.c960675+dfsg-1 || =1:0.0+git20220624.1bab6f3+dfsg-1 || =1:0.0+git20220728.c7608f3+dfsg-1 || =1:0.0+git20220728.c7608f3+dfsg-2 || =1:0.0+git20220728.c7608f3+dfsg-2~bpo11+1 || =1:0.0+git20221012.0b7e1fb+dfsg-1 || =1:0.0+git20221012.0b7e1fb+dfsg-1~bpo11+1 || =1:0.1.0+dfsg-1 || =1:0.10.0-1 || =1:0.11.0-1 || =1:0.14.0-1 || =1:0.15.0-1 || =1:0.15.0-2 || =1:0.17.0+dfsg-1 || =1:0.19.0+dfsg-1 || =1:0.20.0+dfsg-1 || =1:0.21.0+dfsg-1 || =1:0.22.0+dfsg-1 || =1:0.23.0+dfsg-1 || =1:0.24.0+dfsg-1 || =1:0.25.0+dfsg-1 || =1:0.26.0+dfsg-1 || =1:0.26.0+dfsg-2 || =1:0.27.0-1 || =1:0.27.0-2 || =1:0.4.0+dfsg-1 || =1:0.47.0-1 || =1:0.47.0-2 || =1:0.53.0-1 || =1:0.53.0-2 || =1:0.7.0+dfsg-1 | - |
 go | | | 0.23.0 |
 go | | >=0 <1.21.9 || >=1.22.0-0 <1.22.2 | 1.21.9, 1.22.2 |
 debian 11 | | =1.15.15-1 || =1.15.15-1~deb11u1 || =1.15.15-1~deb11u2 || =1.15.15-1~deb11u3 || =1.15.15-1~deb11u4 || =1.15.15-2 || =1.15.15-3 || =1.15.15-4 || =1.15.15-5 || =1.15.9-6 | - |
 debian 12 | | =1.19.10-1 || =1.19.10-2 || =1.19.11-1 || =1.19.12-1 || =1.19.12-2 || =1.19.12-2~bpo11+1 || =1.19.12-2~bpo12+1 || =1.19.13-1 || =1.19.13-1~bpo11+1 || =1.19.13-1~bpo12+1 || =1.19.8-2 || =1.19.9-1 | - |
 debian 12 | | =1:0.10.0-1 || =1:0.11.0-1 || =1:0.14.0-1 || =1:0.15.0-1 || =1:0.15.0-2 || =1:0.17.0+dfsg-1 || =1:0.19.0+dfsg-1 || =1:0.20.0+dfsg-1 || =1:0.21.0+dfsg-1 || =1:0.22.0+dfsg-1 || =1:0.23.0+dfsg-1 || =1:0.24.0+dfsg-1 || =1:0.25.0+dfsg-1 || =1:0.26.0+dfsg-1 || =1:0.26.0+dfsg-2 || =1:0.27.0-1 || =1:0.27.0-2 || =1:0.47.0-1 || =1:0.47.0-2 || =1:0.53.0-1 || =1:0.53.0-2 || =1:0.7.0+dfsg-1 | - |
 debian 13 | | | 1:0.23.0+dfsg- |
 debian 14 | | | 1:0.23.0+dfsg- |
 go | | | 1.21.9 |
 go | | | 0.23.0 |