Cloudanix VulnDB

CVE-2024-22025

Medium · 6.5

CVSS

6.5

EPSS

1.3%

Published

Mar 19, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A programming error lets an attacker feed specially crafted web content that makes a server program use up all its memory and crash when it tries to read data from an untrusted web address.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Moderate
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The fetch() implementation always performs Brotli decompression on responses regardless of trust level, allowing an attacker-controlled server to return a small, highly-compressible payload that expands to gigabytes in memory and exhausts heap resources until the process terminates.

Why it matters to the business

Applications that accept or follow URLs from users can be forced offline, causing service disruption and potential loss of availability for any system relying on the affected Node.js runtime.

How an attack unfolds

An attacker supplies a malicious URL to any code path that invokes fetch() with untrusted input. The server responds with a Brotli-compressed stream engineered for extreme expansion. Node.js decodes the entire payload into memory, triggering resource exhaustion and process termination. No authentication or special privileges are required.

How to fix it

Upgrade to a Node.js release that limits Brotli decompression size or disables automatic decompression for untrusted origins. For AlmaLinux 8 systems also apply the listed package updates: valgrind-1:3.18.1-7.el8 and valgrind-devel-1:3.18.1-7.el8.

How to confirm the fix worked

Confirm the installed Node.js version contains the decompression-size limit fix; test by fetching a known large-compression-ratio Brotli response and verifying that memory usage remains bounded and the process does not terminate.

Typical attack path

  1. Locate application code or endpoints that pass user-supplied URLs directly to fetch()
  2. Host or compromise a web server returning a Brotli-compressed response with high compression ratio
  3. Trigger the fetch call with the attacker-controlled URL
  4. Observe memory growth leading to OOM termination or severe performance degradation

How to detect it

Review application and Node.js process logs for sudden memory spikes or OOM killer events immediately following fetch requests to external domains. Correlate web server access logs with process termination timestamps and look for responses containing Brotli content-encoding served to the affected application.

  • process terminated by OOM killer after fetch
  • Content-Encoding: br responses to Node.js fetch calls
  • unusually large heap growth during URL fetch operations

What your security team should do

  • Immediately audit all uses of fetch() with external URLs and add explicit size or decompression limits
  • Apply the Node.js security update or the AlmaLinux valgrind packages as applicable within the next maintenance window
  • Add runtime resource limits and monitoring for Node.js worker processes
  • Block or sanitize any user-controlled URLs passed to network fetch functions until patches are deployed

The record

