CVE-2025-23085
Medium · 5.3CVSS
5.3
EPSS
1.4%
Published
Feb 7, 2025
CISA due date
—
Cloudanix analysis
A flaw in certain web server software can slowly use up memory when connections are closed in unexpected ways, which might eventually make the service unavailable until fixed.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A memory leak occurs in the HTTP/2 server implementation when a remote peer closes the socket abruptly without sending a GOAWAY frame or when nghttp2 detects an invalid header that terminates the connection, causing gradual accumulation of unreleased memory.
Why it matters to the business
HTTP/2 servers may consume increasing amounts of memory over time, potentially leading to resource exhaustion, degraded performance, or service outages under sustained connection handling conditions; urgency is low given no KEV listing or active exploitation reports.
How an attack unfolds
An attacker repeatedly opens HTTP/2 connections to a vulnerable Node.js server and either closes them abruptly without a GOAWAY notification or supplies invalid headers that force connection termination by the peer, triggering the leak each time until memory pressure causes denial of service.
How to fix it
Upgrade Node.js v18.x, v20.x, v22.x and v23.x to the latest patched releases that address the nghttp2 memory leak. For Red Hat Enterprise Linux 8 baseos and crb repositories, update the listed pcre packages to the fixed version 0:8.42-6.el8.
How to confirm the fix worked
Confirm Node.js and nghttp2 versions are updated beyond the affected releases; monitor process memory usage under simulated abrupt connection closures to verify no leak occurs; check package managers show pcre and related packages at 0:8.42-6.el8 or newer on RHEL 8 systems.
Typical attack path
- Establish multiple HTTP/2 connections to the target server
- Abruptly close sockets without sending GOAWAY frames or inject invalid headers
- Repeat connection attempts at scale to amplify the leak
- Observe server memory growth leading to slowdown or crash
How to detect it
Review Node.js process memory metrics and logs for repeated abrupt HTTP/2 connection terminations or invalid header events; correlate with nghttp2 error messages indicating connection resets without GOAWAY.
What your security team should do
- Prioritize patching Node.js HTTP/2 servers in internet-facing or high-traffic environments
- Apply the exact fixed package versions 0:8.42-6.el8 for all listed pcre components on RHEL 8
- Implement connection rate limiting and monitoring for memory consumption anomalies
- Review downstream dependents and plan upgrades given ecosystem prevalence of Node.js
The record
A memory leak could occur when a remote peer abruptly closes the socket without sending a GOAWAY notification. Additionally, if an invalid header was detected by nghttp2, causing the connection to be terminated by the peer, the same leak was triggered. This flaw could lead to increased memory consumption and potential denial of service under certain conditions. This vulnerability affects HTTP/2 Server users on Node.js v18.x, v20.x, v22.x and v23.x.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | nodejs | 0 | 1:20.18.2-1.module_el8.10.0+3958+472a6467 |
| AlmaLinux:8 | nodejs | 0 | 1:18.20.6-1.module_el8.10.0+3960+fcfbf683 |
| AlmaLinux:8 | nodejs | 0 | 1:22.13.1-1.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:8 | nodejs-devel | 0 | 1:20.18.2-1.module_el8.10.0+3958+472a6467 |
| AlmaLinux:8 | nodejs-devel | 0 | 1:18.20.6-1.module_el8.10.0+3960+fcfbf683 |
| AlmaLinux:8 | nodejs-devel | 0 | 1:22.13.1-1.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:8 | nodejs-docs | 0 | 1:20.18.2-1.module_el8.10.0+3958+472a6467 |
| AlmaLinux:8 | nodejs-docs | 0 | 1:18.20.6-1.module_el8.10.0+3960+fcfbf683 |
| AlmaLinux:8 | nodejs-docs | 0 | 1:22.13.1-1.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:8 | nodejs-full-i18n | 0 | 1:20.18.2-1.module_el8.10.0+3958+472a6467 |
| AlmaLinux:8 | nodejs-full-i18n | 0 | 1:18.20.6-1.module_el8.10.0+3960+fcfbf683 |
| AlmaLinux:8 | nodejs-full-i18n | 0 | 1:22.13.1-1.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:8 | nodejs-libs | 0 | 1:22.13.1-1.module_el8.10.0+3961+6a788e57 |
| 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.7.0+3343+ea2b7901 |
| AlmaLinux:8 | nodejs-packaging | 0 | 2021.06-4.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:8 | nodejs-packaging-bundler | 0 | 2021.06-4.module_el8.10.0+3958+472a6467 |
| AlmaLinux:8 | nodejs-packaging-bundler | 0 | 2021.06-4.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:8 | npm | 0 | 1:10.8.2-1.20.18.2.1.module_el8.10.0+3958+472a6467 |
| AlmaLinux:8 | npm | 0 | 1:10.8.2-1.18.20.6.1.module_el8.10.0+3960+fcfbf683 |
| AlmaLinux:8 | npm | 0 | 1:10.9.2-1.22.13.1.1.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:8 | v8-12.4-devel | 0 | 3:12.4.254.21-1.22.13.1.1.module_el8.10.0+3961+6a788e57 |
| AlmaLinux:9 | nodejs | 0 | 1:20.18.2-1.module_el9.5.0+137+381f3eaf |
| AlmaLinux:9 | nodejs | 0 | 1:18.20.6-1.module_el9.5.0+136+92f38f3c |
| AlmaLinux:9 | nodejs | 0 | 1:22.13.1-1.module_el9.5.0+139+09296491 |
| AlmaLinux:9 | nodejs-devel | 0 | 1:20.18.2-1.module_el9.5.0+137+381f3eaf |
| AlmaLinux:9 | nodejs-devel | 0 | 1:18.20.6-1.module_el9.5.0+136+92f38f3c |
| AlmaLinux:9 | nodejs-devel | 0 | 1:22.13.1-1.module_el9.5.0+139+09296491 |
| AlmaLinux:9 | nodejs-docs | 0 | 1:20.18.2-1.module_el9.5.0+137+381f3eaf |
| AlmaLinux:9 | nodejs-docs | 0 | 1:18.20.6-1.module_el9.5.0+136+92f38f3c |
| AlmaLinux:9 | nodejs-docs | 0 | 1:22.13.1-1.module_el9.5.0+139+09296491 |
| AlmaLinux:9 | nodejs-full-i18n | 0 | 1:20.18.2-1.module_el9.5.0+137+381f3eaf |
| AlmaLinux:9 | nodejs-full-i18n | 0 | 1:18.20.6-1.module_el9.5.0+136+92f38f3c |
| AlmaLinux:9 | nodejs-full-i18n | 0 | 1:22.13.1-1.module_el9.5.0+139+09296491 |
| AlmaLinux:9 | nodejs-libs | 0 | 1:22.13.1-1.module_el9.5.0+139+09296491 |
| 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.5.0+136+92f38f3c |
| AlmaLinux:9 | nodejs-packaging | 0 | 2021.06-4.module_el9.3.0+88+29afeaa2 |
| AlmaLinux:9 | nodejs-packaging | 0 | 2021.06-4.module_el9.5.0+136+92f38f3c |
| AlmaLinux:9 | nodejs-packaging-bundler | 0 | 2021.06-4.module_el9.5.0+124+df88fe49 |
| AlmaLinux:9 | nodejs-packaging-bundler | 0 | 2021.06-4.module_el9.5.0+139+09296491 |
| AlmaLinux:9 | npm | 0 | 1:10.8.2-1.20.18.2.1.module_el9.5.0+137+381f3eaf |
| AlmaLinux:9 | npm | 0 | 1:10.8.2-1.18.20.6.1.module_el9.5.0+136+92f38f3c |
| AlmaLinux:9 | npm | 0 | 1:10.9.2-1.22.13.1.1.module_el9.5.0+139+09296491 |
| AlmaLinux:9 | v8-12.4-devel | 0 | 3:12.4.254.21-1.22.13.1.1.module_el9.5.0+139+09296491 |
| Alpine:v3.21 | nodejs | 0 | 22.13.1-r0 |
| Alpine:v3.22 | nodejs | 0 | 22.13.1-r0 |
| Bitnami | node | 0 | 18.20.6 |
| Bitnami | node-min | 0 | 18.20.6 |
| Chainguard | nodejs-16 | 0 | 16.20.2-r16 |
| Chainguard | nodejs-16-doc | 0 | 16.20.2-r15 |
| Chainguard | nodejs-18 | 0 | 18.20.6-r0 |
| Chainguard | nodejs-18-doc | 0 | 18.20.6-r0 |
| Chainguard | nodejs-21 | 0 | 21.7.3-r12 |
| Chainguard | nodejs-21-doc | 0 | 21.7.3-r12 |
| Debian:11 | nodejs | 0 | No fix |
| Debian:11 | nodejs | 0 | 12.22.12~dfsg-1~deb11u6 |
| Debian:12 | nodejs | 0 | No fix |
| Debian:13 | nodejs | 0 | No fix |
| Mageia:9 | nodejs | 0 | 22.13.1-2.mga9 |
| Rocky Linux:8 | nodejs | 0 | 1:20.18.2-1.module+el8.10.0+1932+2f13f218 |
| Rocky Linux:8 | nodejs | 0 | 1:18.20.6-1.module+el8.10.0+1934+a521c41f |
| Rocky Linux:8 | nodejs | 0 | 1:22.13.1-1.module+el8.10.0+1935+d3cbe60f |
| Rocky Linux:8 | nodejs-nodemon | 0 | 0:3.0.1-1.module+el8.10.0+1666+930e28e8 |
| Rocky Linux:8 | nodejs-packaging | 0 | 0:2021.06-4.module+el8.10.0+1667+4a788d89 |
| Rocky Linux:9 | nodejs-nodemon | 0 | 0:3.0.1-1.module+el9.4.0+25495+f51dca35 |
| Rocky Linux:9 | nodejs-nodemon | 0 | 0:3.0.1-1.module+el9.6.0+32144+1d29a396 |
| Rocky Linux:9 | nodejs-nodemon | 0 | 0:3.0.1-1.module+el9.6.0+32322+a8b1fd01 |
| Rocky Linux:9 | nodejs-packaging | 0 | 0:2021.06-4.module+el9.4.0+25495+f51dca35 |
| Rocky Linux:9 | nodejs-packaging | 0 | 0:2021.06-4.module+el9.5.0+31770+0da7192d |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | nodejs20 | 0 | 20.18.2-150500.11.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | nodejs20 | 0 | 20.18.2-150500.11.18.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | nodejs20 | 0 | 20.18.2-150600.3.9.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | nodejs22 | 0 | 22.13.1-150600.13.6.1 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | nodejs18 | 0 | 18.20.6-8.33.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | nodejs20 | 0 | 20.18.2-150500.11.18.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | nodejs18 | 0 | 18.20.6-8.33.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | nodejs20 | 0 | 20.18.2-150500.11.18.1 |
| SUSE:Manager Server 4.3 | nodejs18 | 0 | 18.20.6-150400.9.33.1 |
| 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 | No fix |
| Ubuntu:25.04 | nodejs | 0 | No fix |
| 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 |
| Wolfi | nodejs-18 | 0 | 18.20.6-r0 |
| Wolfi | nodejs-18-doc | 0 | 18.20.6-r0 |
| Wolfi | nodejs-21 | 0 | 21.7.3-r12 |
| Wolfi | nodejs-21-doc | 0 | 21.7.3-r12 |
| openSUSE:Leap 15.6 | nodejs20 | 0 | 20.18.2-150600.3.9.1 |
| openSUSE:Leap 15.6 | nodejs22 | 0 | 22.13.1-150600.13.6.1 |
| openSUSE:Tumbleweed | nodejs22 | 0 | 22.13.0-1.1 |
| openSUSE:Tumbleweed | nodejs24 | 0 | 24.11.1-2.1 |
| openSUSE:Tumbleweed | nodejs26 | 0 | 26.3.1-1.1 |
Related vulnerabilities
- CVE-2025-6965 There exists a vulnerability in SQLite versions before 3.50.2 where the number of… Also affects nodejs
- CVE-2025-23083 With the aid of the diagnostics_channel utility, an event can be hooked into whenever a… Also affects nodejs
- CVE-2025-22150 Undici is an HTTP/1.1 client. Also affects nodejs
- CVE-2023-39333 Maliciously crafted export names in an imported WebAssembly module can inject JavaScript… Also affects nodejs
- CVE-2023-46809 Node.js versions which bundle an unpatched version of OpenSSL or run against a… Also affects nodejs
- CVE-2024-36137 A vulnerability has been identified in Node.js, affecting users of the experimental… Also affects nodejs
- CVE-2024-22018 A vulnerability has been identified in Node.js, affecting users of the experimental… Also affects nodejs
- CVE-2024-22020 A security flaw in Node.js allows a bypass of network import restrictions. Also affects nodejs