CVE-2019-5737: Node.js: Slowloris HTTP Denial of Service with keep-alive
All actively supported release lines are vulnerable and the severity is LOW. An attacker can cause a Denial of Service (DoS) by establishing an HTTP or HTTPS connection in keep-alive mode and by sending headers very slowly thereby keeping the connection and associated resources alive for a long period of time. Attack potential is mitigated by the use of a load balancer or other proxy layer.
Reference: https://nodejs.org/en/blog/vulnerability/february-2019-security-releases/
Other sources
An attacker can cause a Denial of Service (DoS) by establishing an HTTP or HTTPS connection in keep-alive mode and by sending headers very slowly thereby keeping the connection and associated resources alive for a long period of time. Attack potential is mitigated by the use of a load balancer or other proxy layer. This vulnerability is an extension of CVE-2018-12121, addressed in November and impacts all active release lines including 6, 8, 10 and 11.
— Node.Js
Categorization: Uncontrolled Resource Consumption / Denial of Service (CWE-400)
All actively supported release lines are vulnerable and the severity is LOW. An attacker can cause a Denial of Service (DoS) by establishing an HTTP or HTTPS connection in keep-alive mode and by sending headers very slowly thereby keeping the connection and associated resources alive for a long period of time. Attack potential is mitigated by the use of a load balancer or other proxy layer.
This vulnerability is an extension of CVE-2018-12122, addressed in November, 2018. The 40 second timeout and its adjustment by server.headersTimeout apply to this fix as in CVE-2018-12122.
CVE-2018-12122 originally reported by Jan Maybach (liebdich.com), keep-alive variant reported by Marco Pracucci (Voxnest), fixed by Matteo Collina.
All versions of Node.js 6 (LTS "Boron") are vulnerable
All versions of Node.js 8 (LTS "Carbon") are vulnerable
All versions of Node.js 10 (LTS "Dubnium") are vulnerable
All versions of Node.js 11 (Current) are vulnerable
— Node.Js
In Node.js including 6.x before 6.17.0, 8.x before 8.15.1, 10.x before 10.15.2, and 11.x before 11.10.1, an attacker can cause a Denial of Service (DoS) by establishing an HTTP or HTTPS connection in keep-alive mode and by sending headers very slowly. This keeps the connection and associated resources alive for a long period of time. Potential attacks are mitigated by the use of a load balancer or other proxy layer. This vulnerability is an extension of CVE-2018-12121, addressed in November and impacts all active Node.js release lines including 6.x before 6.17.0, 8.x before 8.15.1, 10.x before 10.15.2, and 11.x before 11.10.1.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
redhat/nodejsto a version that resolves this vulnerability.Fixed in 6.17.0 - Upgrade
Upgrade
redhat/nodejsto a version that resolves this vulnerability.Fixed in 8.15.1 - Upgrade
Upgrade
redhat/nodejsto a version that resolves this vulnerability.Fixed in 10.15.2 - Upgrade
Upgrade
redhat/nodejsto a version that resolves this vulnerability.Fixed in 11.10.1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.17.0Fixed in 8.15.1Fixed in 10.15.2Fixed in 11.10.1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.15.2 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 11.10.1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.17.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 8.15.1 - Upgrade
Upgrade
alpine/nodejsto a version that resolves this vulnerability.Fixed in 10.15.3-r0 - Upgrade
Upgrade
alpine/nodejs-currentto a version that resolves this vulnerability.Fixed in 11.10.1-r0 - Upgrade
Upgrade
Node.jsto a version that resolves this vulnerability.Fixed in 6.17.0 - Upgrade
Upgrade
Node.jsto a version that resolves this vulnerability.Fixed in 8.15.1 - Upgrade
Upgrade
Node.jsto a version that resolves this vulnerability.Fixed in 10.15.2 - Upgrade
Upgrade
Node.jsto a version that resolves this vulnerability.Fixed in 11.10.1 - Configuration
Use the 40 second headers timeout; adjust it with server.headersTimeout as appropriate for the fix.
Node.js HTTP/HTTPS server server.headersTimeout = 40 seconds - Compensating control
Place a load balancer or other proxy layer in front of Node.js to mitigate slow keep-alive header attacks.
Event History
Parent advisories
This vulnerability appears in the following advisories.
Frequently Asked Questions
What is the severity of CVE-2019-5737?
CVE-2019-5737 has a Moderate severity rating due to its potential to cause Denial of Service (DoS).
How do I fix CVE-2019-5737?
To fix CVE-2019-5737, upgrade Node.js to version 6.17.0, 8.15.1, 10.15.2, or 11.10.1 or later.
Which versions of Node.js are affected by CVE-2019-5737?
CVE-2019-5737 affects Node.js versions before 6.17.0, 8.15.1, 10.15.2, and 11.10.1.
What type of vulnerability is CVE-2019-5737?
CVE-2019-5737 is a Denial of Service (DoS) vulnerability that can be triggered by slow HTTP header transmission.
Can CVE-2019-5737 be exploited remotely?
Yes, CVE-2019-5737 can be exploited remotely by sending headers slowly over a keep-alive connection.