CVE-2019-5737: Node.js: Slowloris HTTP Denial of Service with keep-alive

Published Feb 28, 2019
·
Updated

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

46 affected componentsFixes available
redhat/nodejs<6.17.0
6.17.0
redhat/nodejs<8.15.1
8.15.1
redhat/nodejs<10.15.2
10.15.2
redhat/nodejs<11.10.1
11.10.1
Nodejs Node.js>=6.0.0<6.17.0
Nodejs Node.js>=8.0.0<8.15.1
Nodejs Node.js>=10.0.0<10.15.2
Nodejs Node.js>=11.0.0<11.10.1
openSUSE Leap=42.3
Nodejs Node.js>=11.0.0<11.10.1
Node.js Node.js>=6.0.0<6.17.0, >=8.0.0<8.15.1, >=10.0.0<10.15.2, >=11.0.0<11.10.1
6.17.08.15.110.15.211.10.1
Node.js Node.js>=10.0.0<10.15.2
10.15.2
Node.js Node.js>=11.0.0<11.10.1
11.10.1
Node.js Node.js>=6.0.0<6.17.0
6.17.0
Node.js Node.js>=8.0.0<8.15.1
8.15.1
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs<10.15.3-r0
10.15.3-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0
alpine/nodejs-current<11.10.1-r0
11.10.1-r0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade redhat/nodejs to a version that resolves this vulnerability.

    Fixed in 6.17.0
  2. Upgrade

    Upgrade redhat/nodejs to a version that resolves this vulnerability.

    Fixed in 8.15.1
  3. Upgrade

    Upgrade redhat/nodejs to a version that resolves this vulnerability.

    Fixed in 10.15.2
  4. Upgrade

    Upgrade redhat/nodejs to a version that resolves this vulnerability.

    Fixed in 11.10.1
  5. 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
  6. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 10.15.2
  7. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 11.10.1
  8. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 6.17.0
  9. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 8.15.1
  10. Upgrade

    Upgrade alpine/nodejs to a version that resolves this vulnerability.

    Fixed in 10.15.3-r0
  11. Upgrade

    Upgrade alpine/nodejs-current to a version that resolves this vulnerability.

    Fixed in 11.10.1-r0
  12. Upgrade

    Upgrade Node.js to a version that resolves this vulnerability.

    Fixed in 6.17.0
  13. Upgrade

    Upgrade Node.js to a version that resolves this vulnerability.

    Fixed in 8.15.1
  14. Upgrade

    Upgrade Node.js to a version that resolves this vulnerability.

    Fixed in 10.15.2
  15. Upgrade

    Upgrade Node.js to a version that resolves this vulnerability.

    Fixed in 11.10.1
  16. 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
  17. Compensating control

    Place a load balancer or other proxy layer in front of Node.js to mitigate slow keep-alive header attacks.

Event History

Feb 28, 2019
CVE Published
via Node.js·12:00 AM
Data Sourced
via Node.js·12:00 AM
DescriptionSeverityWeaknessAffected Software
Mar 28, 2019
CVE Published
via MITRE·04:20 PM
Data Sourced
via MITRE·04:20 PM
DescriptionWeakness
Data Sourced
via NVD·05:29 PM
DescriptionSeverityWeaknessAffected Software
Data Sourced
via OSV·05:29 PM
DescriptionSeverityAffected Software

Frequently Asked Questions

1

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).

2

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.

3

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.

4

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.

5

Can CVE-2019-5737 be exploited remotely?

Yes, CVE-2019-5737 can be exploited remotely by sending headers slowly over a keep-alive connection.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203