{"id":"VND-nodejs-july-2025-security-releases","kind":"vulnerability","aliases":[],"related":["CVE-2025-23084","CVE-2025-27209","CVE-2025-27210"],"title":"Node.js: Tuesday, July 15, 2025 Security Releases","description":"Commercial support for versions past the Maintenance LTS phase is available through our OpenJS Ecosystem Sustainability Program partners Tuesday, July 15, 2025 Security Releases TNJP The Node.js Project Tuesday, July 15, 2025 Security Releases Security releases available\nUpdates are now available for the 24.x, 22.x, 20.x Node.js release lines for the\nfollowing issues.\nWindows Device Names (CON, PRN, AUX) Bypass Path Traversal Protection in path.normalize() (CVE-2025-27210) - (high)\nAn incomplete fix has been identified for CVE-2025-23084 in Node.js, specifically affecting Windows device names like CON, PRN, and AUX.\nThis vulnerability affects Windows users of path.join API.\nImpact:\nThis vulnerability affects all users in active release lines: 20.x, 22.x, 24.x\nThank you, to oblivionsage for reporting this vulnerability and thank you RafaelGSS for fixing it.\nHashDoS in V8 (CVE-2025-27209) - (high)\nThe V8 release used in Node.js v24.0.0 has changed how string hashes are computed using rapidhash.\nThis implementation re-introduces the HashDoS vulnerability as an attacker who can control the strings to be hashed can generate\nmany hash collisions - an attacker can generate collisions even without knowing the hash-seed.\nWhile the V8 team does not classify this as a security vulnerability, the Node.js project considers it one due to its potential\nimpact in real-world scenarios.\nThis vulnerability affects Node.js v24.x users.\nImpact:\nThis vulnerability affects all users in active release lines: 24.x\nThank you, to sharp_edged for reporting this vulnerability and thank you targos for fixing it.\nDownloads and release details\nNode.js v20.19.4\nNode.js v22.17.1\nNode.js v24.4.1\nSummary\nThe Node.js project will release new versions of the 24.x, 22.x, 20.x\nreleases lines on or shortly after, Tuesday, July 15, 2025 in order to address:\n2 high severity issues.\nImpact\nThe 24.x release line of Node.js is vulnerable to 2 high severity issues.\nThe 22.x release line of Node.js is vulnerable to 1 high severity issues.\nThe 20.x release line of Node.js is vulnerable to 1 high 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, July 15, 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 Tuesday, January 13, 2026 Security Releases Next Wednesday, May 14, 2025 Security Releases","summary":"Two issues in Node.js affect the 20.x, 22.x and 24.x release lines. A Windows device-name flaw (CON, PRN, AUX) can bypass path traversal protection in path.normalize() and path.join, and a V8 string hashing regression in 24.x re-enables hash collision denial of service.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"node","fixed":["20.19.4"],"affected":">= 20.0.0, < 20.19.4","ecosystem":"node"},{"name":"node","fixed":["22.17.1"],"affected":">= 22.0.0, < 22.17.1","ecosystem":"node"},{"name":"node","fixed":["24.4.1"],"affected":">= 24.0.0, < 24.4.1","ecosystem":"node"}],"ecosystems":["node"],"tags":["backend","node","node.js","runtime","self-hosted","windows"],"not_affected_if":["end-of-life-not-applicable"],"how_to_check":"- Run `node --version` and compare against the fixed versions `20.19.4`, `22.17.1` and `24.4.1`\n- Check whether the application passes user-controlled paths to `path.join` or `path.normalize` on Windows\n- For HashDoS, check whether an attacker can control strings that the application hashes on `24.x` releases","fix":"- Upgrade Node.js 20.x to `20.19.4` or later\n- Upgrade Node.js 22.x to `22.17.1` or later\n- Upgrade Node.js 24.x to `24.4.1` or later","status":"open","published_at":"2025-07-15T00:00:00+00:00","first_seen_at":"2026-10-23T19:13:00+00:00","triaged_at":"2026-10-25T05:39:27+00:00","updated_at":"2026-10-25T05:39:27+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-10-25T05:39:27Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Node.js 20.x to `20.19.4` or later\n- Upgrade Node.js 22.x to `22.17.1` or later\n- Upgrade Node.js 24.x to `24.4.1` or later","reach":"network","title":"Node.js: Windows device names and V8 hashing flaws allow path bypass and HashDoS","impact":"medium","summary":"Two issues in Node.js affect the 20.x, 22.x and 24.x release lines. A Windows device-name flaw (CON, PRN, AUX) can bypass path traversal protection in path.normalize() and path.join, and a V8 string hashing regression in 24.x re-enables hash collision denial of service.","category":"runtime","nicknames":[],"who_cares":["node.js","windows","self-hosted","backend"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Attacker bypasses path checks or degrades service through hash collisions","analyst_note":"Sources do not say whether the path flaw needs attacker-controlled input or the exact exploit conditions; check https://nodejs.org/en/blog/vulnerability/july-2025-security-releases and the CVE-2025-27210 and CVE-2025-27209 entries.","how_to_check":"- Run `node --version` and compare against the fixed versions `20.19.4`, `22.17.1` and `24.4.1`\n- Check whether the application passes user-controlled paths to `path.join` or `path.normalize` on Windows\n- For HashDoS, check whether an attacker can control strings that the application hashes on `24.x` releases","needs_analyst":true,"not_affected_if":["end-of-life-not-applicable"],"who_is_affected":"Windows deployments are exposed to the path traversal flaw when user input reaches path.join or path.normalize, and Node.js 24.x deployments are exposed to the HashDoS flaw when attacker-controlled strings are hashed. Teams running only Linux or with no user-controlled paths or strings face lower risk but should still upgrade, since the sources say all users in active release lines are affected.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000818,"input_tokens":4433,"output_tokens":749,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2025':146C,157C,214C '-23084':158C '-27209':215C '-27210':147C '/en/security/':486C '/forum/#!forum/nodejs-sec':522C '/nodejs/node/blob/master/security.md':495C '1':400C,414C '13':550C '14':557C '15':4A,97C,107C,365C,469C '2':371C,386C '20':33B,124C,189C,355C,405C '2025':5A,12A,98C,108C,366C,470C,558C '2026':551C '22':35B,122C,191C,353C,391C '24':38B,67B,120C,193C,313C,351C,377C 'activ':186C,310C 'address':370C 'affect':31B,162C,173C,182C,299C,306C,431C 'alway':430C 'announc':512C 'announcement-on':511C 'api':178C 'attack':243C,258C 'aux':50B,138C,170C 'avail':87C,113C,117C,462C 'backend':19B 'bypass':52B,139C 'chang':225C 'classifi':275C 'collis':73B,256C,261C 'commerci':77C 'comput':230C 'con':48B,136C,167C 'consid':284C 'contact':471C 'control':246C 'current':476C 'cve':145C,156C,213C 'date':449C,527C 'denial':74B 'detail':334C 'devic':45B,134C,164C 'device-nam':44B 'download':331C 'due':287C 'ecosystem':91C 'edg':319C 'enabl':71B 'end':425C 'end-of-lif':424C 'ensur':438C 'even':262C 'fix':151C,208C,329C 'flaw':47B 'follow':131C,488C 'found':482C 'futur':473C 'generat':253C,260C 'github':545C 'github.com':494C 'github.com/nodejs/node/blob/master/security.md':493C 'groups.google.com':521C 'groups.google.com/forum/#!forum/nodejs-sec':520C 'hash':64B,72B,228C,251C,255C,267C 'hash-se':266C 'hashdo':210C,239C 'high':148C,216C,372C,387C,401C,415C 'host':25B 'identifi':154C 'impact':179C,291C,303C,375C 'implement':234C 'import':420C 'incomplet':150C 'introduc':237C 'issu':28B,132C,374C,389C,403C,417C 'januari':549C 'juli':3A,96C,106C,364C,468C 'july':11A 'know':264C 'life':427C 'like':166C 'line':41B,128C,188C,312C,358C,380C,394C,408C 'list':518C 'low':509C 'low-volum':508C 'lts':84C 'mail':517C 'maintain':541C 'mainten':83C 'mani':254C 'may':556C 'name':46B,135C,165C 'new':347C 'next':554C 'node':16A,17A,18A,20B 'node.js':1A,21B,30B,103C,126C,160C,222C,282C,300C,335C,337C,339C,343C,382C,396C,410C,477C,504C,537C 'nodej':515C,544C 'nodejs':10A 'nodejs-sec':514C 'nodejs.org':485C 'nodejs.org/en/security/':484C 'note':422C 'oblivionsag':198C 'occur':436C 'one':286C 'openj':90C 'order':368C 'organ':546C 'outlin':452C,491C 'partner':94C 'past':81C 'path':53B,140C 'path.join':59B,177C 'path.normalize':57B,144C 'phase':85C 'pleas':443C,487C 'polici':479C 'potenti':290C 'previous':547C 'prn':49B,137C,168C 'process':490C 'program':93C 'project':104C,283C,344C,540C 'protect':55B,142C 'rafaelgss':206C 'rapidhash':232C 're':70B,236C 're-en':69B 're-introduc':235C 'real':294C 'real-world':293C 'regress':65B 'relat':534C 'releas':7A,40B,100C,110C,112C,127C,187C,219C,311C,333C,346C,357C,379C,393C,407C,435C,455C,457C,459C,535C,553C,560C 'releases':15A 'report':200C,321C,500C 'runtim':22B 'scenario':296C 'schedul':456C 'sec':516C 'secur':6A,99C,109C,111C,279C,434C,442C,478C,529C,533C,552C,559C 'security':14A 'security-rel':532C 'security-releases':13A 'seed':268C 'self':24B 'self-host':23B 'servic':76B 'sever':373C,388C,402C,416C 'sharp':318C 'short':361C,465C 'specif':161C 'stay':524C 'string':63B,227C,248C 'subscrib':505C 'summari':341C 'support':78C 'sustain':92C 'system':440C 'targo':327C 'team':272C 'thank':195C,204C,315C,325C 'time':458C 'tnjp':101C 'travers':54B,141C 'tuesday':2A,95C,105C,363C,467C,548C 'two':27B 'up-to-d':446C 'updat':114C,474C 'use':220C,231C,444C 'user':175C,184C,302C,308C 'v20.19.4':336C 'v22.17.1':338C 'v24.0.0':223C 'v24.4.1':340C 'v24.x':301C 'v8':62B,212C,218C,271C 'version':80C,348C,428C,450C 'vnd':9A 'vnd-nodejs-july':8A 'volum':510C 'vulner':172C,181C,202C,240C,280C,298C,305C,323C,384C,398C,412C,502C,530C 'wednesday':555C 'window':26B,43B,133C,163C,174C 'wish':498C 'without':263C 'world':295C 'x':34B,36B,39B,68B,121C,123C,125C,190C,192C,194C,314C,352C,354C,356C,378C,392C,406C","nicknames":[],"mitigations":[],"who_affected":"Windows deployments are exposed to the path traversal flaw when user input reaches path.join or path.normalize, and Node.js 24.x deployments are exposed to the HashDoS flaw when attacker-controlled strings are hashed. Teams running only Linux or with no user-controlled paths or strings face lower risk but should still upgrade, since the sources say all users in active release lines are affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2025-07-15T00:00:00+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nodejs","external_id":"july-2025-security-releases","url":"https://nodejs.org/en/blog/vulnerability/july-2025-security-releases","severity":"high","published_at":"2025-07-15T00:00:00+00:00","modified_at":null,"first_seen_at":"2026-10-23T19:13:00+00:00","fetched_at":"2026-10-25T21:27:12+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"}