{"id":"VND-nodejs-january-2025-security-releases","kind":"vulnerability","aliases":[],"related":["CVE-2025-23083","CVE-2025-23084","CVE-2025-23085","CVE-2025-23087","CVE-2025-23088","CVE-2025-23089"],"title":"Node.js: Tuesday, January 21, 2025 Security Releases","description":"Commercial support for versions past the Maintenance LTS phase is available through our OpenJS Ecosystem Sustainability Program partners Tuesday, January 21, 2025 Security Releases TNJP The Node.js Project Tuesday, January 21, 2025 Security Releases Security releases available\nUpdates are now available for the 23.x, 22.x, 20.x, 18.x Node.js release lines for the\nfollowing issues.\nThis security release includes the following dependency updates to address public vulnerabilities:\nundici (v7.2.3, v6.21.1, v5.28.5) on v23.x, v22.x, v20.x, v18.x.\nAlong with the security fixes, the Node.js team has also issued CVEs for\nEnd-of-Life (EOL) versions of Node.js.\nNode.js v17.x or prior CVE-2025-23087\nNode.js v19.x CVE-2025-23088\nNode.js v21.x CVE-2025-23089\nMore information in this blog post\nWorker permission bypass via InternalWorker leak in diagnostics (CVE-2025-23083) - (high)\nWith 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.\nThis vulnerability affects Permission Model users (--permission) on Node.js v20, v22, and v23.\nImpact:\nThis vulnerability affects all users in active release lines: 20.x, 22.x, 23.x\nThank you, to leodog896 for reporting this vulnerability and thank you RafaelGSS for fixing it.\nPath traversal by drive name in Windows environment (CVE-2025-23084) - (medium)\nA vulnerability has been identified in Node.js, specifically affecting the handling of drive names in the Windows environment. Certain Node.js functions do not treat drive names as special on Windows. As a result, although Node.js assumes a relative path, it actually refers to the root directory.\nOn Windows, a path that does not start with the file separator is treated as relative to the current directory.\nThis vulnerability affects Windows users of path.join API.\nImpact:\nThis vulnerability affects all users in active release lines: 18.x, 20.x, 22.x, 23.x\nThank you, to ryotak and taise for reporting this vulnerability and thank you tniessen for fixing it.\nGOAWAY HTTP/2 frames cause memory leak outside heap (CVE-2025-23085) - (medium)\nA 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.\nThis vulnerability affects HTTP/2 Server users on Node.js v18.x, v20.x, v22.x and v23.x.\nImpact:\nThis vulnerability affects all users in active release lines: 18.x, 20.x, 22.x, 23.x\nThank you, to newtmitch for reporting this vulnerability and thank you RafaelGSS for fixing it.\nDownloads and release details\nNode.js v18.20.6\nNode.js v20.18.2\nNode.js v22.13.1\nNode.js v23.6.1\nSummary\nThe Node.js project will release new versions of the 23.x, 22.x, 20.x, 18.x\nreleases lines on or shortly after, Tuesday, January 21, 2025 in order to address:\n1 high severity issues.\n2 medium severity issues.\nImpact\nThe 23.x release line of Node.js is vulnerable to 1 high severity issues, 2 medium severity issues.\nThe 22.x release line of Node.js is vulnerable to 1 high severity issues, 2 medium severity issues.\nThe 20.x release line of Node.js is vulnerable to 1 high severity issues, 2 medium severity issues.\nThe 18.x release line of Node.js is vulnerable to 2 medium severity issues.\nIt&#x27;s important to note that End-of-Life versions are always affected when a security release occurs.\nTo ensure your system&#x27;s security, please use an up-to-date version as outlined in our\nRelease Schedule .\nRelease timing\nReleases will be available on, or shortly after, Tuesday, January 21, 2025.\nContact and future updates\nThe current Node.js security policy can be found at https://nodejs.org/en/security/ .\nPlease follow the process outlined in https://github.com/nodejs/node/blob/master/SECURITY.md if you wish to report a vulnerability in Node.js.\nSubscribe to the low-volume announcement-only nodejs-sec mailing list at https://groups.google.com/forum/#!forum/nodejs-sec to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the nodejs GitHub organization. Previous Updates on CVE for End-of-Life Versions Next Upcoming CVE for End-of-Life Node.js Versions","summary":"Node.js 18, 20, 22 and 23 received security releases fixing three flaws: a worker permission bypass through diagnostics_channel (CVE-2025-23083, high), a Windows path traversal via drive names in path.join (CVE-2025-23084, medium), and a memory leak from HTTP/2 GOAWAY frames (CVE-2025-23085, medium). An attacker can escape the Permission Model, read or write files outside intended paths on Windows, or exhaust memory on an HTTP/2 server.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"node","fixed":["18.20.6"],"affected":">= 18.0.0, < 18.20.6","ecosystem":"node"},{"name":"node","fixed":["20.18.2"],"affected":">= 20.0.0, < 20.18.2","ecosystem":"node"},{"name":"node","fixed":["22.13.1"],"affected":">= 22.0.0, < 22.13.1","ecosystem":"node"},{"name":"node","fixed":["23.6.1"],"affected":">= 23.0.0, < 23.6.1","ecosystem":"node"}],"ecosystems":["node"],"tags":["http2","node","node.js","runtime","self-hosted","windows"],"not_affected_if":["managed-hosting","no-http2","no-permission-model","non-windows"],"how_to_check":"- Run `node --version` and compare with the fixed versions below.\n- If you use the Permission Model (`--permission`), check whether it is enabled in your startup flags or environment.\n- On Windows services using `path.join` with user-supplied input, review that code path.\n- Check whether your server exposes HTTP/2 (`http2.createServer` or `http2.createSecureServer`).","fix":"- Upgrade Node.js 18.x to `18.20.6` or later.\n- Upgrade Node.js 20.x to `20.18.2` or later.\n- Upgrade Node.js 22.x to `22.13.1` or later.\n- Upgrade Node.js 23.x to `23.6.1` or later.\n- Node.js 17, 19 and 21 are end-of-life and receive no fixes; move to a supported release line.","status":"open","published_at":"2025-01-21T03:00:00+00:00","first_seen_at":"2026-10-23T19:13:00+00:00","triaged_at":"2026-10-25T05:39:31+00:00","updated_at":"2026-10-25T05:39:31+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-10-25T05:39:31Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Node.js 18.x to `18.20.6` or later.\n- Upgrade Node.js 20.x to `20.18.2` or later.\n- Upgrade Node.js 22.x to `22.13.1` or later.\n- Upgrade Node.js 23.x to `23.6.1` or later.\n- Node.js 17, 19 and 21 are end-of-life and receive no fixes; move to a supported release line.","reach":"network","title":"Node.js: January 2025 releases fix permission bypass, path traversal and HTTP/2 leak","impact":"high","summary":"Node.js 18, 20, 22 and 23 received security releases fixing three flaws: a worker permission bypass through diagnostics_channel (CVE-2025-23083, high), a Windows path traversal via drive names in path.join (CVE-2025-23084, medium), and a memory leak from HTTP/2 GOAWAY frames (CVE-2025-23085, medium). An attacker can escape the Permission Model, read or write files outside intended paths on Windows, or exhaust memory on an HTTP/2 server.","category":"runtime","nicknames":[],"who_cares":["node.js","self-hosted","windows","http2"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Permission bypass, file access outside intended paths, or server memory exhaustion","analyst_note":"Check the Node.js blog post and the undici dependency advisories for exact exploit conditions and whether the undici updates (7.2.3, 6.21.1, 5.28.5) need separate action.","how_to_check":"- Run `node --version` and compare with the fixed versions below.\n- If you use the Permission Model (`--permission`), check whether it is enabled in your startup flags or environment.\n- On Windows services using `path.join` with user-supplied input, review that code path.\n- Check whether your server exposes HTTP/2 (`http2.createServer` or `http2.createSecureServer`).","needs_analyst":true,"not_affected_if":["managed-hosting","non-windows","no-permission-model","no-http2"],"who_is_affected":"Every team running a Node.js release line 18.x, 20.x, 22.x or 23.x below the fixed versions is affected by the dependency and core fixes. The permission bypass only matters for applications that use the Permission Model (`--permission`) and the path traversal only for Windows code calling `path.join` with untrusted input. HTTP/2 memory exhaustion only matters for servers accepting HTTP/2 connections from untrusted peers.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000958,"input_tokens":5039,"output_tokens":909,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2025':48B,61B,73B,204C,209C,214C,231C,338C,459C '-23083':49B,232C '-23084':62B,339C '-23085':74B,460C '-23087':205C '-23088':210C '-23089':215C '1':609C,628C,646C,664C '18':29B,148C,425C,542C,593C,673C '2':613C,632C,650C,668C,682C '20':30B,146C,308C,427C,544C,591C,655C '2025':5A,12A,120C,130C,604C,738C '21':4A,119C,129C,603C,737C '22':31B,144C,310C,429C,546C,589C,637C '23':33B,142C,312C,431C,548C,587C,619C 'abrupt':471C 'activ':305C,422C,539C 'actual':381C 'addit':480C 'address':166C,608C 'affect':287C,301C,349C,409C,418C,521C,535C,699C 'aid':236C 'along':178C 'also':187C,262C 'although':374C 'alway':698C 'api':414C 'assum':376C 'attack':77B 'avail':109C,135C,139C,730C 'blog':220C 'bypass':43B,224C 'caus':453C,489C 'certain':359C,517C 'channel':46B,240C 'close':472C 'commerci':99C 'condit':518C 'connect':491C 'constructor':276C 'consumpt':510C 'contact':739C 'could':465C,505C 'creat':253C 'current':405C,744C 'cve':47B,60B,72B,203C,208C,213C,230C,337C,458C 'cves':189C 'date':717C 'denial':513C 'depend':163C 'detail':568C 'detect':486C 'diagnost':45B,229C,239C 'directori':386C,406C 'download':565C 'drive':56B,332C,353C,365C 'ecosystem':113C 'end':192C,693C 'end-of-lif':191C,692C 'ensur':706C 'environ':336C,358C 'eol':195C 'escap':79B 'event':243C 'exhaust':93B 'expos':263C 'fetch':273C 'file':86B,397C 'fix':37B,182C,327C,448C,563C 'flaw':39B,504C 'follow':155C,162C 'foun':750C 'frame':71B,452C 'function':361C 'futur':741C 'goaway':70B,450C,478C 'grab':279C 'handl':351C 'header':484C 'heap':457C 'high':50B,233C,610C,629C,647C,665C 'hook':246C 'host':26B 'http/2':69B,97B,451C,522C 'http2':20B 'identifi':345C 'impact':298C,415C,532C,617C 'import':688C 'includ':160C 'increas':508C 'inform':217C 'instanc':268C 'intend':88B 'intern':264C 'internalwork':226C 'invalid':483C 'issu':156C,188C,612C,616C,631C,635C,649C,653C,667C,671C,685C 'januari':3A,118C,128C,602C,736C 'january':11A 'lead':506C 'leak':67B,227C,455C,464C,500C 'leodog896':317C 'life':194C,695C 'limit':257C 'line':152C,307C,424C,541C,596C,622C,640C,658C,676C 'lts':106C 'mainten':105C 'malici':283C 'medium':63B,75B,340C,461C,614C,633C,651C,669C,683C 'memori':66B,94B,454C,463C,509C 'model':82B,289C 'name':57B,333C,354C,366C 'new':583C 'newtmitch':553C 'nghttp2':488C 'node':16A,17A,18A,19A,21B 'node.js':1A,22B,28B,125C,150C,184C,198C,199C,206C,211C,293C,347C,360C,375C,526C,569C,571C,573C,575C,579C,624C,642C,660C,678C,745C 'nodejs':10A 'note':690C 'notif':479C 'occur':466C,704C 'openj':112C 'order':606C 'outlin':720C 'outsid':87B,456C 'partner':116C 'past':103C 'path':53B,89B,329C,379C,390C 'path.join':59B,413C 'peer':470C,497C 'permiss':42B,81B,223C,288C,291C 'phase':107C 'pleas':711C 'polici':747C 'post':221C 'potenti':512C 'prior':202C 'program':115C 'project':126C,580C 'public':167C 'rafaelgss':325C,561C 'read':83B 'receiv':34B 'refer':382C 'reinstat':281C 'relat':378C,402C 'releas':7A,36B,122C,132C,134C,151C,159C,306C,423C,540C,567C,582C,595C,621C,639C,657C,675C,703C,723C,725C,727C 'releases':15A 'remot':469C 'report':319C,440C,555C 'result':373C 'root':385C 'runtim':23B 'ryotak':436C 'schedul':724C 'secur':6A,35B,121C,131C,133C,158C,181C,702C,710C,746C 'security':14A 'security-releases':13A 'self':25B 'self-host':24B 'send':476C 'separ':398C 'server':98B,523C 'servic':515C 'sever':611C,615C,630C,634C,648C,652C,666C,670C,684C 'short':599C,733C 'socket':474C 'special':368C 'specif':348C 'start':394C 'summari':577C 'support':100C 'sustain':114C 'system':708C 'tais':438C 'team':185C 'termin':494C 'thank':314C,323C,433C,444C,550C,559C 'thread':251C 'three':38B 'time':726C 'tniessen':446C 'tnjp':123C 'travers':54B,330C 'treat':364C,400C 'trigger':502C 'tuesday':2A,117C,127C,601C,735C 'undici':169C 'up-to-d':714C 'updat':136C,164C,742C 'usag':284C 'use':712C 'user':290C,303C,411C,420C,524C,537C 'util':241C 'v17.x':200C 'v18.20.6':570C 'v18.x':177C,527C 'v19.x':207C 'v20':294C 'v20.18.2':572C 'v20.x':176C,528C 'v21.x':212C 'v22':295C 'v22.13.1':574C 'v22.x':175C,529C 'v23':297C 'v23.6.1':576C 'v23.x':174C,531C 'v5.28.5':172C 'v6.21.1':171C 'v7.2.3':170C 'version':102C,196C,584C,696C,718C 'via':55B,225C 'vnd':9A 'vnd-nodejs-january':8A 'vulner':168C,286C,300C,321C,342C,408C,417C,442C,520C,534C,557C,626C,644C,662C,680C 'whenev':248C 'window':27B,52B,91B,335C,357C,370C,388C,410C 'without':475C 'worker':41B,222C,250C,260C,265C 'write':85B 'x':143C,145C,147C,149C,309C,311C,313C,426C,428C,430C,432C,543C,545C,547C,549C,588C,590C,592C,594C,620C,638C,656C,674C","nicknames":[],"mitigations":[],"who_affected":"Every team running a Node.js release line 18.x, 20.x, 22.x or 23.x below the fixed versions is affected by the dependency and core fixes. The permission bypass only matters for applications that use the Permission Model (`--permission`) and the path traversal only for Windows code calling `path.join` with untrusted input. HTTP/2 memory exhaustion only matters for servers accepting HTTP/2 connections from untrusted peers.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2025-01-21T03:00:00+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nodejs","external_id":"january-2025-security-releases","url":"https://nodejs.org/en/blog/vulnerability/january-2025-security-releases","severity":"high","published_at":"2025-01-21T03:00:00+00:00","modified_at":null,"first_seen_at":"2026-10-23T19:13:00+00:00","fetched_at":"2026-10-25T19:46:15+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}