cbcvebase.
CVE-2024-27983
published 2024-04-09

CVE-2024-27983: 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…

PriorityP265high8.2CVSS 3.0
AVNACLPRNUINSUCNILAH
EPSS
87.21%
99.7th percentile
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.

Affected

30 ranges· showing 25
VendorProductVersion rangeFixed in
debiannodejs< nodejs 18.20.4+dfsg-1~deb12u1 (bookworm)nodejs 18.20.4+dfsg-1~deb12u1 (bookworm)
msrcazl3_nodejs_20.10.0-2_on_azure_linux_3.0
msrcazl3_nodejs_20.14.0-1_on_azure_linux_3.0
msrcazure_linux_3.0_arm
msrcazure_linux_3.0_x64
msrccbl2_nodejs18_18.18.2-7_on_cbl_mariner_2.0
msrccbl_mariner_2.0_arm
msrccbl_mariner_2.0_x64
nodejsnode>= 10.0 < 10.*10.*
nodejsnode>= 11.0 < 11.*11.*
nodejsnode>= 12.0 < 12.*12.*
nodejsnode>= 13.0 < 13.*13.*
nodejsnode>= 14.0 < 14.*14.*
nodejsnode>= 15.0 < 15.*15.*
nodejsnode>= 16.0 < 16.*16.*
nodejsnode>= 17.0 < 17.*17.*
nodejsnode>= 18.0 < 18.20.118.20.1
nodejsnode>= 19.0 < 19.*19.*
nodejsnode>= 20.0 < 20.12.120.12.1
nodejsnode>= 21.0 < 21.7.221.7.2
nodejsnode>= 4.0 < 4.*4.*
nodejsnode>= 5.0 < 5.*5.*
nodejsnode>= 6.0 < 6.*6.*
nodejsnode>= 7.0 < 7.*7.*
nodejsnode>= 8.0 < 8.*8.*

Detection & IOCsextracted from sources · hover to see the quote

  • Detect HTTP/2 CONTINUATION frame flood followed by abrupt TCP connection reset targeting Node.js HTTP/2 servers — the attack sends a small number of HTTP/2 frames packets containing HTTP/2 CONTINUATION frames and then abruptly closes the TCP connection
  • Monitor for Node.js process crashes with assertion failure in node::http2::Http2Session::~Http2Session() as a sign of active exploitation
  • Alert on HTTP/2 servers becoming completely unavailable after receiving a small number of HTTP/2 frame packets — exploitation requires only a few frames, making volumetric thresholds ineffective; focus on session destructor crashes
  • Flag insufficient limitations on CONTINUATION frames within a single HTTP/2 stream — monitor for streams with an abnormally high number of CONTINUATION frames from unauthenticated remote clients
  • ·All active Node.js release lines are affected: 18.x, 20.x, and 21.x
  • ·The race condition is triggered during Http2Session destruction while CONTINUATION/header frames are still being processed in memory — detection must account for the transient nature of the crash (server returns to normal after attack ends)
  • ·Red Hat found no practical mitigation other than patching; once an attack ends the system should recover on its own
  • ·Exploitation is unauthenticated and remote, requiring only HTTP/2 protocol access — no credentials or prior access needed

CVSS provenance

nvdv3.08.2HIGHCVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H
osv8.2HIGH
vendor_debian8.2HIGH
vendor_msrc8.2HIGH
vendor_oracle8.2HIGH
vendor_redhat8.2HIGH
Stop checking back — get the weekly exploitation signal.

Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.