{"id":4371,"date":"2026-10-26T15:25:47","date_gmt":"2026-10-26T06:25:47","guid":{"rendered":"https:\/\/sparrow.im\/en\/?post_type=news&#038;p=4371"},"modified":"2026-10-26T15:25:47","modified_gmt":"2026-10-26T06:25:47","slug":"node-js-security-vulnerabilitynode2shell-notice-cve-2026-111497","status":"publish","type":"news","link":"https:\/\/sparrow.im\/en\/news\/node-js-security-vulnerabilitynode2shell-notice-cve-2026-111497\/","title":{"rendered":"Node.js Security Vulnerability(Node2Shell) Notice (CVE-2026-111497)"},"content":{"rendered":"<p dir=\"ltr\">Hello, this is Sparrow.<\/p>\n<p dir=\"ltr\">A security vulnerability (CVE-2026-111497) has recently been disclosed in Node.js that may lead to denial of service, disclosure of information in process memory, or remote code execution (RCE).<\/p>\n<p dir=\"ltr\">Known as \u201cNode2Shell,\u201d this is an out-of-bounds write vulnerability that occurs when the Brotli library bundled with Node.js decompresses malformed compressed data and writes beyond the bounds of its internal buffer.<\/p>\n<p dir=\"ltr\">Exploitation of this vulnerability may result in denial of service, in-memory information disclosure, and remote code execution. Prompt inspection of affected versions and application of security updates are strongly recommended.<\/p>\n<h2><span style=\"color: #008000;font-size: 18pt\"><strong>\u25a0 Overview<\/strong><\/span><\/h2>\n<ul dir=\"ltr\">\n<li><strong>CVE ID<\/strong>: CVE-2026-111497<\/li>\n<li><strong>Severity<\/strong>: HIGH \u2013 official Node.js rating. \u201cBrotli decoder out-of-bounds write permits remote code execution\u201d<\/li>\n<li><strong>Key risks<\/strong>: Denial of service, disclosure of information in process memory, and remote code execution (RCE)<\/li>\n<li><strong>Affected versions and patched versions\n<p><\/strong><\/p>\n<div>\n<table style=\"width: 81.6804%;border-collapse: collapse;text-align: center;height: 96px\">\n<thead>\n<tr style=\"background-color: #f5f5f5\">\n<th style=\"border: 1px solid #dddddd;padding: 12px;background-color: #f5f5f5;height: 24px;width: 23.097%\">Product Name<\/th>\n<th style=\"border: 1px solid #dddddd;padding: 12px;background-color: #f5f5f5;height: 24px;width: 26.1863%\">Affected Versions<\/th>\n<th style=\"border: 1px solid #dddddd;padding: 12px;background-color: #f5f5f5;height: 24px;width: 31.411%\">Patched Versions<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #ffffff\">\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 23.097%\">Node.js<\/td>\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 26.1863%\">Below 22.23.4<\/td>\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 31.411%\">22.23.4 or Later<\/td>\n<\/tr>\n<tr style=\"background-color: #ffffff\">\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 23.097%\">Node.js<\/td>\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 26.1863%\">Below 24.22.1<\/td>\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 31.411%\">24.22.1 or Later<\/td>\n<\/tr>\n<tr style=\"background-color: #ffffff\">\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 23.097%\">Node.js<\/td>\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 26.1863%\">Below 26.12.1<\/td>\n<td style=\"border: 1px solid #dddddd;padding: 12px;background-color: #ffffff;height: 24px;width: 31.411%\">26.12.1 or Later<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u203b Versions that have reached end of life (Node.js 20.x and earlier, as well as 23.x, 25.x, etc.) do not receive security updates. We recommend upgrading to a supported version.<\/p>\n<\/div>\n<\/li>\n<\/ul>\n<h2><span style=\"color: #008000;font-size: 18pt\"><strong>\u25a0 Impact and Attack Conditions<\/strong><\/span><\/h2>\n<p dir=\"ltr\">This vulnerability occurs when the Brotli library bundled with Node.js writes data beyond the allowed range of its internal buffer while decompressing malformed compressed data.<\/p>\n<p dir=\"ltr\">If an attacker delivers crafted Brotli-compressed data to an application, and the application processes it using the vulnerable decompression function, process memory corruption may result in denial of service, remote code execution, and other damage.<\/p>\n<p dir=\"ltr\">Actual exploitability therefore depends on whether the application or the libraries it uses have a path through which externally supplied Brotli-compressed data is decompressed. The following processing paths should be reviewed:<\/p>\n<ul dir=\"ltr\">\n<li>Handling Brotli-compressed HTTP request data<\/li>\n<li>Automatically decompressing compressed responses received from external servers<\/li>\n<li>Decompressing uploaded files or external data using Brotli<\/li>\n<\/ul>\n<p dir=\"ltr\">Related functions include brotliDecompress(), brotliDecompressSync(), and createBrotliDecompress() in the node:zlib module.<br \/>\nEven if the application does not call these functions directly, middleware or HTTP client libraries may use them internally, so these should be checked as well.<\/p>\n<h2><span style=\"color: #008000;font-size: 18pt\"><strong>\u25a0 How to Check for the Vulnerability<\/strong><\/span><\/h2>\n<div id=\"x_Signature\">\n<div>\n<p dir=\"ltr\">As this vulnerability resides in the native Brotli library bundled with Node.js, you need to verify the Node.js version actually used by your service and whether the security patch has been applied.<\/p>\n<\/div>\n<\/div>\n<h3 class=\"x_elementToProof\"><span style=\"font-size: 14pt\"><strong>\u2460 Check the Node.js Version<\/strong><\/span><\/h3>\n<p>Open a command prompt or terminal on Windows or Linux and run the following command.<\/p>\n<p><strong>&#8211;\u00a0 Command<\/strong><\/p>\n<pre style=\"background-color: #f5f5f5;padding: 15px;border-radius: 4px\"><code>node -v<\/code><\/pre>\n<p><strong>&#8211;\u00a0 Example Output<\/strong><\/p>\n<pre style=\"background-color: #f5f5f5;padding: 15px;border-radius: 4px\"><code>v22.23.3<\/code><\/pre>\n<p>This output indicates that Node.js 22.23.3 is installed. Since this is earlier than the fixed version 22.23.4, a security update is required.<\/p>\n<h3><span style=\"font-size: 14pt\"><strong>\u2461 Check the location of the Node.js executable<\/strong><\/span><\/h3>\n<p><strong>&#8211;\u00a0 Windows<\/strong><\/p>\n<pre style=\"background-color: #f5f5f5;padding: 15px;border-radius: 4px\"><code>where.exe node<\/code><\/pre>\n<p><strong>&#8211;\u00a0 Linux<\/strong><\/p>\n<pre style=\"background-color: #f5f5f5;padding: 15px;border-radius: 4px\"><code>command -v node<\/code><\/pre>\n<p dir=\"ltr\">The path of the Node.js executable used in the current shell can also be checked with the following command.<\/p>\n<pre style=\"background-color: #f5f5f5;padding: 15px;border-radius: 4px\"><code>node -p \"process.execPath\"<\/code><\/pre>\n<p dir=\"ltr\">Note that the commands above only identify the Node.js used in the current shell. Your actual service may be using a Node.js instance from a separate installation path, a version manager, a service account, or inside a container.<\/p>\n<p dir=\"ltr\">Therefore, the service\u2019s execution configuration and the version inside the container must be verified separately. If necessary, <code>process.version<\/code>\u00a0and <code>process.execPath<\/code> can be checked from within the actual application process via internal diagnostic logs.<\/p>\n<h3><span style=\"font-size: 14pt\"><strong>\u2462 Check Brotli Decompression Paths<\/strong><\/span><\/h3>\n<p dir=\"ltr\">Verify whether the application and the libraries it uses make use of Brotli decompression, and whether external input can reach that functionality. Version checks determine whether a patch is needed, while decompression path review determines whether the service is actually exposed.<\/p>\n<h2><span style=\"font-size: 18pt;color: #008000\"><strong>\u25a0 Remediations<\/strong><\/span><\/h2>\n<p dir=\"ltr\"><span style=\"font-size: 14pt\"><strong>\u2714\ufe0f Operating environment review<\/strong><\/span><\/p>\n<ul dir=\"ltr\">\n<li>Check whether Node.js is installed, which version is in use, and whether it is a vulnerable version<\/li>\n<li>Check whether the application and its libraries use Brotli decompression<\/li>\n<\/ul>\n<p dir=\"ltr\"><span style=\"font-size: 14pt\"><strong>\u2714\ufe0f Apply security patches (*see the table above)<\/strong><\/span><\/p>\n<ul dir=\"ltr\">\n<li>For Node.js 22.x, 24.x, and 26.x, apply the security update corresponding to each version<\/li>\n<li>For end-of-life Node.js versions, upgrade to a supported version that includes the security patch<\/li>\n<li>After updating, restart the service and verify that the patched version is applied in the actual runtime environment<\/li>\n<li>In container environments, rebuild or replace the image with one that includes the fixed Node.js, then redeploy<\/li>\n<\/ul>\n<p dir=\"ltr\"><span style=\"font-size: 14pt\"><strong>\u2714\ufe0f If immediate updating is not possible<\/strong><\/span><\/p>\n<p dir=\"ltr\">If the security patch cannot be applied immediately, we recommend the following temporary measures to prevent attacker-supplied Brotli data from reaching the vulnerable decompression function.<\/p>\n<p dir=\"ltr\"><strong>\u2013 If Brotli-compressed requests are handled:<\/strong> Block Brotli-compressed requests before the decompression stage, or temporarily disable the related functionality<br \/>\n<strong>\u2013 If external HTTP responses are decompressed:<\/strong> Consider disabling automatic Brotli decompression in the client library<br \/>\n<strong>\u2013 If external files or data are processed:<\/strong> Restrict Brotli decompression paths or temporarily suspend the related processing<\/p>\n<p dir=\"ltr\">\u203b Blocking request bodies alone may leave external server response or file processing paths exposed, so measures should be taken based on the actual decompression paths.<\/p>\n<p dir=\"ltr\">\u203b Access restrictions via firewalls and WAFs are supplementary measures only; applying the security patch is required for a fundamental fix.<\/p>\n<p dir=\"ltr\"><strong>\u203b If a Linux distribution or a separate vendor has backported the security fix, the patch may already be applied even if the Node.js version number is lower. Check the vendor\u2019s security advisories and package change history as well.<\/strong><\/p>\n<h2><span style=\"color: #008000;font-size: 18pt\"><strong>\u25a0 Notes on Applying the Security Patch<\/strong><\/span><\/h2>\n<p dir=\"ltr\">This vulnerability stems from a memory handling flaw in the Brotli decoder bundled with Node.js. It cannot be resolved by adding input validation to the application or by running a standard npm update alone.<\/p>\n<p dir=\"ltr\">Depending on your environment, the following actions are required:<\/p>\n<ul dir=\"ltr\">\n<li><strong>Environments using official Node.js distributions:<\/strong> Update to a Node.js runtime binary that includes the security patch<\/li>\n<li><strong>Environments that build Node.js from source:<\/strong> Rebuild and deploy using source code that includes the fix<\/li>\n<li><strong>Products or executables that bundle their own Node.js runtime:<\/strong> Check for and apply the security update provided by the product vendor<\/li>\n<\/ul>\n<p dir=\"ltr\">In addition, since Brotli version information alone is not sufficient to accurately determine whether the patch has been applied, <strong>verification should be based on the official Node.js security release information or the vendor\u2019s patch history.<\/strong><\/p>\n<p dir=\"ltr\">Sparrow SCA, our open-source analysis and management tool, automatically detects the Node2Shell (CVE-2026-111497) vulnerability for which immediate updates are recommended.<\/p>\n<p dir=\"ltr\">Sparrow Co., Ltd. is committed to actively supporting you in minimizing the impact of this vulnerability and maintaining stable service operations.<\/p>\n<p dir=\"ltr\">If you have any questions, please feel free to contact our customer service center at any time.<\/p>\n<p dir=\"ltr\"><strong>(Contact) Technical Support \/ Incidents: +82-2-6263-7411<\/strong><\/p>\n","protected":false},"featured_media":0,"template":"","class_list":["post-4371","news","type-news","status-publish","hentry"],"acf":[],"permalink_manager":null,"_links":{"self":[{"href":"https:\/\/sparrow.im\/en\/wp-json\/wp\/v2\/news\/4371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sparrow.im\/en\/wp-json\/wp\/v2\/news"}],"about":[{"href":"https:\/\/sparrow.im\/en\/wp-json\/wp\/v2\/types\/news"}],"wp:attachment":[{"href":"https:\/\/sparrow.im\/en\/wp-json\/wp\/v2\/media?parent=4371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}