CVE-2020-11080: Denial of service in nghttp2
A resource consumption vulnerability was found in nghttp2. This flaw allows an attacker to repeatedly construct an overly large HTTP/2 SETTINGS frame with a length of 14,400 bytes that causes excessive CPU usage, leading to a denial of service.
Other sources
In nghttp2 before version 1.41.0, if an overly large HTTP/2 SETTINGS frame with a length of 14,400 bytes is repeatedly constructed it can cause the CPU to spike to 100% and cause a DoS.
— Red Hat
In nghttp2 before version 1.41.0, the overly large HTTP/2 SETTINGS frame payload causes denial of service. The proof of concept attack involves a malicious client constructing a SETTINGS frame with a length of 14,400 bytes (2400 individual settings entries) over and over again. The attack causes the CPU to spike at 100%. nghttp2 v1.41.0 fixes this vulnerability. There is a workaround to this vulnerability. Implement nghttp2onframerecvcallback callback, and if received frame is SETTINGS frame and the number of settings entries are large (e.g., > 32), then drop the connection.
Receiving unreasonably large HTTP/2 SETTINGS frames can consume 100% CPU to process all the settings, blocking all other activities until complete.
The HTTP/2 session frame is limited to 32 settings by default. This can be configured if necessary using the maxSettings option.
— Node.Js
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
redhat/jbcs-httpd24-curlto a version that resolves this vulnerability.Fixed in 0:7.64.1-36.jbcs.el6 - Upgrade
Upgrade
redhat/jbcs-httpd24-httpdto a version that resolves this vulnerability.Fixed in 0:2.4.37-57.jbcs.el6 - Upgrade
Upgrade
redhat/jbcs-httpd24-nghttp2to a version that resolves this vulnerability.Fixed in 0:1.39.2-25.jbcs.el6 - Upgrade
Upgrade
redhat/jbcs-httpd24-curlto a version that resolves this vulnerability.Fixed in 0:7.64.1-36.jbcs.el7 - Upgrade
Upgrade
redhat/jbcs-httpd24-httpdto a version that resolves this vulnerability.Fixed in 0:2.4.37-57.jbcs.el7 - Upgrade
Upgrade
redhat/jbcs-httpd24-nghttp2to a version that resolves this vulnerability.Fixed in 0:1.39.2-25.jbcs.el7 - Upgrade
Upgrade
redhat/jbcs-httpd24-openssl-pkcs11to a version that resolves this vulnerability.Fixed in 0:0.4.10-7.jbcs.el7 - Upgrade
Upgrade
redhat/servicemesh-proxyto a version that resolves this vulnerability.Fixed in 0:1.0.10-3.el8 - Upgrade
Upgrade
redhat/servicemesh-proxyto a version that resolves this vulnerability.Fixed in 0:1.1.2-3.el8 - Upgrade
Upgrade
redhat/nghttp2to a version that resolves this vulnerability.Fixed in 0:1.33.0-3.el8_2.1 - Upgrade
Upgrade
redhat/nghttp2to a version that resolves this vulnerability.Fixed in 0:1.33.0-1.el8_0.2 - Upgrade
Upgrade
redhat/nghttp2to a version that resolves this vulnerability.Fixed in 0:1.33.0-3.el8_1.1 - Upgrade
Upgrade
redhat/httpd24-nghttp2to a version that resolves this vulnerability.Fixed in 0:1.7.1-8.el6.1 - Upgrade
Upgrade
redhat/httpd24-nghttp2to a version that resolves this vulnerability.Fixed in 0:1.7.1-8.el7.1 - Upgrade
Upgrade
redhat/rh-nodejs12-nodejsto a version that resolves this vulnerability.Fixed in 0:12.18.2-1.el7 - Upgrade
Upgrade
redhat/rh-nodejs10-nodejsto a version that resolves this vulnerability.Fixed in 0:10.21.0-3.el7 - Upgrade
Upgrade
debian/nodejsto a version that resolves this vulnerability.Fixed in 10.21.0~dfsg-1Fixed in 12.18.0~dfsg-1Fixed in 10.21.0~dfsg-1~deb10u1 - Upgrade
Upgrade
debian/nghttp2to a version that resolves this vulnerability.Fixed in 1.36.0-2+deb10u2Fixed in 1.43.0-1Fixed in 1.52.0-1Fixed in 1.58.0-1 - Upgrade
Upgrade
debian/nodejsto a version that resolves this vulnerability.Fixed in 10.24.0~dfsg-1~deb10u1Fixed in 10.24.0~dfsg-1~deb10u3Fixed in 12.22.12~dfsg-1~deb11u4Fixed in 18.13.0+dfsg1-1 - Upgrade
Upgrade
redhat/nghttp2to a version that resolves this vulnerability.Fixed in 1.41.0 - Upgrade
Upgrade
redhat/nodeto a version that resolves this vulnerability.Fixed in 10.21.0 - Upgrade
Upgrade
redhat/nodeto a version that resolves this vulnerability.Fixed in 12.18.0 - Upgrade
Upgrade
redhat/nodeto a version that resolves this vulnerability.Fixed in 14.4.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.21.0Fixed in 12.18.0Fixed in 14.4.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.21.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 12.18.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 14.4.0 - Upgrade
Upgrade
alpine/nghttp2to a version that resolves this vulnerability.Fixed in 1.39.2-r1 - Upgrade
Upgrade
alpine/nghttp2to a version that resolves this vulnerability.Fixed in 1.40.0-r1 - Upgrade
Upgrade
alpine/nghttp2to a version that resolves this vulnerability.Fixed in 1.41.0-r0 - Upgrade
Upgrade
alpine/nghttp2to a version that resolves this vulnerability.Fixed in 1.35.1-r2 - Upgrade
Upgrade
alpine/nodejsto a version that resolves this vulnerability.Fixed in 12.20.1-r0 - Upgrade
Upgrade
alpine/nodejsto a version that resolves this vulnerability.Fixed in 12.18.3-r0 - Upgrade
Upgrade
alpine/nodejsto a version that resolves this vulnerability.Fixed in 12.18.0-r0 - Upgrade
Upgrade
alpine/nodejs-currentto a version that resolves this vulnerability.Fixed in 14.4.0-r0 - Upgrade
Upgrade
nghttp2to a version that resolves this vulnerability.Fixed in 1.41.0 - Configuration
Configure maxSettings to limit HTTP/2 SETTINGS frames to 32 settings entries.
nghttp2 maxSettings = 32
Event History
Parent advisories
This vulnerability appears in the following advisories.
- RHSA-2020:2644
- RHSA-2020:2524
- RHSA-2020:2523
- RHSA-2020:2848
- RHSA-2020:2852
- RHSA-2020:2755
- RHSA-2020:3042
- RHSA-2020:2850
- RHSA-2020:2847
- RHSA-2020:2849
- RHSA-2020:2823
- RHSA-2020:2646
- RHSA-2020:2784
- RHSA-2020:2895
- RHSA-2020:3084
- nodejs-june-2020-security-releases
- nodejs-release-v10.21.0
- nodejs-release-v12.18.0
- nodejs-release-v14.4.0
Frequently Asked Questions
What is the severity of CVE-2020-11080?
The severity of CVE-2020-11080 is classified as a denial of service vulnerability due to excessive CPU consumption.
How do I fix CVE-2020-11080?
To fix CVE-2020-11080, update nghttp2 to version 1.41.0 or later.
Which versions of nghttp2 are affected by CVE-2020-11080?
CVE-2020-11080 affects nghttp2 versions prior to 1.41.0.
What type of vulnerability is CVE-2020-11080?
CVE-2020-11080 is a resource consumption vulnerability allowing for denial of service.
Is this vulnerability specific to certain operating systems or distributions?
Yes, CVE-2020-11080 affects multiple Red Hat and Debian distributions.