{"id":"VND-nodejs-february-2023-security-releases","kind":"vulnerability","aliases":[],"related":["CVE-2023-23918","CVE-2023-23919","CVE-2023-23920","CVE-2023-23936","CVE-2023-24807"],"title":"Node.js: Thursday February 16 2023 Security Releases","description":"Commercial support for versions past the Maintenance LTS phase is available through our OpenJS Ecosystem Sustainability Program partners Thursday February 16 2023 Security Releases MD Michael Dawson Thursday February 16 2023 Security Releases (Update 16-February-2023) Security releases available\nUpdates are now available for the v19.x, v18.x, v16.x, and v14.x Node.js release lines for the\nfollowing issues.\nOpenSSL Security updates\nThis security release includes OpenSSL security updates as outlined in the recent\nOpenSSL security advisory .\nImpacts:\nAll versions of the 19.x, 18.x, 16.x, and 14.x release lines.\nNode.js Permissions policies can be bypassed via process.mainModule (High) ( CVE-2023-23918 )\nIt was possible to bypass Permissions and access non authorized modules by using process.mainModule.require(). This only affects users who had enabled the experimental permissions option with --experimental-policy .\nThank you, to @goums for reporting this vulnerability and thank you Rafael Gonzaga for fixing it.\nImpacts:\nAll versions of the 19.x, 18.x, 16.x, and 14.x release lines.\nNode.js OpenSSL error handling issues in nodejs crypto library (Medium) ( CVE-2023-23919 )\nIn some cases Node.js did does not clear the OpenSSL error stack after operations that may set it. This may lead to false positive errors during subsequent cryptographic operations that happen to be on the same thread. This in turn could be used to cause a denial of service.\nThank you, to Morgan Jones and Ryan Dorrity from Viasat Secure Mobile for reporting and discovering this vulnerability and thank you Rafael Gonzaga for fixing it.\nImpacts:\nVersions of &lt; 19.2.0 and lower of the 19.x release line and all versions of the 18.x, and 16.x release lines.\nFetch API in Node.js did not protect against CRLF injection in host headers (Medium) ( CVE-2023-23936 )\nThe fetch API in Node.js did not prevent\nCRLF injection in the &#x27;host&#x27; header potentially allowing attacks such as HTTP response splitting\nand HTTP header injection.\nThank you, to Zhipeng Zhang ( @timon8 ) for reporting this vulnerability and thank you Robert Nagy for fixing it.\nImpacts:\nAll versions of the 19.x, 18.x and 16.x release lines.\nRegular Expression Denial of Service in Headers in Node.js fetch API(Low) ( CVE-2023-24807 )\nThe Headers.set() and Headers.append() methods in the\nfetch API in Node.js were vulnerable to a Regular Expression Denial of Service (ReDoS) attacks.\nThank you, to Carter Snook for reporting this vulnerability and thank you Rich Trott for fixing it.\nImpacts:\nAll versions of the 19.x, 18.x, and 16.x release lines.\nNode.js insecure loading of ICU data through ICU_DATA environment variable (Low) ( CVE-2023-23920 )\nNode.js would search and potentially load ICU data when running with elevated privileges. Node.js\nwas modified to build with ICU_NO_USER_DATA_OVERRIDE to avoid this.\nThank you, to Ben Noordhuis for reporting this vulnerability and thank you Rafael Gonzaga for fixing it.\nImpacts:\nAll versions of the 19.x, 18.x, 16.x, and 14.x release lines.\nnpm update for Node.js 14\nThis security release also includes an npm update for Node.js 14 to address a number\nof CVEs which either do not affect Node.js or are low severity in the context of Node.js. You\ncan get more details for the individual CVEs in\nnodejs-dependency-vuln-assessments .\nImpacts:\nAll versions 14.x release lines.\nDownloads and release details\nThanks to Rafael Gonzaga and Richard Lau for their work on the releases.\nNode.js v14.21.3 (LTS)\nNode.js v16.19.1 (LTS)\nNode.js v18.14.1 (LTS)\nNode.js v19.6.1 (Current)\n(Update 14-February-2023) 2 Day delay in security releases\nThe Node.js project is delaying the planned security releases until Thursday\nFebruary 16 2023 due to the need for additional testing and validation.\n(Update 7-February-2023) Summary\nThe Node.js project will release new versions of the 14.x, 16.x, 18.x and 19.x\nreleases lines on or shortly after, Tuesday February 14 2023 in order to address:\n2 low severity issues.\n2 medium severity issues.\n1 high severity issues.\nOpenSSL security updates for which the highest vulnerability severity is high. You\ncan read more about this update in the\nOpenSSL security advisory .\nImpact\nThe 19.x release line of Node.js is vulnerable to 2 low severity issues, 2 medium severity issues and 1 high severity issue and the OpenSSL vulnerabilities.\nThe 18.x release line of Node.js is vulnerable to 2 low severity issues, 2 medium severity issues and 1 high severity issue and the OpenSSL vulnerabilities.\nThe 16.x release line of Node.js is vulnerable to 2 low severity issues, 2 medium severity issues, and 1 high severity issue and the OpenSSL vulnerabilities.\nThe 14.x release line of Node.js is vulnerable to 1 low severity issue, and 1 high severity issue and the OpenSSL vulnerabilities.\nRelease timing\nReleases will be available on, or shortly after, Tuesday February 14 2023.\nContact and future updates\nThe current Node.js security policy can be found at /security/. Please follow the process outlined in https://github.com/nodejs/node/security/policy 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 June 20 2023 Security Releases Next OpenSSL 3.0.7 update assessment","summary":"Node.js 14, 16, 18 and 19 receive a batch of fixes, the most serious being CVE-2023-23918, where process.mainModule.require() bypasses the experimental permissions policy and loads non-authorized modules. The release also covers OpenSSL updates, a CRLF injection in the fetch API host header, a ReDoS in fetch Headers, and an ICU data loading issue when running with elevated privileges.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"node","fixed":["14.21.3"],"affected":">= 14.0.0, < 14.21.3","ecosystem":"node"},{"name":"node","fixed":["16.19.1"],"affected":">= 16.0.0, < 16.19.1","ecosystem":"node"},{"name":"node","fixed":["18.14.1"],"affected":">= 18.0.0, < 18.14.1","ecosystem":"node"},{"name":"node","fixed":["19.6.1"],"affected":">= 19.0.0, < 19.6.1","ecosystem":"node"}],"ecosystems":["node"],"tags":["backend","node","nodejs","runtime","self-hosted"],"not_affected_if":["default-config","no-experimental-permissions"],"how_to_check":"- Run `node --version` and compare against the fixed releases: `14.21.3`, `16.19.1`, `18.14.1`, `19.6.1`.\n- Check whether the experimental permissions option (`--experimental-policy`) is enabled in startup scripts or deployment config; only that setup is affected by the permissions bypass.\n- Check whether applications use the fetch API with user-controlled host headers or call Headers.set()/Headers.append() on untrusted input.","fix":"- Upgrade Node.js to `14.21.3` (14.x), `16.19.1` (16.x), `18.14.1` (18.x) or `19.6.1` (19.x).\n- Rebuild and redeploy containers or images that bundle a Node.js binary, since the runtime is shipped with them.","status":"open","published_at":"2023-02-16T21:00:00+00:00","first_seen_at":"2026-10-23T19:13:00+00:00","triaged_at":"2026-10-25T05:41:41+00:00","updated_at":"2026-10-25T05:41:41+00:00","category":"runtime","confidence":0.8,"triage":{"at":"2026-10-25T05:41:41Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Node.js to `14.21.3` (14.x), `16.19.1` (16.x), `18.14.1` (18.x) or `19.6.1` (19.x).\n- Rebuild and redeploy containers or images that bundle a Node.js binary, since the runtime is shipped with them.","reach":"unknown","title":"Node.js: February 2023 security releases fix a high permissions bypass","impact":"high","summary":"Node.js 14, 16, 18 and 19 receive a batch of fixes, the most serious being CVE-2023-23918, where process.mainModule.require() bypasses the experimental permissions policy and loads non-authorized modules. The release also covers OpenSSL updates, a CRLF injection in the fetch API host header, a ReDoS in fetch Headers, and an ICU data loading issue when running with elevated privileges.","category":"runtime","nicknames":[],"who_cares":["node","self-hosted","backend","nodejs"],"confidence":0.8,"needs_auth":"unknown","worst_case":"Non-authorized modules load, enabling code execution or denial of service","analyst_note":"","how_to_check":"- Run `node --version` and compare against the fixed releases: `14.21.3`, `16.19.1`, `18.14.1`, `19.6.1`.\n- Check whether the experimental permissions option (`--experimental-policy`) is enabled in startup scripts or deployment config; only that setup is affected by the permissions bypass.\n- Check whether applications use the fetch API with user-controlled host headers or call Headers.set()/Headers.append() on untrusted input.","needs_analyst":false,"not_affected_if":["default-config","no-experimental-permissions"],"who_is_affected":"All release lines in the listed ranges are affected by at least one of the fixes, but the permissions bypass only matters where the experimental permissions option is enabled. The fetch header issues matter for applications that build outbound requests from untrusted input, and the ICU issue matters for setuid or otherwise elevated Node.js processes. Teams running current LTS releases with default configuration still need the upgrade for the OpenSSL and fetch fixes.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000931,"input_tokens":5456,"output_tokens":771,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2023':43B,125C,191C,265C,381C,454C,522C,675C,708C '-23918':44B,192C '-23919':266C '-23920':523C '-23936':382C '-24807':455C '14':28B,177C,250C,580C,588C,599C,639C,673C,719C,736C '16':4A,29B,109C,118C,123C,174C,247C,362C,437C,505C,577C,694C,721C '18':30B,172C,245C,359C,434C,502C,575C,723C '19':32B,170C,243C,350C,432C,500C,573C,726C '19.2.0':345C '2':676C,742C '2023':5A,12A,110C,119C,695C,737C '7':706C 'access':200C 'addit':701C 'address':601C,741C 'advisori':164C 'affect':209C,610C 'allow':398C 'also':60B,592C 'api':70B,367C,385C,451C,464C 'assess':635C 'attack':399C,477C 'author':56B,202C 'avail':99C,128C,132C 'avoid':549C 'backend':20B 'batch':35B 'ben':554C 'build':541C 'bypass':47B,186C,197C 'carter':481C 'case':269C 'caus':311C 'clear':274C 'commerci':89C 'context':618C 'could':307C 'cover':61B 'crlf':65B,374C,391C 'crypto':261C 'cryptograph':294C 'current':671C 'cve':42B,190C,264C,380C,453C,521C 'cves':605C,629C 'data':81B,514C,517C,531C,546C 'dawson':115C 'day':677C 'delay':678C,686C 'denial':313C,443C,473C 'depend':633C 'detail':625C,646C 'discov':331C 'dorriti':323C 'download':643C 'due':696C 'ecosystem':103C 'either':607C 'elev':87B,535C 'enabl':213C 'environ':518C 'error':256C,277C,291C 'experiment':49B,215C,220C 'experimental-polici':219C 'express':442C,472C 'fals':289C 'februari':3A,108C,117C,124C,674C,693C,707C,735C 'february':11A 'fetch':69B,76B,366C,384C,450C,463C 'fix':37B,236C,340C,425C,493C,566C 'follow':145C 'get':623C 'gonzaga':234C,338C,564C,650C 'goum':225C 'handl':257C 'happen':297C 'header':72B,77B,378C,396C,407C,447C 'headers.append':459C 'headers.set':457C 'high':189C 'host':26B,71B,377C,395C 'http':402C,406C 'icu':80B,513C,516C,530C,543C 'impact':165C,238C,342C,427C,495C,568C,636C 'includ':153C,593C 'individu':628C 'inject':66B,375C,392C,408C 'insecur':510C 'issu':83B,146C,258C 'jone':320C 'lau':653C 'lead':287C 'librari':262C 'line':142C,180C,253C,353C,365C,440C,508C,583C,642C,729C 'load':53B,82B,511C,529C 'low':452C,520C,614C,743C 'lower':347C 'lts':96C,662C,665C,668C 'mainten':95C 'may':282C,286C 'md':113C 'medium':263C,379C 'method':460C 'michael':114C 'mobil':327C 'modifi':539C 'modul':57B,203C 'morgan':319C 'nagi':423C 'need':699C 'new':715C 'node':16A,17A,18A,19A,21B 'node.js':1A,27B,140C,181C,254C,270C,369C,387C,449C,466C,509C,524C,537C,587C,598C,611C,620C,660C,663C,666C,669C,683C,711C 'nodej':22B,260C,632C 'nodejs':10A 'nodejs-dependency-vuln-assess':631C 'non':55B,201C 'non-author':54B 'noordhui':555C 'npm':584C,595C 'number':603C 'openj':102C 'openssl':62B,147C,154C,162C,255C,276C 'oper':280C,295C 'option':217C 'order':739C 'outlin':158C 'overrid':547C 'partner':106C 'past':93C 'permiss':50B,182C,198C,216C 'phase':97C 'plan':688C 'polici':51B,183C,221C 'posit':290C 'possibl':195C 'potenti':397C,528C 'prevent':390C 'privileg':88B,536C 'process.mainmodule':188C 'process.mainmodule.require':46B,206C 'program':105C 'project':684C,712C 'protect':372C 'rafael':233C,337C,563C,649C 'receiv':33B 'recent':161C 'redo':74B,476C 'regular':441C,471C 'releas':7A,59B,112C,121C,127C,141C,152C,179C,252C,352C,364C,439C,507C,582C,591C,641C,645C,659C,681C,690C,714C,728C 'releases':15A 'report':227C,329C,416C,484C,557C 'respons':403C 'rich':490C 'richard':652C 'robert':422C 'run':85B,533C 'runtim':23B 'ryan':322C 'search':526C 'secur':6A,111C,120C,126C,148C,151C,155C,163C,326C,590C,680C,689C 'security':14A 'security-releases':13A 'self':25B 'self-host':24B 'serious':40B 'servic':315C,445C,475C 'set':283C 'sever':615C,744C 'short':732C 'snook':482C 'split':404C 'stack':278C 'subsequ':293C 'summari':709C 'support':90C 'sustain':104C 'test':702C 'thank':222C,231C,316C,335C,409C,420C,478C,488C,551C,561C,647C 'thread':303C 'thursday':2A,107C,116C,692C 'timon8':414C 'trott':491C 'tuesday':734C 'turn':306C 'updat':63B,122C,129C,149C,156C,585C,596C,672C,705C 'use':205C,309C 'user':210C,545C 'v14.21.3':661C 'v14.x':139C 'v16.19.1':664C 'v16.x':137C 'v18.14.1':667C 'v18.x':136C 'v19.6.1':670C 'v19.x':135C 'valid':704C 'variabl':519C 'version':92C,167C,240C,343C,356C,429C,497C,570C,638C,716C 'via':187C 'viasat':325C 'vnd':9A 'vnd-nodejs-february':8A 'vuln':634C 'vulner':229C,333C,418C,468C,486C,559C 'work':656C 'would':525C 'x':171C,173C,175C,178C,244C,246C,248C,251C,351C,360C,363C,433C,435C,438C,501C,503C,506C,574C,576C,578C,581C,640C,720C,722C,724C,727C 'zhang':413C 'zhipeng':412C","nicknames":[],"mitigations":[],"who_affected":"All release lines in the listed ranges are affected by at least one of the fixes, but the permissions bypass only matters where the experimental permissions option is enabled. The fetch header issues matter for applications that build outbound requests from untrusted input, and the ICU issue matters for setuid or otherwise elevated Node.js processes. Teams running current LTS releases with default configuration still need the upgrade for the OpenSSL and fetch fixes.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2023-02-16T21:00:00+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nodejs","external_id":"february-2023-security-releases","url":"https://nodejs.org/en/blog/vulnerability/february-2023-security-releases","severity":"high","published_at":"2023-02-16T21: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"}