{"id":8154,"date":"2026-10-24T20:24:45","date_gmt":"2026-10-24T20:24:45","guid":{"rendered":"https:\/\/lockitsoft.com\/?p=8154"},"modified":"2026-10-24T20:24:45","modified_gmt":"2026-10-24T20:24:45","slug":"critical-memory-corruption-vulnerability-in-google-brotli-decoder-threatens-runtimes-proxies-and-python-ecosystem-worldwide","status":"publish","type":"post","link":"https:\/\/lockitsoft.com\/?p=8154","title":{"rendered":"Critical Memory-Corruption Vulnerability in Google Brotli Decoder Threatens Runtimes, Proxies, and Python Ecosystem Worldwide"},"content":{"rendered":"<p>A severe memory-corruption vulnerability residing within Google\u2019s widely adopted Brotli compression and decompression library has exposed a vast array of modern software, ranging from JavaScript runtimes and API gateways to Python libraries and containerized development tools. Tracked officially under the identifier CVE-2026-111497, the flaw presents a critical risk, enabling malicious actors to trigger buffer overflows, compromise program memory stability, and, under specific operational conditions, achieve remote code execution (RCE). <\/p>\n<p>The vulnerability stems from the core C implementation responsible for unpacking Brotli-compressed data streams. Because numerous software ecosystems statically link or bundle their own localized copies of Google\u2019s decoding algorithms rather than relying on a centralized system library, the remediation process has required an exhaustive, product-by-product coordinated update campaign. The discovery underscores the inherent vulnerabilities of modern software supply chains, where a single foundational utility can introduce systemic risk across disparate technical stacks.<\/p>\n<p>Technical Anatomy of CVE-2026-111497<\/p>\n<p>At the heart of the issue is a classic memory-safety deficiency within the C library code that handles the decoding of Brotli compression. When an application processes a maliciously crafted, highly structured Brotli-compressed data stream, the decoder fails to properly bound incoming data lengths relative to allocated memory buffers. Consequently, the input can overwrite data beyond the designated boundaries of the buffer, leading directly to memory corruption.<\/p>\n<p>Depending on the architecture of the host application and the surrounding memory protection mechanisms, this corruption can manifest in several ways:<\/p>\n<ul>\n<li>Application crashes resulting in immediate Denial of Service (DoS).<\/li>\n<li>Information leaks via memory exposure.<\/li>\n<li>Arbitrary code execution, allowing an attacker to hijack the control flow of the host process.<\/li>\n<\/ul>\n<p>Crucially, the threat vector operates bi-directionally. As noted by security analysts and initial reporters, the vulnerability can be weaponized against both servers and clients. An unpatched server accepting compressed request bodies from a client can be systematically compromised by a malicious visitor. Conversely, an unpatched client\u2014such as an automated scraping script, a command-line tool utilizing utility parameters like curl &#8211;compressed, or an internal microservice fetching remote payloads\u2014can be taken over by a malicious web server responding with a crafted payload.<\/p>\n<p>A Timeline of Discovery and Coordinated Disclosure<\/p>\n<figure class=\"article-inline-figure\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgxIIerJT3LOMCGn3nXAnmhaHzJlJnVJCso1COluq8t3WuF4IpNARa_Asl5nEhRUDTEcR89kwzo5vGmP5IyNbj1ncdaCpkhqcHUODHAd3khanaE-7N8Vb0NyEJkmPmNkhSpJtLCLgi9srDRhZLtM5n8UDI58F797ZJaVzC7JzjPLfca4NpxZr_7tCX8RIk\/s1700-nu-rw-lo-l85-e365\/br-nodejs.jpg\" alt=\"Brotli Decoder Flaw Behind Node.js RCE Also Affects Bun, Python and Other Widely Used Software\" class=\"article-inline-img\" loading=\"lazy\" \/><\/figure>\n<p>The trajectory of CVE-2026-111497 features an unusual developmental timeline that highlights the complex nature of open-source maintenance and vulnerability research.<\/p>\n<ul>\n<li><strong>February 27:<\/strong> A code patch that inadvertently closed the underlying vulnerability was committed to the official Google Brotli source repository. At this juncture, the security implications of the change were entirely unrecognized by maintainers, and no immediate security advisory or version bump accompanied the commit.<\/li>\n<li><strong>October 21:<\/strong> OpenAI\u2019s specialized Codex Security team\u2014specifically researchers Khai Tran and Sylvie Mayer\u2014independently discovered the flaw and recognized its profound exploitation potential. They responsibly reported the vulnerability to Google and affected downstream maintainers.<\/li>\n<li><strong>October 21 (Immediate Response):<\/strong> Node.js and Google simultaneously published emergency security advisories and updated packages. Concurrently, other major projects rushed to integrate the fixed C library versions into their respective release cycles.<\/li>\n<li><strong>October 23:<\/strong> Cybersecurity infrastructure authorities, including the Cybersecurity and Infrastructure Security Agency (CISA) and various Linux distribution maintainers (such as Debian), began issuing formal advisories and packaging updates, while initial telemetry reported zero in-the-wild exploitation attempts.<\/li>\n<\/ul>\n<p>Comprehensive Scope of Affected Software<\/p>\n<p>Because Brotli is utilized globally to compress Hypertext Transfer Protocol (HTTP) traffic, assets, and data files, the vulnerable C decoder is embedded within a wide variety of software products. The issue does not stem from flaws in the host languages themselves, but rather from the third-party dependencies and native modules they incorporate.<\/p>\n<p>The following matrix details the primary affected software lines, their vulnerable versions, and the corresponding remediations:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Product<\/th>\n<th style=\"text-align: left\">Vulnerable Versions<\/th>\n<th style=\"text-align: left\">Fixed Version<\/th>\n<th style=\"text-align: left\">Exposure Condition<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">Google Brotli (C Library)<\/td>\n<td style=\"text-align: left\">1.0.3 to 1.2.0<\/td>\n<td style=\"text-align: left\">1.0.10, 1.1.1, 1.2.1<\/td>\n<td style=\"text-align: left\">Processing untrusted Brotli streams<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Node.js<\/td>\n<td style=\"text-align: left\">22.x, 24.x, 26.x (pre-patch); 20.x+ (EOL)<\/td>\n<td style=\"text-align: left\">22.23.4, 24.22.1, 26.12.1<\/td>\n<td style=\"text-align: left\">Using built-in <code>fetch()<\/code> or body parsers (<code>Express 5<\/code>, <code>body-parser 2<\/code>)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Bun Runtime<\/td>\n<td style=\"text-align: left\">1.4.3 and earlier<\/td>\n<td style=\"text-align: left\">1.4.4<\/td>\n<td style=\"text-align: left\">Utilizing <code>fetch()<\/code> or <code>node:zlib<\/code> integrations<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Envoy Proxy<\/td>\n<td style=\"text-align: left\">Specific builds (1.39.2, 1.38.5, etc.)<\/td>\n<td style=\"text-align: left\">1.40.0, 1.39.3, 1.38.6, etc.<\/td>\n<td style=\"text-align: left\">Explicit configuration of the Brotli decompressor<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Istio Service Mesh<\/td>\n<td style=\"text-align: left\">1.31.0\u20131.31.1, 1.30.0\u20131.30.5, etc.<\/td>\n<td style=\"text-align: left\">1.31.2, 1.30.6, 1.29.9<\/td>\n<td style=\"text-align: left\">When Brotli decompression is actively enabled<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Python <code>Brotli<\/code><\/td>\n<td style=\"text-align: left\">1.2.0 and earlier<\/td>\n<td style=\"text-align: left\">1.2.1<\/td>\n<td style=\"text-align: left\">Package installed alongside HTTP clients (<code>requests<\/code>, <code>httpx<\/code>, etc.)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Python <code>brotlicffi<\/code><\/td>\n<td style=\"text-align: left\">1.2.0.x and earlier<\/td>\n<td style=\"text-align: left\">1.2.1.0<\/td>\n<td style=\"text-align: left\">Package installed alongside HTTP clients<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">cdxgen<\/td>\n<td style=\"text-align: left\">13.4.0, 12.8.8 and earlier<\/td>\n<td style=\"text-align: left\">13.5.0, 12.8.9<\/td>\n<td style=\"text-align: left\">Standalone binaries scanning untrusted inputs<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Vulnerability Mechanics Across Ecosystems<\/p>\n<p>Understanding how applications trigger this flaw requires looking at how network data is handled. An application is inherently safe from CVE-2026-111497 unless it explicitly or implicitly unpacks Brotli-compressed data originating from untrusted sources.<\/p>\n<p>In JavaScript runtimes like Node.js and Bun, exposure surfaces when native utilities such as the global <code>fetch()<\/code> function consume an HTTP response bearing the <code>Content-Encoding: br<\/code> header. Similarly, modern server-side middleware frameworks\u2014including Express 5 and body-parser 2\u2014automatically process incoming request payloads. If configured to parse compressed client uploads, these middleware components pass the stream directly to the vulnerable decoder. Traditional, low-level Node.js HTTP servers that do not parse request bodies natively remain shielded unless auxiliary decoding logic is implemented.<\/p>\n<p>In the Python ecosystem, the risk vector is notably insidious. Simply having the <code>brotli<\/code> or <code>brotlicffi<\/code> packages installed in an active virtual environment creates exposure. Popular HTTP connection libraries\u2014such as <code>requests<\/code>, <code>urllib3<\/code>, <code>httpx<\/code>, and <code>aiohttp<\/code>\u2014automatically detect and decode Brotli-compressed responses by default. Consequently, a Python application can become vulnerable without its developers ever explicitly importing or invoking the Brotli library within their codebase.<\/p>\n<figure class=\"article-inline-figure\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhyu3ExJi2vbls3Z9aCvSrcqvhtsSOqXMOIxESfkx7uurTZb7rN3a2eQxwzgZ-j1ioplnCvQFTCYr8w3IUlYx0FrQzDaqQsBsUi885UYvHF3MjAObvO6ptvKBeX6zhQvzAi_KjmVno6a8bYI3Wozti5mHavNFGrekT_gC6JDVY8G3N-aV44-OZJGX9rlLng\/s728-nu-rw-lo-l85-e365\/nudge-1-d.png\" alt=\"Brotli Decoder Flaw Behind Node.js RCE Also Affects Bun, Python and Other Widely Used Software\" class=\"article-inline-img\" loading=\"lazy\" \/><\/figure>\n<p>Severity Assessments and Real-World Exploitation Status<\/p>\n<p>Industry stakeholders have graded the severity of CVE-2026-111497 differently based on their specific risk evaluation models, though all acknowledge its serious nature:<\/p>\n<ul>\n<li><strong>Google:<\/strong> Assigned a CVSS v4.0 score of <strong>9.2 (Critical)<\/strong>, reflecting the potential for arbitrary code execution.<\/li>\n<li><strong>Red Hat:<\/strong> Rated the vulnerability as <strong>8.1 (Important)<\/strong>, citing the complexity required to weaponize memory corruption reliably across diverse kernel architectures.<\/li>\n<li><strong>Node.js Security Team:<\/strong> Classified the risk as <strong>High<\/strong>, pushing out rapid backports across active maintenance lines.<\/li>\n<\/ul>\n<p>Proof-of-concept testing conducted by Imperva\u2019s Red Team\u2014who internally designated their research vector &quot;Node2Shell&quot;\u2014demonstrated that arbitrary code execution could be achieved against an unpatched build of Node.js 24.22.0 running on Linux for ARM64 architectures. The attack vector was successfully validated using both forged <code>fetch()<\/code> server responses and malicious Express request payloads. However, researchers noted that successful exploitation required multiple attempts and precise memory alignment, limiting the immediate threat of widespread, automated exploitation scripts.<\/p>\n<p>As of late October, official monitoring agencies, including CISA and threat intelligence teams at major cloud providers, reported zero instances of active, in-the-wild exploitation. Automated scanning tools and weaponized exploits were largely absent from public repositories immediately following disclosure, granting system administrators a crucial window to apply patches.<\/p>\n<p>Mitigation Strategies and Recommended Remediation<\/p>\n<p>Mitigating CVE-2026-111497 requires comprehensive updates across software dependencies, operating system packages, and container images. Because running processes retain loaded libraries in memory, simply updating files on disk is insufficient; services must be fully restarted, and containerized deployments must be completely rebuilt and redeployed.<\/p>\n<ol>\n<li><strong>Direct Package Upgrades:<\/strong> Administrators must update all vulnerable runtime environments (Node.js, Bun), service meshes (Envoy, Istio), and language-specific packages to their respective patched versions as outlined in the advisory matrix.<\/li>\n<li><strong>Dependency Auditing:<\/strong> Python developers should manually inspect their dependency trees using tools like <code>pip list<\/code> or updated vulnerability scanners, as automated dependency tracking databases (such as GitHub&#8217;s Dependabot) experienced brief delays in indexing PyPI-specific advisories linked to the primary C library CVE.<\/li>\n<li><strong>Network Boundary Defenses:<\/strong> While Web Application Firewalls (WAFs) operated by providers like Vercel deployed emergency rule sets upon disclosure, security providers have cautioned that perimeter firewalls cannot inspect or sanitize responses fetched dynamically by backend functions from external servers. Therefore, runtime patching remains the sole comprehensive defense.<\/li>\n<li><strong>Disabling Decompression:<\/strong> For environments where immediate updates are impossible, organizations should evaluate whether Brotli decompression can be temporarily disabled within proxy configurations or HTTP client setups to neutralize the attack surface entirely.<\/li>\n<\/ol>\n<!-- RatingBintangAjaib -->","protected":false},"excerpt":{"rendered":"<p>A severe memory-corruption vulnerability residing within Google\u2019s widely adopted Brotli compression and decompression library has exposed a vast array of modern software, ranging from JavaScript runtimes and API gateways to Python libraries and containerized development tools. Tracked officially under the identifier CVE-2026-111497, the flaw presents a critical risk, enabling malicious actors to trigger buffer overflows, &hellip;<\/p>\n","protected":false},"author":18,"featured_media":8153,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108],"tags":[4698,547,742,109,4699,548,285,154,111,3832,688,4700,110,1375,995,998],"class_list":["post-8154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cybersecurity-protection","tag-brotli","tag-corruption","tag-critical","tag-cybersecurity","tag-decoder","tag-ecosystem","tag-google","tag-memory","tag-privacy","tag-proxies","tag-python","tag-runtimes","tag-security","tag-threatens","tag-vulnerability","tag-worldwide"],"_links":{"self":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8154"}],"version-history":[{"count":0,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8154\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/media\/8153"}],"wp:attachment":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}