A vulnerability in Node.js has been identified, allowing for a Denial of Service (DoS) attack through resource exhaustion when using the fetch() function to retrieve content from an untrusted URL. The vulnerability stems from the fact that the fetch() function in Node.js always decodes Brotli, making it possible for an attacker to cause resource exhaustion when fetching content from an untrusted URL. An attacker controlling the URL passed into fetch() can exploit this vulnerability to exhaust memory, potentially leading to process termination, depending on the system configuration.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:8 nodejs 0 1:20.12.2-2.module_el8.9.0+3827+11b91f3e
AlmaLinux:8 nodejs 0 1:18.20.2-1.module_el8.9.0+3828+c9fa9644
AlmaLinux:8 nodejs-devel 0 1:20.12.2-2.module_el8.9.0+3827+11b91f3e
AlmaLinux:8 nodejs-devel 0 1:18.20.2-1.module_el8.9.0+3828+c9fa9644
AlmaLinux:8 nodejs-docs 0 1:20.12.2-2.module_el8.9.0+3827+11b91f3e
AlmaLinux:8 nodejs-docs 0 1:18.20.2-1.module_el8.9.0+3828+c9fa9644
AlmaLinux:8 nodejs-full-i18n 0 1:20.12.2-2.module_el8.9.0+3827+11b91f3e
AlmaLinux:8 nodejs-full-i18n 0 1:18.20.2-1.module_el8.9.0+3828+c9fa9644
AlmaLinux:8 nodejs-nodemon 0 3.0.1-1.module_el8.9.0+3731+490e3ce5
AlmaLinux:8 nodejs-nodemon 0 3.0.1-1.module_el8.8.0+3613+1ed8c91d
AlmaLinux:8 nodejs-packaging 0 2021.06-4.module_el8.9.0+3684+11b9e959
AlmaLinux:8 nodejs-packaging 0 2021.06-4.module_el8.7.0+3343+ea2b7901
AlmaLinux:8 nodejs-packaging-bundler 0 2021.06-4.module_el8.9.0+3684+11b9e959
AlmaLinux:8 nodejs-packaging-bundler 0 2021.06-4.module_el8.7.0+3343+ea2b7901
AlmaLinux:8 npm 0 1:10.5.0-1.20.12.2.2.module_el8.9.0+3827+11b91f3e
AlmaLinux:8 npm 0 1:10.5.0-1.18.20.2.1.module_el8.9.0+3828+c9fa9644
AlmaLinux:9 nodejs 0 1:18.20.2-2.module_el9.4.0+99+a01f7676
AlmaLinux:9 nodejs 0 1:20.12.2-2.module_el9.4.0+100+71fc9528
AlmaLinux:9 nodejs 0 1:16.20.2-8.el9_4
AlmaLinux:9 nodejs-devel 0 1:18.20.2-2.module_el9.4.0+99+a01f7676
AlmaLinux:9 nodejs-devel 0 1:20.12.2-2.module_el9.4.0+100+71fc9528
AlmaLinux:9 nodejs-docs 0 1:18.20.2-2.module_el9.4.0+99+a01f7676
AlmaLinux:9 nodejs-docs 0 1:20.12.2-2.module_el9.4.0+100+71fc9528
AlmaLinux:9 nodejs-docs 0 1:16.20.2-8.el9_4
AlmaLinux:9 nodejs-full-i18n 0 1:18.20.2-2.module_el9.4.0+99+a01f7676
AlmaLinux:9 nodejs-full-i18n 0 1:20.12.2-2.module_el9.4.0+100+71fc9528
AlmaLinux:9 nodejs-full-i18n 0 1:16.20.2-8.el9_4
AlmaLinux:9 nodejs-libs 0 1:16.20.2-8.el9_4
AlmaLinux:9 nodejs-nodemon 0 3.0.1-1.module_el9.2.0+36+853e48f5
AlmaLinux:9 nodejs-nodemon 0 3.0.1-1.module_el9.3.0+47+c33bc288
AlmaLinux:9 nodejs-packaging 0 2021.06-4.module_el9.1.0+13+d9a595ea
AlmaLinux:9 nodejs-packaging 0 2021.06-4.module_el9.3.0+88+29afeaa2
AlmaLinux:9 nodejs-packaging-bundler 0 2021.06-4.module_el9.1.0+13+d9a595ea
AlmaLinux:9 nodejs-packaging-bundler 0 2021.06-4.module_el9.3.0+88+29afeaa2
AlmaLinux:9 npm 0 1:10.5.0-1.18.20.2.2.module_el9.4.0+99+a01f7676
AlmaLinux:9 npm 0 1:10.5.0-1.20.12.2.2.module_el9.4.0+100+71fc9528
AlmaLinux:9 npm 0 1:8.19.4-1.16.20.2.8.el9_4
Bitnami node 0 18.19.1
Bitnami node 21.0.0 21.6.2
Bitnami node-min 0 18.19.1
Bitnami node-min 21.0.0 21.6.2
Chainguard nodejs-16 0 16.20.2-r16
Chainguard nodejs-16-doc 0 16.20.2-r15
Debian:10 nodejs 0 10.24.0~dfsg-1~deb10u4
Debian:11 nodejs 0 12.22.12~dfsg-1~deb11u5
Debian:12 nodejs 0 No fix
Debian:13 nodejs 0 18.19.1+dfsg-1
Debian:14 nodejs 0 18.19.1+dfsg-1
Mageia:9 nodejs 0 18.19.1-1.mga9
Mageia:9 yarnpkg 0 1.22.21-0.10.2.4.1.mga9
Red Hat:enterprise_linux:8::appstream nodejs 0 1:20.12.2-2.module+el8.9.0+21743+0b3f1be2
Red Hat:enterprise_linux:8::appstream nodejs 0 1:18.20.2-1.module+el8.9.0+21767+537f34ee
Red Hat:enterprise_linux:8::appstream nodejs-debuginfo 0 1:20.12.2-2.module+el8.9.0+21743+0b3f1be2
Red Hat:enterprise_linux:8::appstream nodejs-debuginfo 0 1:18.20.2-1.module+el8.9.0+21767+537f34ee
Red Hat:enterprise_linux:8::appstream nodejs-debugsource 0 1:20.12.2-2.module+el8.9.0+21743+0b3f1be2
Red Hat:enterprise_linux:8::appstream nodejs-debugsource 0 1:18.20.2-1.module+el8.9.0+21767+537f34ee
Red Hat:enterprise_linux:8::appstream nodejs-devel 0 1:20.12.2-2.module+el8.9.0+21743+0b3f1be2
Red Hat:enterprise_linux:8::appstream nodejs-devel 0 1:18.20.2-1.module+el8.9.0+21767+537f34ee
Red Hat:enterprise_linux:8::appstream nodejs-docs 0 1:20.12.2-2.module+el8.9.0+21743+0b3f1be2
Red Hat:enterprise_linux:8::appstream nodejs-docs 0 1:18.20.2-1.module+el8.9.0+21767+537f34ee
Red Hat:enterprise_linux:8::appstream nodejs-full-i18n 0 1:20.12.2-2.module+el8.9.0+21743+0b3f1be2
Red Hat:enterprise_linux:8::appstream nodejs-full-i18n 0 1:18.20.2-1.module+el8.9.0+21767+537f34ee
Red Hat:enterprise_linux:8::appstream nodejs-nodemon 0 0:3.0.1-1.module+el8.9.0+20473+c4e3d824
Red Hat:enterprise_linux:8::appstream nodejs-nodemon 0 0:3.0.1-1.module+el8.9.0+21190+5ebd2c33
Red Hat:enterprise_linux:8::appstream nodejs-packaging 0 0:2021.06-4.module+el8.9.0+19519+e25b965a
Red Hat:enterprise_linux:8::appstream nodejs-packaging 0 0:2021.06-4.module+el8.9.0+21190+5ebd2c33
Red Hat:enterprise_linux:8::appstream nodejs-packaging-bundler 0 0:2021.06-4.module+el8.9.0+19519+e25b965a
Red Hat:enterprise_linux:8::appstream nodejs-packaging-bundler 0 0:2021.06-4.module+el8.9.0+21190+5ebd2c33
Red Hat:enterprise_linux:8::appstream npm 0 1:10.5.0-1.20.12.2.2.module+el8.9.0+21743+0b3f1be2
Red Hat:enterprise_linux:8::appstream npm 0 1:10.5.0-1.18.20.2.1.module+el8.9.0+21767+537f34ee
Red Hat:enterprise_linux:9::appstream nodejs 0 1:18.20.2-2.module+el9.4.0+21742+692df1ea
Red Hat:enterprise_linux:9::appstream nodejs 0 1:20.12.2-2.module+el9.4.0+21731+46b5b8a7
Red Hat:enterprise_linux:9::appstream nodejs 0 1:16.20.2-8.el9_4
Red Hat:enterprise_linux:9::appstream nodejs-debuginfo 0 1:18.20.2-2.module+el9.4.0+21742+692df1ea
Red Hat:enterprise_linux:9::appstream nodejs-debuginfo 0 1:20.12.2-2.module+el9.4.0+21731+46b5b8a7
Red Hat:enterprise_linux:9::appstream nodejs-debuginfo 0 1:16.20.2-8.el9_4
Red Hat:enterprise_linux:9::appstream nodejs-debugsource 0 1:18.20.2-2.module+el9.4.0+21742+692df1ea
Red Hat:enterprise_linux:9::appstream nodejs-debugsource 0 1:20.12.2-2.module+el9.4.0+21731+46b5b8a7
Red Hat:enterprise_linux:9::appstream nodejs-debugsource 0 1:16.20.2-8.el9_4
Red Hat:enterprise_linux:9::appstream nodejs-devel 0 1:18.20.2-2.module+el9.4.0+21742+692df1ea
Red Hat:enterprise_linux:9::appstream nodejs-devel 0 1:20.12.2-2.module+el9.4.0+21731+46b5b8a7
Red Hat:enterprise_linux:9::appstream nodejs-docs 0 1:18.20.2-2.module+el9.4.0+21742+692df1ea
Red Hat:enterprise_linux:9::appstream nodejs-docs 0 1:20.12.2-2.module+el9.4.0+21731+46b5b8a7
Red Hat:enterprise_linux:9::appstream nodejs-docs 0 1:16.20.2-8.el9_4
Red Hat:enterprise_linux:9::appstream nodejs-full-i18n 0 1:18.20.2-2.module+el9.4.0+21742+692df1ea
Red Hat:enterprise_linux:9::appstream nodejs-full-i18n 0 1:20.12.2-2.module+el9.4.0+21731+46b5b8a7
Red Hat:enterprise_linux:9::appstream nodejs-full-i18n 0 1:16.20.2-8.el9_4
Red Hat:enterprise_linux:9::appstream nodejs-libs 0 1:16.20.2-8.el9_4
Red Hat:enterprise_linux:9::appstream nodejs-libs-debuginfo 0 1:16.20.2-8.el9_4
Red Hat:enterprise_linux:9::appstream nodejs-nodemon 0 0:3.0.1-1.module+el9.3.0+19762+d716bf3b
Red Hat:enterprise_linux:9::appstream nodejs-nodemon 0 0:3.0.1-1.module+el9.3.0.z+20478+84a9f781
Red Hat:enterprise_linux:9::appstream nodejs-packaging 0 0:2021.06-4.module+el9.1.0+15718+e52ec601
Red Hat:enterprise_linux:9::appstream nodejs-packaging 0 0:2021.06-4.module+el9.3.0+19518+63aad52d
Red Hat:enterprise_linux:9::appstream nodejs-packaging-bundler 0 0:2021.06-4.module+el9.1.0+15718+e52ec601
Red Hat:enterprise_linux:9::appstream nodejs-packaging-bundler 0 0:2021.06-4.module+el9.3.0+19518+63aad52d
Red Hat:enterprise_linux:9::appstream npm 0 1:10.5.0-1.18.20.2.2.module+el9.4.0+21742+692df1ea
Red Hat:enterprise_linux:9::appstream npm 0 1:10.5.0-1.20.12.2.2.module+el9.4.0+21731+46b5b8a7
Red Hat:enterprise_linux:9::appstream npm 0 1:8.19.4-1.16.20.2.8.el9_4
Red Hat:rhel_e4s:9.0::appstream nodejs 0 1:16.20.2-9.el9_0
Red Hat:rhel_e4s:9.0::appstream nodejs-debuginfo 0 1:16.20.2-9.el9_0
Red Hat:rhel_e4s:9.0::appstream nodejs-debugsource 0 1:16.20.2-9.el9_0
Red Hat:rhel_e4s:9.0::appstream nodejs-docs 0 1:16.20.2-9.el9_0
Red Hat:rhel_e4s:9.0::appstream nodejs-full-i18n 0 1:16.20.2-9.el9_0
Red Hat:rhel_e4s:9.0::appstream nodejs-libs 0 1:16.20.2-9.el9_0
Red Hat:rhel_e4s:9.0::appstream nodejs-libs-debuginfo 0 1:16.20.2-9.el9_0
Red Hat:rhel_e4s:9.0::appstream npm 0 1:8.19.4-1.16.20.2.9.el9_0
Red Hat:rhel_eus:9.2::appstream nodejs 0 1:16.20.2-6.el9_2.3
Red Hat:rhel_eus:9.2::appstream nodejs-debuginfo 0 1:16.20.2-6.el9_2.3
Red Hat:rhel_eus:9.2::appstream nodejs-debugsource 0 1:16.20.2-6.el9_2.3
Red Hat:rhel_eus:9.2::appstream nodejs-docs 0 1:16.20.2-6.el9_2.3
Red Hat:rhel_eus:9.2::appstream nodejs-full-i18n 0 1:16.20.2-6.el9_2.3
Red Hat:rhel_eus:9.2::appstream nodejs-libs 0 1:16.20.2-6.el9_2.3
Red Hat:rhel_eus:9.2::appstream nodejs-libs-debuginfo 0 1:16.20.2-6.el9_2.3
Red Hat:rhel_eus:9.2::appstream npm 0 1:8.19.4-1.16.20.2.6.el9_2.3
Rocky Linux:8 nodejs 0 1:20.12.2-2.module+el8.9.0+1804+2708cc21
Rocky Linux:8 nodejs 0 1:18.20.2-1.module+el8.9.0+1803+9ac8b495
Rocky Linux:8 nodejs-nodemon 0 0:3.0.1-1.module+el8.8.0+1459+02651ab6
Rocky Linux:8 nodejs-packaging 0 0:2021.06-4.module+el8.7.0+1072+5b168780
Rocky Linux:9 nodejs 0 1:20.12.2-2.module+el9.4.0+20281+a6090b05
Rocky Linux:9 nodejs 0 1:16.20.2-8.el9_4
Rocky Linux:9 nodejs-nodemon 0 0:3.0.1-1.module+el9.2.0+15226+de336927
Rocky Linux:9 nodejs-nodemon 0 0:3.0.1-1.module+el9.6.0+32322+a8b1fd01
Rocky Linux:9 nodejs-nodemon 0 0:3.0.1-1.module+el9.4.0+20268+ab82f8a5
Rocky Linux:9 nodejs-nodemon 0 0:3.0.1-1.module+el9.5.0+31770+0da7192d
Rocky Linux:9 nodejs-packaging 0 0:2021.06-4.module+el9.2.0+15226+de336927
Rocky Linux:9 nodejs-packaging 0 0:2021.06-4.module+el9.5.0+31770+0da7192d
Rocky Linux:9 nodejs-packaging 0 0:2021.06-4.module+el9.4.0+20268+ab82f8a5
SUSE:Enterprise Storage 7.1 nodejs12 0 12.22.12-150200.4.56.1
SUSE:Enterprise Storage 7.1 nodejs14 0 14.21.3-150200.15.55.1
SUSE:Enterprise Storage 7.1 nodejs16 0 16.20.2-150300.7.33.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS nodejs12 0 12.22.12-150200.4.56.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS nodejs14 0 14.21.3-150200.15.55.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS nodejs12 0 12.22.12-150200.4.56.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS nodejs14 0 14.21.3-150200.15.55.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS nodejs16 0 16.20.2-150300.7.33.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS nodejs16 0 16.20.2-150400.3.30.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS nodejs18 0 18.19.1-150400.9.18.2
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS nodejs16 0 16.20.2-150400.3.30.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS nodejs18 0 18.19.1-150400.9.18.2
SUSE:Linux Enterprise Module for Web and Scripting 12 nodejs16 0 16.20.2-8.39.1
SUSE:Linux Enterprise Module for Web and Scripting 12 nodejs18 0 18.19.1-8.18.1
SUSE:Linux Enterprise Module for Web and Scripting 15 SP5 nodejs18 0 18.19.1-150400.9.18.2
SUSE:Linux Enterprise Module for Web and Scripting 15 SP5 nodejs20 0 20.11.1-150500.11.6.1
SUSE:Linux Enterprise Server 15 SP2-LTSS nodejs12 0 12.22.12-150200.4.56.1
SUSE:Linux Enterprise Server 15 SP2-LTSS nodejs14 0 14.21.3-150200.15.55.1
SUSE:Linux Enterprise Server 15 SP3-LTSS nodejs12 0 12.22.12-150200.4.56.1
SUSE:Linux Enterprise Server 15 SP3-LTSS nodejs14 0 14.21.3-150200.15.55.1
SUSE:Linux Enterprise Server 15 SP3-LTSS nodejs16 0 16.20.2-150300.7.33.1
SUSE:Linux Enterprise Server 15 SP4-LTSS nodejs16 0 16.20.2-150400.3.30.1
SUSE:Linux Enterprise Server 15 SP4-LTSS nodejs18 0 18.19.1-150400.9.18.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 nodejs12 0 12.22.12-150200.4.56.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 nodejs14 0 14.21.3-150200.15.55.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 nodejs12 0 12.22.12-150200.4.56.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 nodejs14 0 14.21.3-150200.15.55.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 nodejs16 0 16.20.2-150300.7.33.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 nodejs16 0 16.20.2-150400.3.30.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 nodejs18 0 18.19.1-150400.9.18.2
SUSE:Manager Server 4.3 nodejs16 0 16.20.2-150400.3.30.1
SUSE:Manager Server 4.3 nodejs18 0 18.19.1-150400.9.18.2
Ubuntu:20.04:LTS nodejs 0 No fix
Ubuntu:22.04:LTS nodejs 0 No fix
Ubuntu:24.04:LTS nodejs 0 No fix
Ubuntu:24.10 nodejs 0 18.19.1+dfsg-6ubuntu5
Ubuntu:Pro:14.04:LTS nodejs 0 No fix
Ubuntu:Pro:16.04:LTS nodejs 0 No fix
Ubuntu:Pro:18.04:LTS nodejs 0 No fix
Ubuntu:Pro:20.04:LTS nodejs 0 No fix
Ubuntu:Pro:22.04:LTS nodejs 0 No fix
Wolfi nodejs-16 0 16.20.2-r16
Wolfi nodejs-16-doc 0 16.20.2-r15
openSUSE:Leap 15.5 nodejs18 0 18.19.1-150400.9.18.2
openSUSE:Leap 15.5 nodejs20 0 20.11.1-150500.11.6.1
openSUSE:Tumbleweed nodejs20 0 20.11.1-1.1
openSUSE:Tumbleweed nodejs21 0 21.6.2-1.1

Related vulnerabilities