Cloudanix VulnDB

CVE-2025-23083

High · 7.7

CVSS

7.7

EPSS

0.4%

Published

Jan 22, 2025

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A security setting meant to limit what code can do in Node.js applications can be worked around, letting attackers run actions they should not be allowed to perform.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Low
Impact
Full Compromise
Component
Application
Class
Authorization Bypass
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw permits bypassing the Node.js Permission Model by using diagnostics_channel to intercept worker thread creation events, including internal workers, allowing retrieval of worker instances and reuse of their constructors for unauthorized operations.

Why it matters to the business

Organizations running Node.js applications with the permission flag enabled face risk of unauthorized code execution and access to restricted resources, potentially resulting in data exposure or system compromise without user interaction.

How an attack unfolds

An attacker leverages diagnostics_channel to hook worker creation events, obtains references to internal worker instances, extracts their constructors, and reinstantiates them to perform actions outside the intended permission boundaries.

How to fix it

Upgrade affected Node.js versions (v20, v22, v23) to patched releases that restrict diagnostics_channel access to internal workers when the permission model is active.

How to confirm the fix worked

Confirm Node.js versions are updated beyond vulnerable releases, then test that diagnostics_channel hooks cannot access or reinstantiate internal worker constructors under --permission.

Typical attack path

  1. Register a diagnostics_channel hook for worker thread creation
  2. Intercept event exposing internal worker instance
  3. Capture and store the worker constructor reference
  4. Reinstate the constructor to spawn malicious workers
  5. Execute operations bypassing permission model restrictions

How to detect it

Review application logs for unexpected worker thread creation events tied to diagnostics_channel, inspect process activity for unauthorized worker instantiation attempts, and search runtime traces for constructor reuse patterns.

What your security team should do

  • Prioritize patching Node.js installations using the permission model
  • Audit applications for diagnostics_channel usage and restrict it where possible
  • Monitor for unusual worker thread activity in permission-enforced environments
  • Review EPSS and exploit maturity trends for changes in risk

The record

With the aid of the diagnostics_channel utility, an event can be hooked into whenever a worker thread is created. This is not limited only to workers but also exposes internal workers, where an instance of them can be fetched, and its constructor can be grabbed and reinstated for malicious usage. This vulnerability affects Permission Model users (--permission) on Node.js v20, v22, and v23.

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: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: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: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: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.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: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: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: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: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.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 19.0.0 20.18.2
Bitnami node-min 19.0.0 20.18.2
Chainguard nodejs-20 0 20.18.2-r0
Chainguard nodejs-20-doc 0 20.18.2-r0
Chainguard nodejs-21 0 21.7.3-r12
Chainguard nodejs-21-doc 0 21.7.3-r12
Chainguard nodejs-22 0 22.13.1-r0
Chainguard nodejs-22-doc 0 22.13.1-r0
Chainguard nodejs-23 0 23.6.1-r0
Chainguard nodejs-23-doc 0 23.6.1-r0
Debian:11 nodejs 0 No fix
Debian:12 nodejs 0 No fix
Debian:13 nodejs 0 No fix
Debian:14 nodejs 0 20.18.2+dfsg-1
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: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+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 SP5-ESPOS nodejs20 0 20.18.2-150500.11.18.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 15 SP5-LTSS nodejs20 0 20.18.2-150500.11.18.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 nodejs20 0 20.18.2-150500.11.18.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
Wolfi nodejs-20 0 20.18.2-r0
Wolfi nodejs-20-doc 0 20.18.2-r0
Wolfi nodejs-21 0 21.7.3-r12
Wolfi nodejs-21-doc 0 21.7.3-r12
Wolfi nodejs-22 0 22.13.1-r0
Wolfi nodejs-22-doc 0 22.13.1-r0
Wolfi nodejs-23 0 23.6.1-r0
Wolfi nodejs-23-doc 0 23.6.1-r0
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