CVE-2024-27983 Race condition in Node
An attacker can cause a denial of service in Node.js HTTP/2 servers by exploiting a race condition during connection closure.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2024-27983?
CVE-2024-27983 is a high-severity vulnerability in NodeJS Node, published on 9 Apr 2024. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
An attacker can make the Node.js HTTP/2 server completely unavailable by sending a small amount of HTTP/2 frames packets with a few HTTP/2 frames inside. It is possible to leave some data in nghttp2 memory after reset when headers with HTTP/2 CONTINUATION frame are sent to the server and then a TCP connection is abruptly closed by the client triggering the Http2Session destructor while header frames are still being processed (and stored in memory) causing a race condition.
Weakness: CWE-362
Which versions are affected by CVE-2024-27983?
2 open source packages ship an affected version, including node and node-min.
| Package | Affected | Fixed in |
|---|---|---|
node Bitnami | All versions | 18.20.1, 20.12.1, 21.7.2 |
node-min Bitnami | All versions | 18.20.1, 20.12.1, 21.7.2 |
Linux distribution packages (38)
nodejs Red Hat:rhel_aus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-debuginfo Red Hat:rhel_aus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-debugsource Red Hat:rhel_aus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-devel Red Hat:rhel_aus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-docs Red Hat:rhel_aus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-full-i18n Red Hat:rhel_aus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-nodemon Red Hat:rhel_aus:8.6::appstream | All versions | 0:3.0.1-1.module+el8.6.0+19765+366b9144 |
nodejs-packaging Red Hat:rhel_aus:8.6::appstream | All versions | 0:26-1.module+el8.6.0+19856+c0c87259 |
npm Red Hat:rhel_aus:8.6::appstream | All versions | 1:8.19.4-1.16.20.2.5.module+el8.6.0+21811+5a4561ff |
nodejs Red Hat:rhel_e4s:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-debuginfo Red Hat:rhel_e4s:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-debugsource Red Hat:rhel_e4s:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-devel Red Hat:rhel_e4s:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-docs Red Hat:rhel_e4s:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-full-i18n Red Hat:rhel_e4s:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-nodemon Red Hat:rhel_e4s:8.6::appstream | All versions | 0:3.0.1-1.module+el8.6.0+19765+366b9144 |
nodejs-packaging Red Hat:rhel_e4s:8.6::appstream | All versions | 0:26-1.module+el8.6.0+19856+c0c87259 |
npm Red Hat:rhel_e4s:8.6::appstream | All versions | 1:8.19.4-1.16.20.2.5.module+el8.6.0+21811+5a4561ff |
nodejs Red Hat:rhel_eus:8.8::appstream | All versions | 1:16.20.2-4.module+el8.8.0+21791+70c4808d.1 |
nodejs-debuginfo Red Hat:rhel_eus:8.8::appstream | All versions | 1:16.20.2-4.module+el8.8.0+21791+70c4808d.1 |
nodejs-debugsource Red Hat:rhel_eus:8.8::appstream | All versions | 1:16.20.2-4.module+el8.8.0+21791+70c4808d.1 |
nodejs-devel Red Hat:rhel_eus:8.8::appstream | All versions | 1:16.20.2-4.module+el8.8.0+21791+70c4808d.1 |
nodejs-docs Red Hat:rhel_eus:8.8::appstream | All versions | 1:16.20.2-4.module+el8.8.0+21791+70c4808d.1 |
nodejs-full-i18n Red Hat:rhel_eus:8.8::appstream | All versions | 1:16.20.2-4.module+el8.8.0+21791+70c4808d.1 |
nodejs-nodemon Red Hat:rhel_eus:8.8::appstream | All versions | 0:3.0.1-1.module+el8.8.0+19764+7eed1ca3 |
nodejs-packaging Red Hat:rhel_eus:8.8::appstream | All versions | 0:26-1.module+el8.8.0+19857+6d2a104d |
npm Red Hat:rhel_eus:8.8::appstream | All versions | 1:8.19.4-1.16.20.2.4.module+el8.8.0+21791+70c4808d.1 |
rh-nodejs14-nodejs Red Hat:rhel_software_collections:3::el7 | All versions | 0:14.21.3-7.el7 |
rh-nodejs14-nodejs-debuginfo Red Hat:rhel_software_collections:3::el7 | All versions | 0:14.21.3-7.el7 |
rh-nodejs14-nodejs-devel Red Hat:rhel_software_collections:3::el7 | All versions | 0:14.21.3-7.el7 |
rh-nodejs14-nodejs-docs Red Hat:rhel_software_collections:3::el7 | All versions | 0:14.21.3-7.el7 |
rh-nodejs14-nodejs-full-i18n Red Hat:rhel_software_collections:3::el7 | All versions | 0:14.21.3-7.el7 |
rh-nodejs14-npm Red Hat:rhel_software_collections:3::el7 | All versions | 0:6.14.18-14.21.3.7.el7 |
nodejs Red Hat:rhel_tus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-debuginfo Red Hat:rhel_tus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-debugsource Red Hat:rhel_tus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-devel Red Hat:rhel_tus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
nodejs-docs Red Hat:rhel_tus:8.6::appstream | All versions | 1:16.20.2-5.module+el8.6.0+21811+5a4561ff |
How do I fix CVE-2024-27983?
Upgrade node to a fixed version for your release line: 18.20.1, 20.12.1 or 21.7.2.
Is CVE-2024-27983 being exploited?
There is no known exploitation of CVE-2024-27983 in the wild and no public exploit code.
Public exploit code: 1 proofs of concept on GitHub.
Sources
Also known as ALPINE-CVE-2024-27983, AZL-39584, AZL-39587, BELL-CVE-2024-27983, BIT-node-2024-27983, BIT-node-min-2024-27983 and 9 more.